1、檢視錶的所有內容
select * from 表名;
2、檢視指定內容
select name,age from test;
select表示查詢,name表示名字,age表示年齡,from是從的意思,test是表名。
翻譯過來就是:從test表中查詢名字和年齡欄位的內容。
在select後面指定要查詢的項,可以是一項也可以多項。
在select後面新增distinct去除重複項輸出:如select distinct name,age from 表名;
3、預測庫存量
select name,stock+100 from test;
stock是庫存列,stock+100就是原庫存加100。
如果庫存有為null的,它是不會相加的,需要把它設為0。
select name,ifnull(stock,0)+100 from 表名;
ifnull(stock,0)的意思是:如果stock為null,就把stock的值設為0。
3、根據條件查詢
select * from test where age>20;
where後面就是條件
翻譯過來就是:從test表查詢所有年齡大於20的內容。
如果條件為null的話,需要用is或is not,不能用<、=、>這些符號
例如:select * from test where age is null;
範圍查詢
select * from test where age>=20 and age<=50;
翻譯過來就是:從test表查詢所有年齡大於等於20和小於等於50的內容
也可以用:select * from test where age between 20 and 50;
從test表查詢年齡在20到50之間的內容
4、模糊查詢
select * from test where name like '蘋果%';
%是匹配所有的意思,只要前面倆個字是蘋果都會匹配上
翻譯過來就是:從test表查詢所有名字前倆位是蘋果的內容,
查詢所有帶有蘋果的內容:select * from test where name like '%蘋果%';
select * from 表名 where name like '_蘋果%
_表示佔一位的意思,也可以用多個來佔多個位
翻譯過來就是:從test表查詢所有名稱第二位是蘋,第三位是果的內容。
5、聚合查詢
select count(*) from test;
count()查詢函式,翻譯過來就是:從test表查詢所有函式,也就是有多少條資訊。
min()最小,max()最大,sun()總數,AVG()平均數。
例如說從test表查詢最小年齡的值:select min(age) from test;
6、排序查詢asc desc
升序查詢
select * from test order by age asc;
從test表查詢年齡的所有欄位並按升序從小到大排列
降序查詢
select * from test order by age desc;
從test表查詢年齡的所有欄位並按降序從大到小排列
order by是查詢欄位的意思,asc是升序的意思,desc是降序的意思
7、分組查詢
select brand,sun(prcice) from test group by brand;
brand是品牌,sun(prcice)計算總金額,group by分組輸出。
意思就是:從test表查詢品牌和金額的總欄位內容並分組輸出。
8、分頁查詢
公式:select * from 表名 LIMIT (頁碼-1)*每頁數量,每頁數量
如果一頁有五條資料,頁碼數量從1開始,也就是(1-1)*每頁數量5,每頁數量5;第一頁得出0,5。
第二頁是(2-1)*每頁數量5,每頁數量5;第二頁得出5,5。以此類推
還有個簡單的方法從0開始算,第一頁是0到4,第二頁是5到9。
或者是頁碼數加每頁數量得出下一頁的頁碼數,如0+5得5,5+5得10。
select * from test limit 0,5;第一頁
select * from test limit 5,5;第二頁
9、多對多表查詢
用一箇中間表把其它的錶連結起來,透過這個中間表可以把資料聯通。
如學生、課程,學生可以選擇多個課程,但同時課程也可以被多個學生去選擇
課程表跟學生表之間就需要用到中間表來專門把它們連線起來。
學生表
create table student (
id int PRIMARY key auto_increment,//把整數型別id設為主鍵並且自增
name varchar(20)//字串型別名字
)ENGINE=innodb;
id int 宣告id為整數,PRIMARY key 設為主鍵,auto_increment自增
name varchar(20) 宣告name為字串型別
ENGINE=innodb 設定儲存引擎,沒有可能會報錯
課程表
create table course (
id int PRIMARY key auto_increment,
name varchar(20)
)ENGINE=innodb;
中間表
create table stu_cre (
id int PRIMARY key auto_increment,
sid int,
cid int,
constraint ss foreign key (sid) references student(id),
constraint sc foreign key (cid) references course(id),
)ENGINE=innodb;
constraint設定外連結,命名為ss隨便起一個,foreign key (sid)本表鍵,references student(id)學生表鍵。
我這裡沒有插入資料,可以自己新增資料,如果表裡面有資料,透過查詢語句
select * from 中間表名;
檢視中間表就可以看到倆個表的關聯資料了
10、內連線
用於查詢倆個表或多個表有交集、相關聯的資料
語法:select 列名 from 表名1 inner join 表名2 on 關聯條件;
select * from 使用者表 inner join 訂單表 on 使用者.id=訂單.sid;
從使用者表查詢所有與訂單表相關聯的資料,使用者.id和s訂單sid要有關聯。
使用者表是要查詢的主表,inner join表示連線。