这段时间一直在做算法,有一段时间没有用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
posted on 2010-03-31 23:33
zZ的家伙 阅读(115)
评论(0) 编辑 收藏 所属分类:
sql语句