一、基本的sql語句 CRUD操作:create 創建(添加)read 讀取update 修改delete 刪除1、添加數據insert into Info values('p009','張三',1,'n001','2016-8-30 12:9:8') ; 給特定的列添加數據insert into ...
一、基本的sql語句
CRUD操作:
create 創建(添加)
read 讀取
update 修改
delete 刪除
1、添加數據
insert into Info values('p009','張三',1,'n001','2016-8-30 12:9:8') ;
給特定的列添加數據
insert into Info (code,name) values('p010','李四');
自增長列的處理
insert into family values('','p001','數據','T001','數據',1);
insert into 表名 values(值)
2、刪除數據
刪除所有數據
delete from family
刪除特定的數據
delete from Info where code='p001'
delete from 表名 where 條件
3、修改數據
修改所有數據
update Info set name='徐業鵬'
修改特定數據
update Info set name='呂永樂' where code='p002'
修改多列
update Info set name='呂永樂',sex=1 where code='p003'
update 表名 set 要修改的內容 where 條件 tno =
4、讀取數據
(1)簡單讀取,查詢所有列(*) 所有行(沒有加條件)
select * from Info
(2)讀取特定列
select code,name,class from Info
(3)條件查詢
select * from Info where code='p003'
(4)多條件查詢
select * from Info where code='p003' or nation='n002' #或的關係
select * from Info where sex=0 and nation='n002' #與的關係
(5)關鍵字查詢(模糊查詢)
查所有包含奧迪的汽車
select * from car where name like '%奧迪%'; #百分號%代表任意多個字元
查以'皇冠'開頭的所有汽車
select * from car where name like '皇冠%';
查詢汽車名稱中第二個字元是'馬'的
select * from car where name like '_馬%'; #下劃線_代表任意一個字元
(6)排序查詢
select * from car order by powers #預設升序排列
select * from car order by powers #升序asc 降序 desc
先按brand升序排,再按照price降序排
select * from car order by brand,price desc
(7)範圍查詢
select * from car where price9()>40 and price<60
select * from car where price between 40 and 60
(8)離散查詢
select * from car where price=30 or price=40 or price=50 or price=60;
select * from car where price in(30,40,50,60)取出數據
select * from car where price not in(30,40,50,60)去掉數據
(9)聚合函數(統計查詢)
select count(*) from car
select count(code) from car #取所有的數據條數
select sum(price) from car #求價格總和
select avg(price) from car #求價格的平均值
select max(price) from car #求最大值
select min(price) from car #求最小值
(10)分頁查詢
select * from car limit 0,10 #分頁查詢,跳過幾條數據(0)取幾條(10)
規定一個每頁顯示的條數:m
當前頁數:n]
select * from car limit (n-1)*m,m
(11)去重查詢
select distinct brand from car
(12)分組查詢
查詢汽車表中,每個系列下汽車的數量
select brand,count(*) from car group by brand
分組之後,只能查詢該列或聚合函數
取該系列價格平均值大於40的系列代號
select brand from car group by brand having(加條件) avg(price)>40
取該系列油耗最大值大於8的系列代號
select brand from car group by brand having max(oil)>8
二、MySql的高級查詢(使用外連接
)
連接查詢
SELECT t1.Name,t2.Brand_Name FROM brand t2,car t1 -- 笛卡爾乘積
WHERE t2.Brand = t1.Brand
-- 多表連接查詢
SELECT t1.Name,t2.Brand_Name,t3.prod_name FROM car t1 LEFT JOIN brand t2 ON t1.Brand = t2.Brand
LEFT JOIN productor t3 ON t2.Prod = t3.Prod
-- 聯合查詢 欄位數必須一樣
SELECT `Name`,Price FROM car UNION SELECT Brand_Name,Brand_Memo FROM brand
-- 子查詢(***)
SELECT * FROM car WHERE car.brand in (SELECT Brand FROM brand WHERE Prod = 'p001')
說明:使用外連接
A、
left
(
outer
)
join
:
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。
SQL:
select
a.a, a.b, a.c, b.c, b.d, b.f
from
a
LEFT
OUT
JOIN
b
ON
a.a = b.c
B:
right
(
outer
)
join
:
右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:
full
/
cross
(
outer
)
join
:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
D:分組:
Group
by
:
一張表,一旦分組完成後,查詢後只能得到組相關的信息。
組相關的信息:(統計信息)
count
,
sum
,
max
,
min
,
avg
分組的標準)
在SQLServer中分組時:不能以text,ntext,image類型的欄位作為分組依據
在selecte統計函數中的欄位,不能和普通的欄位放在一起;
E:外連接查詢(表名1:a 表名2:b)
select
a.a, a.b, a.c, b.c, b.d, b.f
from
a
LEFT
OUT
JOIN
b
ON
a.a = b.c
F:
between
的用法,
between
限制查詢數據範圍時包括了邊界值,
not
between
不包括
select
*
from
table1
where
time
between
time1
and
time2
select
a,b,c,
from
table1
where
a
not
between
數值1
and
數值2
G:四表聯查問題:
select
*
from
a
left
inner
join
b
on
a.a=b.b
right
inner
join
c
on
a.a=c.c
inner
join
d
on
a.a=d.d
where
.....
H::前10條記錄
select
top
10 * form table1
where
範圍
I:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select
a,b,c
from
tablename ta
where
a=(
select
max
(a)
from
tablename tb
where
tb.b=ta.b)