1. 程式人生 > >mysql資料庫相關操作.md

mysql資料庫相關操作.md


對資料庫/表的操作

  • 建立資料庫
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表
    image
    image

1. 內連線

select a.*,b.* from student a join teacher b;

結果為:
image

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;

結果為:
image

3. 外連線

4. 左外連線

select a.*,b.* from teacher a left join student b on a.sid = b.sid;

結果為:
image

5. 右外連線

select a.*,b.* from teacher a right join student b on a.sid = b.sid;

結果為:
image

帶in關鍵字的子查詢

  • 下例中()裡面的結果為1,2,3,4;其作為條件查詢student表裡id為1,2,3,4的資訊
select * from student where id in(select sid from teacher);

結果為:

image