一、資料庫操作
- 登入資料庫:mysql -u root -p 密碼
- 建立資料庫:create database 資料庫名稱;
- 選擇資料庫:use 資料庫名稱;
- 檢視所有資料庫:show database;
- 删除資料庫:
二、表格操作
- 查尋資料庫所有表格:show tables;
- 建立表格:create table 表名(字段名1 字段類型 限制條件,字段名2.............);
- 增加表格字段:alter table 表名 add(字段名1 字段類型 限制條件............);
- 修改字段名:alter table 表名 chanage 舊字段名 新字段名 新資料類型;
- 删除表格字段:alter table 表名 drop 字段名;
- 修改字段類型:
- 增加字段限制條件:
- 删除字段限制條件:
- 删除表格:drop table 表名 restrict(删除無限制條件的的表)/cascade(删除表的同時删除有關聯的内容一起被删除);
三、索引操作(index):
- 檢視表中已經存在的索引:show index from 表名;
- 建立:Create uinque index 索引名 on 表名(列名);
- 修改索引名:alter index 舊索引名 rename to 新索引名;
- 删除:drop index 索引名 on 表名
四、查尋基本操作
- 資料查詢一般格式:select 查尋内容 from 表名或者視圖名 where 限制條件 group by 列名 order by 列名
- 查詢内容:所有(*),字段名稱,聚集函數。
- from中内容:表名、視圖名、嵌套語句。
- 限制條件:條件表達式,嵌套語句、
- group by含義:結果按照列名進行分組即列值相等的為一組。并且group by 自帶having即隻有滿足條件的才能輸出。
- order by含義:結果按列值進行升序(asc)或降序(desc)輸出。
- 單表查詢
- 選擇表中若幹列: select 列1,列2 from 表名
- 查尋全部列: select * from 表名
- 查尋經計算的值: select 2014-列名 from 表名
- 消除重複行: select distinct 列名 from 表名
- 查尋滿足條件的元組:select 列名 from 表名 where 條件
- order by 子句:可以設定多個列
- 聚集函數:(where子句中不能使用)
- count(*) 統計元組個數
- count(列名) 統計一列中值的個數
- sun(列名) 計算一列值的總和(必須是數值型的)
- avg(列名) 計算一列的平均值(必須是數值型的)
- max(列名) 求一列的最大值
- min(列名) 求一列的最小值
- group by 子句 having(條件)
- 連接配接查詢
- 等值與非等值連接配接查尋 where語句中:select * from 表1,表2 where 表1.列1=表2.列2
- 自身連接配接 首先為表取兩個表名first,second:select first.列名,second.列名 from 表名 first,表名 second where first.列名=second.列名
- 外連接配接(左連接配接:列出左邊所有關系,若右邊無對應則以空值的形式輸出) select * from 表1 left outer join 表2 on/using(表1.列1=表2.列2);我們也可用利用using去除結果中的重複值;
- 多表連接配接 主要是利用and和偶or連接配接
- 嵌套查詢
- 帶有in的子查詢(有内往外逐級輸出)
- 帶有比較運算符的子查詢:注意子查詢結果隻有一個是可用=代替in
- 帶有any或all的子查詢:
- >any 大于子查詢結果的某個值
- >all 大于子查詢結果的某些值
- <any 小于子查詢結果的某個值
- <all 小于子查詢結果的某些值
- >=any 大于子等于查詢結果的某個值
- >=all 大于子等于查詢結果的某些值
- <=any 小于等于子查詢結果的某個值
- <=all 小于等于子查詢結果的某些值
- =any 等于子查詢結果的某個值
- =all 等于子查詢結果的某些值
- !=any 不等于子查詢結果的某個值
- !=all 不等于子查詢結果的某些值
- 帶有exists的子查詢:他不傳回任何資料,隻産生true和false;主要是用來判斷子查詢結果是否為空
- 集合查尋
- 并交差(union intersect except) 例如 select *from 表名 where 條件 union select *from 表名 where 條件
- 基于派生表的查尋 select sname from 表1,(select sno from 表2 where cno='1') as 派生表名 where 條件 ;as為的意思即(select sno from 表2 where cno='1')關系的表名為 派生表名。
五、資料更新操作
- 插入資料
- 插入元組(一次僅能插入一個元組) insert into 表名(對應列名) values(對應值); 若無指定列名,新插入的元組必須在沒個屬性列上均有值。
- 插入子查詢結果(一次操作可插入多個元組) insert into 表1(對應列1) select 對應列1 from 表2 ......
- 修改資料
- 修改某一進制組值 update 表名 set 列=某某(修改部分) where 條件
- 修改多個元組值(某列同時增減某個數) update 表名 set 列名=列名+1
- 帶子查詢的修改語句 update 表名 set 列名=某某 where 條件
- 删除資料
- 删除某一進制組值 delete from 表名 where條件
- 删除多個元組值 清空表(delete from 表名)
- 帶子查詢的删除語句 delete from 表名 where 列名 in (子查詢)
六、視圖操作
- 建立視圖 create view 視圖名(列名) as 子查詢(為哪個表的哪些字段建立視圖),例如:create view 視圖名as select * from 表名 where條件 with check option ;如加上with check option這句話,我們以後對視圖操作時 必須滿足定義的where 條件。
- 删除視圖 drop view 視圖名
- 查詢視圖 與表格一緻
- 更新視圖 不常用
- 視圖與表的差別
七、使用者授權操作
八、資料庫完整性操作
注:
- 檢視mysql版本,cmd進入mysql下的bin目錄:mysql --help | find "Distrib"或者mysql -V。
- 基本文法:
- create 建立; drop 删除; alter 修改;
- table 表格 ; index索引; view 視圖; schema 模式。
- 條件:
- 比較大小 > < = >= <= !=或<> !>(不大于) !<(不小于)。
- 确定範圍 between ..(下界)...and...(上界). not between.......and......。
- 确定集合 in 屬性值屬于指定集合的元組 例如:select * from 表名 where 列名 in ('值1','值2','值3')。
- 字元比對 like %代表任意長度 _代表單個字元 例如:select * from 表名 where 列名 like '_劉%'(如何查找字元含有_或%,此時要使用\來轉換)。
- 涉及空值的查詢(例如查尋沒有參加考試的學生) select * from 表名 where 列名 is NULL; 注意is不能用=代替。
- 多重條件查詢 and >or 例如 :select * from 表名 where 列名1=' ' and 列名2=' '。
- order by和group by 隻能對最終結果進行操作,不能用于子查詢中。
- 派生表是指當子查詢出現在from中,子查詢會臨時生成一個表叫派生表