SQL基础知识(二)
1.数据表的操作
1)常用的约束
PRIMARY KEY 约束
UNIQUE 约束
FOREIGN KEY 约束
DEFAULT
CHECK 约束
2)常用系统存储过程
exec sp_helpdb test /*查看数据库信息*/
exec SP_HELP table2 /*查看表信息*/
exec sp_helpconstraint table2 /*查看表的约束信息*/
exec sp_helpindex table2 /*查看索引信息*/
2.什么时候建立索引
1)一般主键上建立,因为经常考主键读取数据
2)外键上建立,因为外键可能牵涉到表与表之间连接,建立之后有助于操作
3)经常在一定范围了查找的字段上操作
4)经常用到order by 或group by的字段上建立
5)不要再经常修改,删除,跟新的字段上建立聚集所以
6)一张表只能建立一个聚集索引,但是可以建立249个非聚集索引
3.数据的查询
1)连接分类:内连接,左外连接,右外连接,全外连接,自连接,交叉连接(笛卡尔积),合并连接。
2)一个SQL可能用到:select count(*) top all distinct * from where group by having order by asc desc
3)模糊查询的几个通配符 % 任意多个 _单个 []在括号中的一个 [^]没在括号中的一个
转义符 select * from admin where percent like '20/%' escape '/' (这把%转义成正常字符,比通配符效率高)
4)常用聚合函数 sum() avg() count() max() min()
distinct与聚合函数的连用 select count(distinct num) from table
要用order by 对用了distinct的sql语句,那么order by 的字段必须出现在select字段中
5)联合查询 select * from table1 union select * from table2
6) IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
m)一些提高查询的写法
在检索时判断某字段是否为空时用 is null 或 is not null 不要用where 字段=null
n)一些降低查询效率的写法
用not between .. and ..
用not in 会一定程度上减低效率
4.视图
1)不能再视图上创建索引,视图主要用于查找,如果对于简单视图(单表),可以进行增删改,但对于多个基表的时候希望实现增删改则不行,解决办法是在视图上创建instead of触发器来执行基表的操作。
2)在视图中不能用order by语句,除非在select语句中用了top
5.Transact-SQL
1)一些易用的关键词
any all exists some
2)逻辑控制
begin ... end 相当于{},构成一个单独的块
if ... else ... if ... else
case举例
declare @id
select @id= case when 条件 then 函数块
when 条件 then 函数块
................................
else 函数块
end
while 条件 begin 代码块 end
break
continue
goto 这个要设置标识。 比如定义了标识 GZ: 就可以写 goto GZ
return
6.常用函数
1)类型转换
cast(表达式 as 数据类型)
convert(数据类型[length],表达式)
2)时间函数
dateadd(datepart,number,date)--给指定时间添加大小
datediff(datapart,starpart,endpart) --指定2个时间的时间差距
getdate()获取系统当前时间
3)用户自定义函数

浙公网安备 33010602011771号