SQL學(xué)習(xí)小記

/************************************** 創(chuàng)建表 *********************************************/
//創(chuàng)建表-定義主鍵
CREATE TABLE T_Person(
FId INTEGER,
FName VARCHAR(20),
FAge INTEGER DEFAULT '18',
PRIMARY KEY (FId)
)

/************************************** 表關(guān)聯(lián)-外鍵 *********************************************/
//公司表
CREATE TABLE T_FIRM(
FId INTEGER,
FName VARCHAR(20),
FAddress VARCHAR(10),
PRIMARY KEY (FId)
)
//員工表-外鍵CId 關(guān)聯(lián)T_FIRM表FId
CREATE TABLE T_STAFF(
PId INTEGER,
PName VARCHAR(20),
CId INTEGER,
PRIMARY KEY (FId),
FOREIGN KEY (CId) REFERENCES T_FIRM (FId)
)

/************************************** 修改數(shù)據(jù)庫表 *********************************************/
//添加列字段
ALTER TABLE T_STAFF ADD FSex VARCHAR(10)
//去除列字段
ALTER TABLE T_STAFF DROP Column FSex
/************************************** 數(shù)據(jù)的增改刪 *********************************************/
//建表
create table T_PERSON(PId INTEGER ,PName VARCHAR ,PSex VARCHAR,PAge integer ,PRIMARY KEY (PId))
//插入數(shù)據(jù)
insert into T_PERSON (PId , PName , PSex , PAge ) values (1,'Jack','男',13)
//修改表中的數(shù)據(jù)
update T_PERSON set PAge='18',PSex='男' where PName='Juice'
//刪除表中數(shù)據(jù)
delete frome T_PERSON where PAge>17

/************************************** 數(shù)據(jù)的簡(jiǎn)單查詢 ******************************************/
select FName,FAge as '年齡',FSalary from T_Worker
select FName from T_Worker where FAge>30 and FSalary>5000
select * from T_Worker order by FAge asc

/************************************** 過濾查詢 **********************************************/
SELECT * FROM T_Worker WHERE (FAge BETWEEN 18 AND 20) OR ( FAge BETWEEN 30 AND 50 )
//MIN,MAX,SUM,AVG,COUNT---------聚合計(jì)算

/************************************** 數(shù)據(jù)分組 **********************************************/
//使用GROUP BY子句來完成數(shù)據(jù)的分組!分組的目的也是為了進(jìn)行聚合運(yùn)算~可以把這個(gè)分組看成一個(gè)臨時(shí)的結(jié)果集
//數(shù)據(jù)分組~將表中的數(shù)據(jù),按表中的字段來進(jìn)行分組,然后再對(duì)這些分組進(jìn)行聚合運(yùn)算,MIN,MAX,SUM,AVG,COUNT的計(jì)算
SELECT PCity FROM T_Product GROUP BY PCity
SELECT PCity,COUNT(PCity) AS '數(shù)量' FROM T_Product where PKind='日用品類' GROUP BY PCity
select PCity,max(PPrice) from T_Product group by PCity
select PCity,PKind,count(*) as '數(shù)量' from T_Product group by PCity,PKind
select PCity,max(PPrice) as '價(jià)格最大' ,min(PPrice) as '價(jià)格最小' from T_Product group by PPrice

/*********************************** HAVING語句分組進(jìn)行過濾 ***********************************/
//聚合函數(shù)不能在WHERE語句中使用
//先把表中數(shù)據(jù)按PCity來分組,然后篩選出記錄條數(shù)大于1的部分!
select PCity from T_Product group by PCity HAVING count(PCity)>1
select PCity,max(PPrice) from T_Product group by PCity HAVING count(PCity)>1
select PCity,min(PPrice) from T_Product group by PCity HAVING count(PCity)>1
//1.HAVING子句需要放在GROUP BY子句之后!
//2.HAVING子句不能包含未分組的列名,就是沒寫在GROUP BY后面的~

/**************************************** limit分頁 *****************************************/
select * from T_Product limit 5 , 3
//5 = startIndex, 3 = size 第5條數(shù)據(jù)開始取3條

