一、測試題
二、複習
說明:sql中的函數分爲單行函數和分組函數
調用語法:select 函數名(實參列表);
1》字符函數
concat(str1,str2,..):拼接字符
substr(str,pos):截取從pos開始的所有字符, 起始索引從1開始
substr(str,pos,len):截取len個從pos開始的字符,起始索引從1開始
length(str):獲取字節個數
char_length(str):獲取字符個數
upper(str):變大寫
lower(str):變小寫
trim(【substr from】str):去前後指定字符,默認是去空格
left(str,len):從左邊截取指定len個數的 字符
right(str,len):從右邊截取指定len個數的 字符
lpad(str,substr,len):左填充
rpad(str,substr,len):右填充
strcmp(str1,str2):比較兩個字符的大小
instr(str,substr):獲取substr在str中第一次出現的索引
2》數學函數
ceil(x):向上取整
floor(x):向下取整
round(x,d):四捨五入
mod(x,y):取模/取餘
truncate(x,d):截斷,保留小數點後d位
abs(x):求絕對值
3》日期函數
now():獲取當前日期——時間
curtime():只有時間
curdate():只有日期
date_format(date,格式):格式日期爲字符
str_to_date(str,格式):將字符轉換成日期
datediff(date1,date2):獲取兩個日期之間的天數差
year(date)
month(date)
...
4》流程控制函數
①if(條件,表達式1,表達式2):如果條件成立,返回表達式1,否則返回表達式2
②case 表達式
when 值1 then 結果1
when 值2 then 結果2
...
else 結果n
end
③case
when 條件1 then 結果1
when 條件2 then 結果2
...
else 結果n
end
5、分組函數 ★
sum求和
avg平均
max最大
min最小
count個數
特點:
1》實參的字段的類型,sum和avg只支持數值型,其他三個可以支持任意類型
2》這五個函數都忽略null值
3》count可以支持以下參數
count(字段):查詢該字段非空值 的個數
count(*) :查詢結果集的行數
count(1):查詢結果集的行數
4》分組函數可以和distinct搭配使用,實現去重的統計
select count(distinct 字段) from 表;
6、分組查詢 ★
語法:
select 分組函數,分組的字段
from 表名
where 分組前的篩選條件
group by 分組列表
having 分組後的篩選條件
order by 排序列表;
特點:
1》分組列表可以是單個字段、多個字段
2》篩選條件分爲兩類
7、連接查詢 ★
說明:當查詢中涉及到了多個字段,則需要通過多表連接
笛卡爾乘積:
出現原因:沒有有效的連接條件
解決辦法:添加有效的連接條件
--------------------------SQL92語法------------------------
語法:
select 查詢列表 ①
from 表1 別名,表2 別名,... ②
where 連接條件 ③
and 篩選條件④
group by 分組列表⑤
having 分組後篩選⑥
order by 排序列表;⑦
執行順序:
②③④⑤⑥①⑦
--------------------------SQL99語法------------------------
1》內連接
語法:
select 查詢列表 ①
from 表1 別名②
【inner】 join 表2 別名 on 連接條件 ③
【inner】 join 表3 別名 on 連接條件
where 篩選條件 ④
group by 分組列表⑤
having 分組後的篩選⑥
order by 排序列表⑦
執行順序:
②③④⑤⑥①⑦
三、外連接
99語法纔有
full全連接
4、總結連接
5、
6、子查詢
單行子查詢
8、多行子查詢
any是任意一個的意思
<any
<max(salary)
表子查詢
10、分頁查詢
從0開始計數
聯合查詢
類型要相同
列數要相同,不可以不同
只有一一對應纔有意義
DDL語句
數據定義語言
修改數據庫就是表的修改
介紹常見的數據類型
總結
常見約束
一個表只能有一個主鍵
三個都選,則是三個有不同就可以
修改表