當(dāng)前位置:首頁(yè) > IT技術(shù) > 數(shù)據(jù)庫(kù) > 正文

SQL基礎(chǔ)
2021-09-13 10:26:37

SQL可以分為兩部分

1.DDL數(shù)據(jù)定義語(yǔ)言 DDL= Data Definition Language

SQL中常用的DDL語(yǔ)句:

create database - 創(chuàng)建新的數(shù)據(jù)庫(kù)

create table - 創(chuàng)建新的數(shù)據(jù)庫(kù)表

alter table - 變更(改變)數(shù)據(jù)庫(kù)表

drop table - 刪除表

2.DML數(shù)據(jù)操作語(yǔ)言 DML = Data Manipulation Language

SQL中常用的DML指令:

insert into - 向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)

  insert into 表名稱 values (值1,值2,...)

select - 從數(shù)據(jù)庫(kù)表中獲取數(shù)據(jù)

  select * from 表名 where 指定條件

update - 更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù)

  update 表名稱 set 列名稱 =新值 where 指定條件

delete - 從數(shù)據(jù)庫(kù)表中刪除數(shù)據(jù)

  delete? from? 表名? where 指定條件

Alias 簡(jiǎn)稱 as 別名

?

?

SQL約束(constraints)

約束用于在插入數(shù)據(jù)到表中時(shí)的規(guī)則,可以在創(chuàng)建表時(shí)就規(guī)定約束(通過(guò) create table語(yǔ)句)

not null 約束強(qiáng)制列不接受null值

unique(唯一的)約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄

primary key (主鍵)擁有自動(dòng)定義的unique約束

?

聚集函數(shù)

函數(shù)

說(shuō)明

avg()

返回某列的平均值

count()

返回某列的行數(shù)

max()

返回某列的最大值

min()

返回某列的最小值

sum()

返回某列之和

?
where子句的操作符

操作符

說(shuō)明

=

等于

<>

不等于

!=

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

between... and ...

介于兩者之間

in

在給定的值之內(nèi)

like

模糊匹配

運(yùn)算符Between...and

  在where子句中使用,選取介于兩個(gè)值之間的數(shù)據(jù)范圍。

like 模糊匹配

  SELECT Brand FROM Perfume?WHERE Brand LIKE '%Lg%‘ 中間包含Lg的都會(huì)被找出來(lái)

  SELECT Brand FROM Perfume?WHERE Brand LIKE 'Lg%‘ 前面包含Lg的都會(huì)被找出來(lái)

? ? ? ?SELECT Brand FROM Perfume?WHERE Brand LIKE '%Lg‘ 后面包含Lg的都會(huì)被找出來(lái)

?

in?:表示在給定條件范圍內(nèi)的結(jié)果;

or: 表示或者關(guān)系,在多個(gè)條件從句只要符合其中的1個(gè)條件即可。

And 并且操作符:可以給where 子句添加多個(gè)條件進(jìn)行過(guò)濾。

Not 表示相反:可以在where子句 條件前邊添加 Not?關(guān)鍵字,表示相反

Distinct:去重

Order by:根據(jù)指定的列對(duì)結(jié)果集排序,可以接desc降序排列

Limit:用于規(guī)定要返回的數(shù)目

SELECT  Brand, Series, _50ML_雙11價(jià) FROM Perfume ORDER BY _50ML_雙11價(jià) DESC LIMIT 3;

Ifnull: 函數(shù)用于規(guī)定如何處理 NULL 值

SELECT  姓名,  (測(cè)試?yán)碚摰梅?+ IFNULL(SQL得分, 0) + QTP得分 + Selenium得分)  AS  各科考試總分 
FROM  軟件測(cè)試考試分?jǐn)?shù)表_重制版1
WHERE  姓名  =  '李四';

Group by:分組

SELECT  column_name,  aggregate_function(column_name) FROM  table_name  WHERE  column_name  operator  value GROUP  BY  column_name 

Having:只能和GROUP BY綁定使用

SELECT  商場(chǎng)專柜,  SUM(銷售價(jià)格)  AS  香水總銷售額 FROM  商場(chǎng)專柜銷售情況表 
GROUP  BY  商場(chǎng)專柜  HAVING  SUM(銷售價(jià)格)  >  500 ORDER  BY  香水總銷售額  DESC;

Case:?

case 條件  When [val1] then [result1 when [val2] then [result2] else [default] end
                           
如果符合條件1(val1)結(jié)果為(result1)
如果符合條件2(val2)結(jié)果為(result2)
                           ....
如果以上條件都不符合,則執(zhí)行else 中的語(yǔ)句。
                           
-- 統(tǒng)計(jì) 不及格,良,優(yōu) 各有多少人

-- 臨時(shí)表 可以將其它查詢的結(jié)果作為一個(gè)表來(lái)使用,數(shù)據(jù)庫(kù)中并沒(méi)有這個(gè)表。
SELECT score_level, count(score_level)  FROM
-- 創(chuàng)建臨時(shí)表
(SELECT 
    CASE    
        WHEN score< 60 THEN '不及格'
        WHEN score< 80 THEN '' 
        WHEN score<=100 THEN '優(yōu)' 
        ELSE '不合法'
    END AS score_level
from scores1100 ) as templevel
-- 臨時(shí)表結(jié)束
-- 分組
GROUP BY templevel.score_level;

?

檢查空值

使用 is null?來(lái)檢查空值。

SELECT name,python_score FROM score
-- 過(guò)濾Python成績(jī)?yōu)?空的信息
WHERE python_score is NULL;

同樣使用 is not null? 來(lái)過(guò)濾非空;

SELECT name,python_score FROM score
WHERE python_score is NOT NULL;

?

?

本文摘自 :https://www.cnblogs.com/

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >