mysql資料庫相關操作.md
阿新 • • 發佈:2019-01-05
對資料庫/表的操作
- 建立資料庫
create database dbname
- 建立資料表
create table tb_name();
- 顯示資料庫/資料表
show databases;
show tables;
- 查看錶結構
desc tb_name;
- 切換到指定資料庫
use dbname;
- 刪除資料庫
drop database dbname;
插入資料
下例插入多行資料:
insert into tb_tiger(ID,Name,Kind,Number,Address) VALUES(1808,'華南虎','貓科',0,'中國'),(1809,'熊貓','熊科',1668,'中國'),(1810,'孟加拉虎','貓科',5102,'孟加拉'),(1811,'東北虎','貓科',21,'中國');
insert into tb_tiger VALUES(1808,'華南虎','貓科',0,'中國'),(1809,'熊貓','熊科',1668,'中國'),(1810,'孟加拉虎','貓科',5102,'孟加拉'),(1811,'東北虎','貓科',21,'中國');
修改資料
- 下例修改ID=1806這行多個屬性的資料
update tb_tiger set Address='美國',Name='美洲獅01' where ID=1806;
刪除資料
- 下例刪除Number>10000的所有行
delete from tb_tiger where Number>10000;
查詢
條件查詢
- 查詢所有貓科動物的資訊
select * from tb_tiger where Kind='貓科';
- 查詢現存數量少於5000的動物資訊
select * from tb_tiger where Number<5000;
- 帶between and的範圍查詢
select * from tb_tiger where Number between 1000 and 10000;
select * from tb_tiger where Number>=1000 and Number<=10000;
- 查詢產地在中國、孟加拉和阿富汗的動物資訊
select * from tb_tiger where Address='中國' or Address='阿富汗' or Address='孟加拉';
模糊查詢 like
- 模糊查詢(‘%’代表任意個任意字元; ‘_’代表一個任意字元):(查詢名稱中包含‘熊’的動物資訊)
select * from tb_tiger where Name like '%熊%';
select * from tb_tiger where Name like '_熊';
分組查詢group by
- –單獨查詢(單獨使用group by查詢的是每組中的一條資料,意義不大)
- 下例按照動物種類進行分組
select * from tb_tiger group by Kind;
- 分組查詢–與函式一起使用(統計每組數量,最大值,平均值等)
//查詢每組有幾行
select count(*) from tb_tiger group by Kind ;
//查詢每組動物數量最大的數量
select Max(Number) from tb_tiger group by Kind ;
- 分組查詢–與having關鍵字一起用
- HAVING關鍵字和WHERE關鍵字的作用相同,都是用於設定條件表示式,對查詢結果進行過濾。
- 兩者的區別,HAVING關鍵字後,可以跟聚合函式,而WHERE關鍵字不能,通常情況下,HAVING關鍵字,都是和GROUP BY一起使用,用於對分組後的結果進行過濾
select * from tb_tiger group by Kind having Number>30000;
聯合查詢 union
- 使用union關鍵字連線兩個查詢語句,查詢結果合成一個表
聚合函式 sum;count;max;min;avg
- sum(求和)、count(*)(記錄數)、max(最大值)、min(最小值)、avg(平均數)
order by 排序
- asc升序
- desc降序
select * from tb_tiger order by Number desc;
limit 控制查詢條目
- limit x,y
- limit x
//查詢表前5行
select * from tb_tiger limit 5,6;
//從資料表第5行往後數6行
select * from tb_tiger limit 5,6;
去掉重複distinct
- distinct關鍵字
select distinct Kind from tb_tiger;
多表查詢
- 內連線(join / inner join)
- 外連線(left join / left outer join;right join / right outer join)
- 內連線使用比較運算子根據每個表共有的列的值匹配兩個表中的行。
- 左向外連線的結果集包括 LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。
- student和teacher表
1. 內連線
select a.*,b.* from student a join teacher b;
結果為:
2. 內連線
select a.*,b.* from student a join teacher b where a.sid=b.sid;
//或
select a.*,b.* from student a join teacher b on a.sid=b.sid;
結果為:
3. 外連線
4. 左外連線
select a.*,b.* from teacher a left join student b on a.sid = b.sid;
結果為:
5. 右外連線
select a.*,b.* from teacher a right join student b on a.sid = b.sid;
結果為:
帶in關鍵字的子查詢
- 下例中()裡面的結果為1,2,3,4;其作為條件查詢student表裡id為1,2,3,4的資訊
select * from student where id in(select sid from teacher);
結果為: