MySQL基礎(一)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' ;
相關文章
相關標籤/搜索