1.第一范式(1NF):属性都是不可分割的数据项。
2.第二范式(2NF):1NF条件下,不存在部分依赖(都依赖或间接依赖于主键)。
3.第三范式(3NF):2NF条件下,非主键不存在传递依赖(都直接依赖于主键)。
4.巴斯范式(BCNF):3NF条件下,主键不存在传递依赖。
简单查询基本语法格式:
select [ALL|distinct]
[into 新表名]
from 表名/视图名
[where <条件表达式>]
[group by <列名>
having <条件表达式>]
[order by <列名> [ASC|DESC]]
1.内连接
select 列名... from 表 别名,表 别名 [where <条件表达式>]
select 列名... from 表名1 join 表名2 on 表名1.列名=表名2.列名
2.联合查询
select ......
union [All] //All->包括重复行
select ......
1.IN或NOT IN
select sno,sname from t_student where sno in(select sno from t_class)
2.比较运算符子查询
select ... from student where sage>(select AVG(sage) from student)
3.ANY或ALL
//ANY:大于任意一个(大于最小)
//ALL:大于任何一个(大于最大)
select sname,sage from student where sage>ANY(select sage from student where .....)
4.EXISTS/NOT EXISTS查询
//返回真假=>查询course中满足course.sno存在于sc.sno的行
select * from course
where exists(select * from sc where course.sno=sc.sno)
create [unique][clustered|nonclustered] index 索引名
on {表|视图} (列[ASC|DESC]...)
create view 视图名[(列名表)]
[with encryption] //加密
AS
select 语句
[with check option] //设权限
grant [select,insert,update,delete] on <表名> to <用户> //将<表名>的[select...]赋予<用户>
1.关系表操作(数据操作):insert、delete、update、select。
2.结构操作(数据库、数据表等结构):create、drop、alter。
//创建数据库
create database <数据库名>
//创建表
create table <数据表名>
//添加列
alter table <表名> add <列名> <数据类型>
//删除列
alter table <表名> drop <列名>
//修改列
alter table <表名> alter column <列名> <数据类型>
//修改约束
alter table <表名> add/drop constraint 约束名 [约束]
//增加
alter database <数据库名> add log file(...)
//修改
alter database <数据库名> modify file(...)
//删除
alter database <数据库名> remove file <文件名>
1.空值约束:NULL
2.主键约束:primary key
3.外键约束:foreign key
4.唯一值约束:unique
5.检查约束:check
6.默认约束:default
//定义变量。定义可连续,多个逗号隔开。
declare @<变量名> <变量类型>
//变量赋值
set @<变量名> = <值>
//使用变量
select @<变量名> as <别名>
//例子:
declare @para char(10)
set @para=(select sname from student where ...)
select @para as 变量名
//创建一个存储过程,procedure可简写成proc
create procedure <存储过程名称> [变量]
as
select 语句
GO
exec <存储过程名称>
//例子
if exists(select * from sys.procedures where name='存储过程名称')
drop proc <存储过程名称>
GO
create proc <名称> [变量][output] //output:作为输出变量
as
set [变量] ......//变量操作
//输出打印变量
print [输出变量] //输出变量:定义时加上output标签的变量
//查看存储过程的文本内容
exec sp_helptext <存储过程名称>
//存储过程改名
sp_rename <原名>,<新名称>
//创建触发器
create trigger <触发器名称>
on <表名>
after [insert,delete,...] //在......结果之后执行下面语句
as
print '输出数据' //代码块,事件执行
[rollback] //回滚
end
//查看<表>的触发器
exec sp_helptrigger <表名>
//查看内容
exec sp_helptext <触发器名称>
//删除触发器
drop trigger <触发器名称>