/************************************** 抑制數(shù)據(jù)重復(fù) ****************************************/
//DISTINCT是針對(duì)整個(gè)結(jié)果集來進(jìn)行數(shù)據(jù)重復(fù)抑制的,而不是針對(duì)每一個(gè)列!!!
SELECT DISTINCT PCity FROM T_Product
SELECT DISTINCT PKind,PCity FROM T_Product

/************************************** 字段間計(jì)算 ****************************************/
select PName,FNum,PPrice,PPriceFNum as '商品總價(jià)' from T_Product
select ,PPriceFNum as '總價(jià)' from T_Product where PPrice
FNum>5000

/************************************** 聯(lián)合結(jié)果集 ****************************************/
//UNION運(yùn)算符-----把多個(gè)查詢結(jié)果集放到一個(gè)結(jié)果集
SELECT '商品最高單價(jià)',MAX(PPrice) FROM T_Product
UNION
SELECT '商品最低單價(jià)',MIN(PPrice) FROM T_Product
UNION
SELECT '員工最高薪資',MAX(FSalary) FROM T_Worker
UNION
SELECT '員工最低薪資',MIN(FSalary) FROM T_Worker

/************************************** 索引與約束 ****************************************/
CREATE INDEX idx_person_union ON T_Worker(FName,FAge,FSex)
ALTER TABLE T_Person ADD PRIMARY KEY(FId)
ALTER TABLE T_Person ADD CONSTRAINT FOREIGN KEY(PId) REFERENCES T_FIRM(FId)

/********************************** 表連接來操作多個(gè)表 *************************************/
1.內(nèi)連接(INNER JOIN) ------返回到結(jié)果集中僅包含符合條件的行
select * from T_Student inner join T_Class on T_Student.Class_id=T_Class.Class_id
select SId,SName,Class_name from T_Student inner join T_Class on T_Student.Class_id=T_Class.Class_id
select SId,SName,Class_name,Dorm_name from T_Student inner join T_Class on T_Student.Class_id=T_Class.Class_id inner join T_Dorm on T_Student.Dorm_id=T_Dorm.Dorm_id
2.外連接(LEFT OUTER JOIN === RIGHT OUT JOIN) ------返回到結(jié)果集中的不僅包含符合條件的行,還包括左表(左外連接)、右表(右外連接)或者兩個(gè)連接表(完全連接)中的所有數(shù)據(jù)行!
select * from T_Student left outer join T_Class on T_Student.Class_id=T_Class.Class_id
select * from T_Student right outer join T_Class on T_Student.Class_id=T_Class.Class_id //不支持sqlite
select * from T_Student full outer join T_Class on T_Student.Class_id=T_Class.Class_id //不支持sqlite
3.交叉連接(cross join)
SELECT * FROM T_Student cross join T_Class
4.自連接(INNER JOIN)---即連接關(guān)鍵字的兩邊都是同一個(gè)表
select a.C_Name,b.C_Name from T_City as a inner join T_City as b on a.C_Id=b.B_Id

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 觀其大綱 page 01 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 M...
    周少言閱讀 3,255評(píng)論 0 33
  • 50個(gè)常用的sql語句Student(S#,Sname,Sage,Ssex) 學(xué)生表Course(C#,Cname...
    哈哈海閱讀 1,334評(píng)論 0 7
  • 凌晨和張驊、芳芳(李芳)、寶寶(李鑫)開著小火車,涌入了17年解放碑跨年的人海里,寶寶拍到熱鬧非凡的場(chǎng)面,托...
    心心仙子閱讀 1,421評(píng)論 0 1
  • 我是一個(gè)喜歡設(shè)定目標(biāo)并向目標(biāo)學(xué)習(xí)的人,沒有設(shè)定的標(biāo)桿人物在前面引領(lǐng)我努力,就有可能上進(jìn)心不足導(dǎo)致進(jìn)步很慢。我的標(biāo)桿...
    Sandy33213閱讀 942評(píng)論 0 2
  • 小蜘蛛和媽媽住在山洞里,山洞黑乎乎的,他們?cè)谏蕉蠢锟棟M了網(wǎng)。日子久了,小蜘蛛就覺得很無聊。有一天,小蜘蛛跟媽媽說:...
    小月李閱讀 3,913評(píng)論 3 1

友情鏈接更多精彩內(nèi)容