代码添加约束?
?
?
--》主键约束
alter table 表名 add constraint PK_表名_字段名 primary key(字段名)
--》唯一约束
alter table 表名 add constraint UNQ_表名_字段名 unique(字段名)
-->检查约束
alter table 表名 add constraint CK_表名_字段名 check(表达式)
-->默认约束
alter table 表名 add constraint DF_表名_字段名 default(默认值)for 字段
--》一次性批量添加约束
alter table 表名
add
constraint...,
constraint...,
constraint...,
.....
删除约束
? ?alter table 表名 drop constraint 约束名
?
?
2)创建表的同时就添加约束?
?
use itcast
go
create table MyTable
(
?id identity(1,1) primary key,
?[unique] int unique, ?-- 唯一约束 字段名与系统关键字冲突时加[] ?不加[]的时候字段中间有空格的话系统会认为是两个字段
?name nvarchar(10) not ? null,--非空约束
?Gender nvarchar(1) check(Gender='男' or Gender='女'), ?--检查约束
?isDel bit default(0) --默认约束
)
--修改表结构
--增加字段
alter table student add Fid int;
alter table Student add note nvarchar(max)
--修改字段的数据类型
alter table ?student alter column sex nvarchar(1) ? ? ? ?
--删除字段
alter table student drop column note
--》查看已有约束等
select * from sys.objects
?
3)外键表与主键表?
?
?
--关于外键(为了节省空间)
--首先建一个外键表
create table WaiJian
(
id int identity(1,1) primary key,
Fid int,
name nvarchar(10)
)
go
create table ZhuJian
(
Fid int identity(1,1)primary key,
name nvarchar(50)
)
go
--关联外键表(这两个键必须要是两个表的主键)
alter table WaiJian add constraint FK_WaiJian_ZhuJian_Fid
--设置主键
foreign key(Fid) references ZhuJian(Fid)
?
?
?
三、检索数据(查询) ?
?
use master
go
select * from Person
--找一招年龄在20岁以下的人
select * from Person where FAge<20
--找一找20岁以下的女孩
select * from Person where FAge<20 and FSex='女'
--找一下18到20岁之间的女孩
select * from Person where FAge>=18 and FAge<=20 and FSex='女'
--加上找20岁以上的男孩 ?(一般写的语法)
select
? FName ?姓名,Fsex ?性别,FAge as 年龄
from Person
where
? ? FAge>=18 and FAge<=20 and FSex='女'
or
? ? FAge>=20 and FSex='男' ;
go
--==================
--带条件查询
--=========================
select
print
--这两个都可以用来显示,只是select会以表的形式输出,而print的结果会显示在消息中
--=========
--以年龄进行排序
select * from Person order by FAge ? --不屑asc或desc就是默认的升序排序
--Top 数字 ;表示在查询出来的结果进行筛选,将浅“数字”个记录显示出来
select * from Person order by FAge desc
--再找前15个
select top 15 * from Person order by FAge desc
--再加个条件:性别为女的
select top 15 * from Person where FSex='女' order by FAge desc
--top后还可以跟一个百分比,表示查询百分之几的数据
select top 3 percent * from Person where FSex='女' order by FAge
?
--=========================?
--去除重复(只是显示的时候去除了,并没有真的删除了)?
select distinct * from Persom ?--如果有*号有ID号了系统就认为结果不是相同的
select distinct FName,FAge,FSex from Person ?--没有
--======================?
--聚合函数?
--最大值max?
--最小值min?
--平均值avg?
--总和sum?
--总数count?
--求年龄最大的人?
select max(FAge) from Person?
--最小的?
select min(FAge) from Person?
--平均?
select avg(FAge) from Person?
--总数?
select count(FName) from Person?
--求女的总数?
select count(FName) from person where FSex='女'?
select * from Person where FSex='女'?
--聚合函数使用的几个问题?
--avg?
--使用avg的时候,如果有一条记录(数据)为null,将不作为计算的数据源?
--count的问题?
--使用count(字段)的时候,如果针对某个字段,若该字段为null,不计入总数,?
--若使用count(*)则忽略该现象,会得到总的数据条数?
--求两个字段的平均?
select (Fid+FAge)/2 from Person?
--条件查询?
?
use MyDataBase15_31
go
select * from Person where gender='女' and age<20 and age>18 --条件:gender='女' 并且age<20 并且 age>18
--范围
select * from Person where gender='女' and age between 18 and 20 ?