DDL(Data Definition Languages)數據定義語言,常用關鍵字包括create、drop、alter等
0.連接數據庫 $mysql -u root -p connection id 表示的是連接次數 1.創建數據庫 CREATE DATABASE dnname 2.默認的數據庫 information_schema:主要存儲了系統中的一些數據庫對象信息,如用戶表信息、列信息、權限信息、字符集信息、分區信息等 cluster:存儲系統的集羣信息 mysql:存儲了系統的用戶權限信息 test:系統自動創建的測試數據庫,任何用戶都可以使用 3.選擇數據庫 USE dbname 4.刪除數據庫 drop database dbname 5.創建表 CREATE TABLE tablename( column_name column_type constrains, column_name column_type constrains ) 6.查看錶定義 DESC tablename 7.刪除表 DROP TABLE tablename 8.修改表 1)修改表字段類型 ALTER TABLE tablename MODIFY[COLUMN] column_definition[FIRST|AFTER col_name] alter table student modify name varchar(20); 2)增加表字段 ALTER TABLE tablename ADD[COLUMN] column_definition[FIRST|AFTER col_name] alter table student add column age int(3); 3)刪除表字段 AlTER TABLE tablename DROP[COLUMN] col_name alter table student drop column age; 4)字段改名 ALTER TABLE tablename CHANGE[COLUMN] old_col_name column_definition[FIRST|AFTER col_name] alter table student change age age1 int(4) 注意:change 和modify都可以修改表的定義,不同的是change後面需要寫兩次列名,不方便。但是change的優點是可以修改列名稱,modify則不能。 5)修改字段排列順序 前面介紹的字段增加和修改語法(ADD/CHANGE/MODIFY)中,都有一個可選項first|after column_name, 這個選項可以用來修改字段在表中的位置,ADD增加的新字段默認是加在表的最後位置,而CHANGE/MODIFY默認都不會改變字段的位置 #將新增字段birth date 加在name 後 alter table student add birth date after name; #修改字段age,將它放在最前 alter table student modify age int(30 first; 9.更改表名 ALTER TABLE tablename RENAME [TO] new_tablename alter table student rename stu
DML(Data Manipulation Languages)數據操縱語句,常用的關鍵字包括insert、delete、update等
1.插入記錄
INSETR INTO tablename (field1,field2,...fieldn) VALUES (value1,value2,...value3);
字段與value一 一對應,可空字段,非空但是含有默認值的字段,自增字段,可以不用再insert後面字段列表和values中填寫;可以一次插入多條記錄,每條記錄之間用逗號隔開 2.更新記錄 UPDATE tablename SET field1=value1,field2=value2,...fieldn=valuen WHERE [CONDITION] 3.刪除記錄 DELETE FROM tablename [WHERE CONDITION] 4.查詢記錄 SELECT * FROM tablename[WHERE CONDITION] 1)查詢不重複的記錄 select distionct name from student; 2)條件查詢 select * from student where sid=1; 3)排序和限制 SELECT * FROM tablename[WHERE CONDITION] [ORDER BY field1 [DESC|ASC],field2 [DESC|ASC],..fieldn [DESC|ASC]] select * from student order by name; #默認ASC 升序 LIMIT關鍵字顯示部分記錄 SELECT * FROM tablename [LIMIT offset_start,row_count]; offset_start 表示記錄的起始偏移量,默認爲0,所以可以直接寫行數 row_count 表示顯示的行數 4)聚合 SELECT [field1,field2,...fieldn] fun_name FROM tablename [WHERE where_condition] [GROUP BY field1,field2,...fieldn] [WITH ROLLUP] [HAVING where_condition]
func_name表示要做的聚合操作,聚合函數,如SUM,COUNT(*),MAX(),MIN() group by關鍵字表示要進行分類聚合的字段 WITH ROLLUP 是可選語法,表明是否對分類聚合後的結果進行再彙總 HAVING 關鍵字表示對分類後的結果再進行條件過濾 5)表連接 內連接: 僅選出兩張表中的互相匹配的記錄 外連接(左連接,右連接) 左連接:包含所有的左邊表中的記錄甚至是右邊表中沒有和它匹配的記錄 右連接:包含所有右邊表中的記錄甚至是左邊表中沒有和它匹配的記錄 6)子查詢 當進行查詢的時候,需要的條件是另外一個select語句的結果,這個時候就要用到子查詢,用於子查詢的關鍵字主要包括 in、not in、=、!=、exists、not exists 將兩張表的數據按照一定的查詢條件查詢出來後,將結果合併到一起顯示出來,這個時候可以使用 union,union all 關鍵字來實現 UNION和UNION ALL的區別: union all直接把記錄合併在一起 union 合併後的結果去除重複記錄DISTINCT
DCL(Data Control Language)數據控制語句,常用關鍵字包括grant、revoke等
DCL語句主要是DBA用來管理系統中的對象權限使用 允許用戶user1對本地test數據庫的所有表進行SELECT/INSERT權限 grant select,insert on test.* to 'user1'@'localhost' identified by '123'; 禁止insert,收回用戶的insert權限 revoke insert on test.* from 'user1'@'localhost' ;