資料庫知識是每個開發人員必備的技能之一,但是真正花時間去了解的就比較少了,大部分都是視覺化工具,簡單的sql語句,在工作中基本上夠用了,但是如果沒有視覺化工具,你對自己有多少的信心呢?反正我是好多都記不住(乙個完整的建立表的sql我都寫不下來,嗚嗚嗚),這一系列部落格,就簡單介紹下我們傳統的sql語句怎麼寫(主要也是增進一下自己對資料庫sql語句的認知)。所有的展示直接在虛擬機器上進行了,安裝mysql的過程就不展示了(是不是比較懶,哈哈哈)
官方給的標準建立資料庫的sql語法:
create [if not exists] db_name
[create_specification] ...
create_specification:
[default] character set [=] charset_name
| [default] collate [=] collation_name
shcema和database是同義詞,都可以用來建立資料庫;如果db_name資料庫存在,你需要加上if not exists,不然會出錯,character set 指定資料庫編碼格式
我們先來建立資料庫(建立資料庫並指定編碼格式為utf8):
create database if not exists db_test default character set utf8;
官方語法太多,貼出部分,感興趣的可以自行到官網檢視:
create [temporary] table [if not exists] tbl_name
(create_definition,...)
[table_options]
[partition_options]
我們來建立自己的測試表:
id int not null auto_increment primary key comment '主鍵'(列名:id,型別int,不能為null,自動遞增,主鍵,注釋為:主鍵)
create table if not exists t_test(id int not null auto_increment primary key comment '主鍵',name varchar(50) comment '姓名',age age tinyint comment '年齡');
我看網上有人說value和values執行順序有比較大的差別,value比較快,不知道可不可行,有想深入了解的就得自己找找資料了。
insert [low_priority | delayed | high_priority] [ignore]
[into] tbl_name
[partition (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
(value_list) [, (value_list)] ...
[on duplicate key update assignment_list]
insert [low_priority | delayed | high_priority] [ignore]
[into] tbl_name
[partition (partition_name [, partition_name] ...)]
set assignment_list
[on duplicate key update assignment_list]
insert [low_priority | high_priority] [ignore]
[into] tbl_name
[partition (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
select ...
[on duplicate key update assignment_list]
value:
value_list:
value [, value] ...
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
插入我們自己的資料:
insert into t_test(id,name,age) values(2,'wangwu',15) (3,'xiaohong',15);
select * from t_test;
我們多插入幾條資料之後(有重複的資料?現實中重名的也有啊,正常,哈哈):
如何刪除資料?delete就行了:
delete [low_priority] [quick] [ignore] from tbl_name
[partition (partition_name [, partition_name] ...)]
[where where_condition]
[order by ...]
[limit row_count]
刪除指定id的資料:
delete from t_test where id = 2;
現在有個需求是:刪除姓名為zhangsan並且年齡最大,如何辦?
有人說先把最大年齡查出來,再拿age做比較。這樣是可以做到,但是沒有發現多了一步操作嗎?
mysql> delete from t_test
-> where age = (select max(age) from t_test where name='zhangsan');
當然還有別的方法,但是我說的是運用delete官方給的另一種方法。 我們可以仔細看下官方給的delete語句是什麼樣的?
order by...這不是排序嗎?limit row_count 這不是限定行數的嗎?是的,那麼上面那個需求我們可以怎麼做?
name為zhangsan的,按照age從大到小排序,limit限定刪除1行,是不是也是可以的?
delete from t_test where name='zhangsan' order by age desc limit 1;
update語句:
update [low_priority] [ignore] table_reference
set assignment_list
[where where_condition]
[order by ...]
[limit row_count]
value:
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
我們先來來吧wangwu的年齡改為20,修改多個字段英文的逗號(,)隔開就行
mysql> update t_test set age=20 where name='wangwu';
query ok, 1 row affected (0.01 sec)
rows matched: 1 changed: 1 warnings: 0
mysql使用基礎 sql語句 一
命令列輸入mysql u root p,回車再輸入密碼,進入mysql。終端命令以分號作為一條語句的結束,可分為多行輸入,只需在最後加上分號即可。如下圖 一 ddl 資料定義語言 data definition language 作用 定義資料庫或者表結構的。操作的物件 資料庫或表的結構的。關鍵字 ...
MySQL基礎sql語句總結(一)
mysql資料庫基礎知識點總結 一 資料庫 儲存有組織的資料的容器 主鍵 primary key 一一列 或一組列 其值能夠唯一區分表 中每個行。主鍵的最好習慣 除mysql強制實施的規則外,應該堅持的 幾個普遍認可的最好習慣為 不更新主鍵列中的值 不重用主鍵列的值 不在主鍵列中使用可能會更改的值。...
mysql基礎 基礎SQL語句
一,安裝mysql redhat6.5環境下,yum安裝 yum install y mysql 二,mysql登入 1,本地使用者登入 mysqladmin u root password 密碼 service mysqld restart mysql uroot p密碼 注意 p後無空格 或者 ...