SQL基礎-常用關鍵字

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' ;

複製代碼

發佈了33 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章