運行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的最新消息。