相关文章链接:
一周速学SQL Server(第一天)
一周速学SQL Server(第四天)
一周速学SQL Server(第六天)
一、数据库约束
1.1、约束定义
规定表中的数据规则。如果存在违反约束的数据行为,行为就会被阻止。
1.2、何时创建约束
1)使用软件创建表之后创建约束;
2)使用脚本创建约束可以在创建的过程中,也可以在创建后来建立约束。
二、约束分类
2.1、主键 Primary Key约束
唯一性 非空 不能被修改
2.2、外键 Foreign Key约束
用来加强两个表中的一列或多列数据之间的连接的。先建立主表的主键,再建立从表中的外键。
只有主表中的主键才能被从表用来作为外键使用。
主表限制了从表更新和插入操作。当删除主表中的某条数据,应该先删除从表中的相关数据,再删除主表。
2.3、Unique约束
唯一性约束,确保表中的一列数据没有相同的值。
与主键约束相似,但又不同。主键只能有一个,但一个表中可以有多个唯一性约束。
唯一键可以为NULL,但主键不行。
2.4、Check约束
通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。
2.5、Default约束:默认值约束
用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果没有设置默认值,系统就会默认为NULL。
三、数据库脚本
3.1、定义
定义:用于创建数据库对象但语句集合。
3.2、T-SQL(Transact-SQL)
1)定义:基于SQL(Structured Query Language)结构化查询语言,用于应用程序和数据库之间沟通的编程语言。
2)SQL Server支持的脚本语言。
3.3、SQL语言
一种有特殊目的的编程语言,用于存取数据、查询、更新和管理关系数据库,高级的非过程化的编程语言。
作用:可以完成移植,提高数据访问效率,完成对数据的相关处理。
3.4、SQL语言分类
1)DQL(数据查询语言)
语法固定结构:
Select 列 From 表名 where 条件
2)DML(数据操纵语言)
Insert插入:
Insert into 表名 (列,列,...) values(对应的值,对应的值)
Update更新:
update 表明 set 列名=值,列名=值 where 条件
Delete删除:
delete from 表明 where 条件
3)DDL(数据定义语言):创建数据库及其对象的一种语言
Create/Alter/Drop Database/Tbale/View/Proc/Index
4)DCL(数据控制语言)用于授予或回收访问数据库某种特权,对数据库实行监视等。
commit 提交
rollback 回滚
grant 授权
四、脚本创建数据库
4.1、为什么要创建新的数据库要选择master?
master:系统数据库,它记录列SQL Server系统的所有系统级信息,还记录列所有其他数据库的存在,数据库的位置,以及SQL Server的初始化信息。
4.2、使用脚本创建数据库
五、T-SQL创建表
5.1、表信息准备
1)产品信息表:标识列,int
编号,varchar(50)
名称,nvachar(50)
产品类型,TypeId int
价格,decimal(18,2)
数量,int
2)产品类型表:编号,TypeId int
名称,navarchar(20)
5.2、脚本创建表
同一个数据库下,不能有两张表同名
5.3、脚本删除表
六、T-SQL修改表
6.1、直接在原来的脚本基础上进行修改(一般都不采用)
先把脚本代码进行修改,再删除原来的表,然后再执行创建表的脚本代码。
6.2、alter table进行修改
1)添加一列
alter table 表名 add 列名 数据类型 是否为空
2)删除一列
alter table 表名 drop column 列名
3)修改一列:一般不要修改列名,在设计时定义好就不要随意改动。一般修改的都是数据类型,是否为空等。
alter table 表名 alter column 列名 类型 是否为空
七、T-SQL创建约束
7.1、在创建表的过程中创建约束
1)主键约束 primary key
2)外键约束 foreign key references 主表名(主键列名)
3)unique约束(唯一约束) unique
4)default约束 default(‘ ’)
7.2、在创建表完成后再创建约束
1)主键约束
alter table 表名 add constraint 约束名 primary key(列名)
2)外键约束
alter table 表名 add constraint 约束名 foreign key(列名)references 主表(列名)
3)唯一性约束
alter table 表名 add constraint 约束名 unique(列名)
4)check约束
alter table 表名 add constraint 约束名 check(逻辑表达式)
5)default约束
alter table 表名 add constraint 约束名 default(默认值)for 列名
八、T-SQL插入数据
8.1、单条数据插入
1)方式1: insert(into)表名(列名,列名,...)values(值,值,....)
2)方式2: insert(into)表名(列名,列名,...)select'值,值,...'
8.2、多条数据插入
union去除重复 union all允许重复
8.3、克隆表数据
九、T-SQL修改删除数据
9.1、更新数据
更新数据update几乎都会用到where条件
如:update Test set MName=‘sss’,Age=30
Where Id=5(and | or)条件
主键不可以修改
如果不加where条件,会把整张表的数据都修改了。
9.2、删除数据
1)只是删除数据,表还在
delete from Table 不加条件,会删除整个表数据,几乎都要加where条件。
delete会造成标识列的值不连续(标识列的值还是删除前的值而自增,而不是从初始值开始的)。
如:delete from Test where Id = 20
2)连同表一起删除
若想删除数据,让标识列的值恢复到初始值需使用truncate。
truncate table Test 表数据清空,恢复到初始化,标识列也恢复。
注意:慎用truncate,一旦删除,不可恢复。
十、T-SQL单表查询
10.1、查询所有数据
(*代表所有列):select * from 表名
10.2、查询表的部分数据
通常情况下只需要部分列的数据(推荐):
select 需要查询的列1,需要查询的列2 from 表名 where 条件
10.3、列命别名:为了解决程序中需要显示中文列名情况
数据库里表字段一般都为英文名称,程序中要求列名为中文,解决办法:给列别名
如:Select UserId as 用户编号,--法1:列名 as 别名
UserName 用户名, --法2:列名 别名
年龄=Age from UserInfos --法3:别名=列名
10.4、排序 order by
注意:不管是否有条件,还是分组,order by永远放在最后
1)主键默认从小到大排序(asc):order by 列名 asc
2)降序(desc):order by 列名 desc