数据类型:
datetime数据类型用来表示日期和时间。
char(n) 按固定长度存储字符串
varchar(n)它与char 类型相似,存储大小为输入数据字节的实际长度。
text数据类型用于存储大量文本数据,
create table table_name
(
学号 int primary key identity ,
名称 char(6) not null,
专业方向 varchar(10) not null,
系部代码 char(2) not null,
备注 varchar(50)
)
EXEC sp_help table_name //查看表的信息
EXEC sp_rename 'old_table_name','new_table_name'//修改表的名字
alter table 表名 //增加主键
add constraint pk
primary key clustered (列名)
alter table 表名 //增加外键
add constraint wz
foreign key (列名)
references t1(列名)
create table 专业
(
专业代码 char(4) not null primary key identity,
专业名称 varchar(20) not null,
系部主任 char(6) constraint wzll references 系部(系部代码)
)
在表之间有约束关系时,删除表必须从随从表开始删除
INSERT oldtable VALUES('刘','软件','软','没有')
DELETE from oldtable WHERE 学号=201
insert into oldtable(姓名,专业方向,系部代码) select 姓名,专业方向,系部代码 from oldtable
update oldtable set 姓名='王康' where 姓名='刘谨'
去掉结果集中重复的行,用distinct
select distinct 姓名 from oldtable
常用的查询条件:
查询条件
运算符 意义
运算符 意义
比较
=、>、<、>、!=、<> 比较大小
=、>、<、>、!=、<> 比较大小
确定范围
BETWEEN...AND...、 判断范围
BETWEEN...AND...、 判断范围
NOT BETWEEN...AND...
确定集合
IN、NOT IN 判断值是否为列表中的值
IN、NOT IN 判断值是否为列表中的值
字符匹配
LIKE、NOT LIKE( %、_ )
判断值是否与指定的字符通配格式相符
LIKE、NOT LIKE( %、_ )
判断值是否与指定的字符通配格式相符
空值
IS NULL、IS NOT NULL
判断是否为空
IS NULL、IS NOT NULL
判断是否为空
多重条件
AND、OR、NOT 用于多重条件判断
AND、OR、NOT 用于多重条件判断
select * into newtable from oldtable
对查询结果进行分组用group by
若要加上限制条件用having
select 专业方向 from oldtable
group by 专业方向 having 专业方向<>'动漫'
对查询结果进行排序用order by;升序用ASC,降序用DESC,默认是升序
对查询结果进行统计,count(),sum(),avg(),max(),min()
select min(分数) as 最低分数 from oldtable
select 系部代码,count(系部代码) 系部总人数
from oldtable
group by 系部代码
连接查询
交叉查询
自然连接
自身连接需要制定别名
子查询in,带有比较运算符的子查询
带有any或all 的子查询
带有exists的子查询
数据的完整性:数据的精确性和可靠性。
数据的完整性包括:a,实体完整性:规定表中每一行在表中是表中唯一的实体。
b,域完整性:是指数据表中的字段必须满足某种特定的数据类型
c,参照完整性:是指两个表的主键和外键的数据对应一致。
d,用户定义的完整性:用户定义的约束条件
SQL SERVER中支持6类约束:NOT NULL(非空)约束、
CHECK(检查约束):可以检查约束对输入的数据的值做检查,可以限定数据输入,维护数据的域完整性
UNIQUE(唯一约束)、
PRIMARY KEY(主键约束)、
FOREIGN KEY(外键约束)
DEFAULT(默认约束)
增加唯一约束:
ALTER TABLE 表名称
ADD CONSTRAINT 唯一约束的名称
UNIQUE NONCLUSTERED(字段名称)
增加检查约束:
ALTER TABLE 表名称
ADD CONSTRAINT 约束名称
CHECK(条件)
如:alter table student
add constraint ckk
check(高考分数>300 and 高考分数<600)
创建默认约束:
ALTER TABLE 表名称
ADD CONSTRAINT 约束名称
DEFAULT '默认值' FOR 列名
删除约束:
ALTER TABLE 表名称
DROP CONSTRAINT 约束名称
检查约束,默认约束-->约束
主键约束,唯一约束-->索引
完整性规则:
1,创建规则
create rule 规则名称
as
@a>200 and @a<600
2,绑定规则
EXECUTE SP_bindrule '规则名称','表名.字段名'
3,解除绑定
EXECUTE SP_unbindrule '表名.字段名'
4,删除规则
drop rule 规则名称
规则一次创建多个表使用,检查完整性一次创建一次使用
默认绑定:
1,创建绑定
CREATE DEFAULT 默认名称
as '男'
2,绑定
EXECUTE sp_bindefault 默认名称, '表名.字段名'
3,解除绑定
EXECUTE sp_unbindefault '表名.字段名'
4,删除
DROP DEFAULT 默认名称
索引:
优点:加快查询速度,缺点:浪费存储空间
聚集索引:是指数据行在表中的物理存储顺序。表中数据会按该列进行重新排
序,然后再存储到磁盘上。每个表只能创建一个聚集索引。
序,然后再存储到磁盘上。每个表只能创建一个聚集索引。
非聚集索引:数据存储在一个地方,索引存储在另一个地方,索引带有指针指
向数据的存储位置。
向数据的存储位置。
1,创建索引
create [UNIQUE][CLUSTERED][NONCLUSTERED] INDEX 索引名
ON 表名(列名)
2,查看索引信息
EXEC sp_helpindex 表名
3,删除索引
DROP INDEX 表名.索引名
视图:
1,创建视图
CREATE VIEW 视图名
WITH [ENCRYPTION] [SCHEMABTNDING]
AS 查询语句
--[ENCRYPTION]
加密视图
加密视图
--[SCHEMABINDING]
视图及表的架构绑定
视图及表的架构绑定
如:
create view 架构绑定名
create view 架构绑定名
with schemabinding
as
select 姓名 from dbo.student
2,查看视图
EXEC sp_helptext 视图名
3,删除视图
DROP VIEW 视图名
存储过程:
存储过程由一组预先编辑好的SQL语句组成。将其放在服务器上,由用户通过指定存储过程的名称来执行。
create proc 存储过程
as
select * from student
exec 存储过程
触发器:
触发器是一种特殊类型的存储过程,它不是由用户直接调用的,而是当用户对数据进行操作时(包括数据的insert,update,delete操作)是自动执行。
优点:
1,触发器自动执行在对表中的数据做了任何修改之后立即被激活。
2,触发器能够对数据库中的相关表实现级联更改。
如:
1,创建触发器:
create trigger mydelete(触发器名)
on 产品(表名)
for delete
as
declare @a char(10)
select @a=产品编号 from deleted(被删除记录的临时表)
delete 产品销售(表名) where 产品编号=@a
create trigger myinsert
on 产品
for insert
as
declare @a char(10)
select @a=产品编号 from inserted
insert into 产品销售 values(@a,0)
2,查看触发器:
exec sp_helptrigger 产品(表名)
3,删除触发器:
drop trigger mydelete(触发器名称)
函数:
1,聚合函数:
AVG()--平均值
COUNT()--返回行中项目的数量
MAX()--最大值
MIN()--最小值
SUM()--求和
2,数学函数:
select abs(-8) --返回绝对值
select ceiling(x)--返回大于或等于所给数的最小整数
select pi()--PI值
select power(x,y)-- 返回x的y次方
select RAND()--返回0~1之间的随机数
3,配置函数
select @@version--数据库的版本
select @@language--语言
4,时间函数
select getdate()--取出当前时间
select day(getdate())--取出天
select month(getdate())--取出月
select year(getdate())--取出年
5,排名函数
rank() over (order by 列名)
如:select 姓名,rank() over (order by 高考分数 desc) as 名次,高考分数 from 学生