(My)SQL基本操作筆記整理

1,數據庫登錄: 
運行cmd,     Mysql –uroot –p 
Mysql代表客戶端命令,-u後面跟連接的數據庫用戶,-p表示要輸入密碼 
2,創建數據庫: 
Create database test1; 
3,查看系統中數據庫: 
Show databases; 
4,選擇要操作的數據庫: 
Use test1;
5,查看當前數據庫中的表: 
Show  tables; 
6,刪除數據庫: 
Drop database database_name; 
7,創建表: 
Create table tablename(column_name1 column_type1 constraints, column_name2 column_type2 constraints, column_name3 column_type3 constraints,……. column_nameN column_typeN constraints) 
8,查看錶的定義: 
Desc tablename; 
或者show create table emp \G; 
“\G”要大寫,含義是使得記錄能夠按照字段豎着排列,對於內容比較長的記錄更易顯示; 
9,刪除表: 
Drop table tablename; 
10,修改表: 
(1),修改表類型: 
Alter table tablename MODIFY column_definition [first|after col_name] 
例如: 
Alter table emp modify ename varchar(20); 
(2),增加表字段: 
   Alter table tablename add[column] column_definition [first|after col_name] 
例如: 
Alter table emp add column age int(3); 
(3),刪除表字段: 
   Alter table tablename drop [column] col_name; 
   例如: 
   Alter table emp drop column age;
(4),字段改名: 
   Alter table tablename change column old_col_name column_definition [first|after col_name] 
   例如: 
   Alter table emp change column age age1 int(4); 
(5),修改字段排列順序: 
  前面介紹的字段增加和刪除的語法(add/change/modify)中,都有一個可選項first|after col_name,這個選項可以用來修改字段在表中的位置,默認add增加的字段是加在表的最後位置,而change/modify默認都是不會改變字段的位置。 
  例如: 
  Alter table emp add column birth date after ename; 
  Alter table emp modify age int(3) first; 
(6),更改表名: 
   Alter table tablename rename [to] new_tablename; 
   例如: 
   Alter table emp rename emp1; 
