這段時間一直在做算法,有一段時間沒有用sql語句了。今天把以前學過的整理下自己好好的溫故下也希望能給那些剛學習sql的朋友一些幫助,純屬菜鳥級別的,還希望各位高人多提寶貴意見。
數據庫拆表原則:
1.簡單字段中的復合字段。解決方案:向上打通或者拆成兩表。
2.完全依賴:知道a就知道b,反過來就不一定。實現:將同一個主題東西放在一起,主題可以是一個實體、名詞、概念。
3.無傳遞依賴。將傳遞依賴轉為直接依賴。原因:減少插入冗余,減少增刪異常。
4.當出現一對多的時候不能橫拆,一定拆成兩個表,特別的固定范圍可以橫拆(簽到管理)。
5.多對多必有中間表。
6.代碼表,大量重復或枚舉的可以運用代碼表。
7.能計算的字段不要。
數據定義語句DDL
create alter drop
數據控制語句DCL
grant deny revoke
數據操作語句DML
select update insert delete
SQL語句應用集錦
Select變化集錦:
1.查詢所有的字段(效率低)
查詢所有的老師
select *
from dbo.teacher
2.字段枚舉
查詢老師的id 及姓名兩項
select teacher_id , teacher_name
from dbo.teacher
3.字段取別名方法有兩種使用as(as可以省略)和不使用
(1)select teacher_name as tN
from dbo.teacher
(2)select teacher_name = tN
from dbo.teacher
4.字段的可計算性
(1)簡單字段的計算
教師工資的10%
select salary*0.1
from dbo.teacher
(2)把一個檢索結果作為字段使用
本校學生和老師的比例
(select count(*)
from dbo.teacher)/0.1/
(select count(*)
from dbo.student)
5.檢索結果的前幾個使用top
select top 3 teacher_id
from dbo.teacher
6.取檢索結果總數的百分比
select top 30 percent teacher_id
from dbo.teacher
7.去掉重復的記錄
select distinct sex_id
from dbo.teacher
8.在聚合統計函數中統計出不重復指定字段
select count(distinct 系_id)
from dbo.teacher
9.case when then else end 在 select 中的應用
從教師表中查詢,將性別id是1的顯示成男,是2的顯示成女
select(
case
when sex_id = 1 then '男'
when sex_id = 2 then '女'
end
)
from dbo.teacher
橫向查詢男女數
select sum(
case
when sex_id = 1 then 1
else 0
end
)as 'man' ,
sum(
case
when sex_id = 2 then 1
else 0
end
)as 'wmen'
from dbo.teacher
10.可以重復列出表的字段
select *,*,*
from dbo.teacher
11.檢索結果放常量
select teacher_name , '出生于' , teacher_date
from dbo.teacher