10,插入記錄: 
Insert into tablename(field1,field2,….,fieldn) values(value1,value2,….,valuen); 
例如: 
Insert into emp values(‘lisa’,’2003-02-01’,’3000’,2); 
Insert into emp(ename,sal) values(‘dony’,3000); 
值得注意的是,MySQL有一個很好的特性是insert語句一次可以插入多條記錄: 
Insert into emp(ename,hiredate,sal,deptno) 
Values 
(rec1_value1,rec1_value2,rec1_value3,rec1_value4), 
(rec2_value1,rec2_value2,rec2_value3,rec2_value4), 
(rec3_value1,rec3_value2,rec3_value3,rec3_value4), 
… 
(recn_valuen,recn_value2,recn_value3,recn_value4); 
11,更新記錄: 
Update tablename set field1=value1,field2=value2,….,fieldn=valuen [where condition] 
例如: 
Update emp set sal=4000 where ename=’lisa’; 
Update語句可以同時更新多個表中數據,語法如下: 
Update t1,t2…tn set t1.field1=expr1,tn.field1=exprn [where condition] 
12,刪除記錄: 
Delete from tablename [where condition]; 
例如: 
Delete from emp where ename=’dony’; 
一次刪除多個表中的數據,句法如下: 
Delete t1,t2,…,tn from t1,t2,…,tn [where condition] 
例如: 
Delete a,b from emp as a,dept as b where a.ename=’Hui’ and b.deptno=1; 
13,查詢記錄: 
Select 語句: 
最簡單形式 select * from tablename; 
(1),不重複的記錄查詢: 
Select distinct deptno from emp; 
(2),條件查詢: 
Select * from emp where ename=’Lisa’; 
(3),排序和限制: 
關鍵字order by 實現: 
Select * from tablename [where condition]  [order by field1 [desc|asc],field2 [desc|asc],….fieldn[desc|asc] 
例如: 
Select * from emp order by sal asc; 
以上的排序規則是先滿足第一個,然後依次往下滿足; 
對於排序後的記錄,如果只希望顯示一部分而不是全部,這時,就可以用LIMIT關鍵字來實現, LIMIT關鍵字的語法如下: 
Select ……[LIMIT offset_start,row_count] 
其中Offset_start表示記錄的開始偏移量,row_count表示顯示的行數,例如顯示按照sal排序後的前2條記錄: 
Select * from emp order by sal limit 2; 
顯示按照sal排序後的從第2條記錄開始的2條記錄: 
Select * from emp order by sal limit 1,2; 
(4),聚合: 
Select [field1,field2,…..fieldn] fun_name 
From tablename 
[where   where_condition] 
[group by field1,field2,…fieldn 
[with rollup]] 
[having where_condition] 
其中:fun_name 表示要作的聚合操作,也就是聚合函數 
Group by 表示要進行分類聚合的字段,比如要按照部門來統計,部門就應該寫在group by後面。 
With rollup 是可選語法,表明是否對分類聚合後的結果進行再彙總。 
Having 關鍵字表示對分類後的結果再進行條件的過濾。 
例如:要emp表中統計公司的總人數: 
Select count(1) from emp; 
在此基礎上,要統計各個部門的人數: 
Select deptno,count(1) from emp group by deptno; 
再細一些,要統計各部門的人數,又要統計總人數: 
Select deptno,count(1) from emp group by deptno with rollup; 
統計人數大於1的部門: 
Select deptno,count(1) from emp group by deptno  having count(1) >1; 
最後統計公司所有員工的薪水總額、最高和最低薪水: 
Select sum(sal),max(sal),min(sal) from emp; 
(5),表連接: 
當需要同時顯示多個表中的字段時,就可以用表連接來實現這樣的功能。 
表連接有內連接和外連接,其主要區別是內連接僅選出兩張表中互相匹配的記錄,而外連接會選出其他不匹配的記錄。最常用的是內連接。 
例如: 
Select ename ,deptname from emp,dept where emp.deptno=dept.deptno; 
外連接又分爲做連接和右連接: 
左連接:包含所有左邊表中的記錄甚至是右邊表中沒有和它匹配的記錄; 
右連接:包含所有右邊表中的記錄甚至是左邊表中沒有和它匹配的記錄; 
Select ename,deptname from emp left join dept on emp.deptno=dept.deptno; 
Select ename,deptname from emp right join dept on emp.deptno=dept.deptno; 
(6).記錄聯合: 
主要用於查詢兩個表的數據時,將結果合併到一起顯示出來,用到union 和union all關鍵字實現這樣的功能,具體的語法如下: 
Select * from t1 
Union|union all 
Select * from t2 
… 
Union|union all 
Select * from tn; 
注意:union和union all 的主要區別是union all把結果集直接合併在一起,而union 是將Union all以後的結果進行一次distinct,去除重複的記錄結果。 
例如: 
Select deptno from emp 
Union all 
Select deptno from dept; 
14,DCL語句的使用: 
創建一個用戶zzj,具有對emp數據庫中所有表的select/inser/delete權限: 
Mysql>grant  select,insert,delete on emp.* to ‘zzj’@’localhost’ identified by ‘123’; 
收回其對於emp數據庫中所有表的delete權限: 
Mysql>revoke delete on emp.* from ‘zzj’@’localhost’; 
15,按照層次看幫助: 
Mysql>? Contents 
顯示所有可供查詢的分類; 
對於練出的分類,可以使用’? 類別名稱’的方式針對用戶感興趣的內容做進一步的查看。例如,想看看MySQL中都至此哪些數據類型,可以執行”? data types”命令。 
16,快速查閱幫助: 
在實際應該用中,如果需呀快速查閱某項語法時,可以使用關鍵字進行快速查詢。例如,想知道show命令都能看到些神惡魔東西,可以使用如下命令 
Mysql>? Show 
例如想參看create table 的語法,可以使用以下命令: 
Mysql>? Create table 
17,常用的網絡資源: 
http://dev.mysql.com/downloads/是mysql官方網站,可以下載到各個版本的MySQL以及相關客戶端開發工具等。 
http://dev.mysql.com/doc/提供了目前最權威的Mysql數據庫及工具的在線手冊。 
http://bugs.mysql.com/這裏可以查看到MySQL以及發佈的bug列表,或者向MySQL提交bug報告。 
http://www.mysql.com/news-and-events/newsletter/通常會發布各種關於MySQL的最新消息。
發佈了121 篇原創文章 · 獲贊 19 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章