SQL Server 知识梳理二 表的管理

来源:互联网 发布:网络建设的需求及分析 编辑:程序博客网 时间:2024/05/16 01:31


一、数据类型(常用)

 

数据类型

含义

CHAR(n)

长度为n的定长字符串

VARCHAR(n)

最大长度为n的变长字符串

INT

存储正负整数(-2E31~2E32)

SMALLINT

存储正负整数(-32768~32767)

TINYINT

存储小范围的正整数(0~255)

NUMERIC(p,d)

定点数,由p位数字(不包含符号、小数点)组成,小数点后面d位数字

FLOAT(n)

浮点数,精度至少为n位数字

DATETIME

日期

 

二、完整性约束

1、说明

①不允许取空值(NOT NULL)

②列值唯一(UNIQUE)

③指定列值应该满足的条件(CHECK)

④缺省(默认)(DEFAULT)

 

三、创建表

1、语法

CREATE TABLE <表名>

(<列名> <数据类型>[ <列级完整性约束条件> ]

[,<列名> <数据类型>[ <列级完整性约束条件>] ]

 …

[,<表级完整性约束条件> ] );

 

注:如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

2、实例

create table 学生表

(学号 varchar(6)primarykey,

姓名 varchar(10),

性别 varchar(2)default'',

出生日期 datetime,

政治面貌 varchar(10)default'党员',

籍贯 varchar(10),

所在系 varchar(4))

create table 选课表(

学号 varchar(6)primarykey,

课程号 varchar(4),

成绩 tinyint check (成绩 between 0 and100),

foreign key (学号)references学生表(学号))

create type address from char(40)null

 

create table student

(Sno char(8) primary key,

Sname char(8)notnull,

Ssex char(6)notnull,

Sbirthday datetimenotnull,

Sage as year(getdate())-year(Sbirthday),

Saddress address,

Sphoto image,

Smemory varchar(100))

 

四、修改表

1、语法

(1)增加新列

ALTER TABLE 表名

ADD 列名 数据类型 完整性约束

(2)修改列的类型

ALTER TABLE 表名    

ALTER COLUMN 列名 数据类型

(3)增加约束条件

ALTER TABLE 表名

ADD 完整性约束

(4)删除指定列

ALTER TABLE 表名   

DROP COLUMN 列名

(5)删除指定的完整性约束条件

ALTER TABLE 表名

DROP 完整性约束名

(6)修改列名

exec sp_rename 表名.列名', '表名.新列名',’column’

(7)修改表名

exec sp_rename '旧表名', '新表名 '

2、实例

(1)增加新列

①给学生表添加新字段‘手机号码’,并设置唯一值约束

alter table 学生表

add 手机号码 char(11) unique

(2)修改列的类型

①将学生表的‘手机号码’字段长度改为11

alter table 学生表

alter column 手机号码 char(11)

(3)增加约束条件

①给学生表的籍贯字段添加默认值约束,默认值为“陕西”

alter table 学生表

add default '陕西' for 籍贯

②对StudentCourse表的Score进行CHECK约束:Score必须在0至100之间。

alter table StudentCourse

add check (Score>=0andScore<=100)

③对Teaching表定义外键约束

alter table Teaching

add foreign key (Tno)referencesTeacherInfo(Tno)

(4)删除指定列

①删除学生表的‘手机号码’字段

alter table 学生表

drop column 手机号码

(5)修改列名

①把学生表的“姓名”列改名为“学生姓名”

exec sp_rename'学生表.姓名','学生姓名','column'

(6)修改表名

①把“学生表”改名为“studentinfo”

exec sp_rename'学生表','studentinfo'

 

五、删除表

1、语法

(1)删除表的记录,保留表的结构,写日志可以恢复

①语法:DELETE FROM <表名>[WHERE <条件>]

(2)删除表的所有记录,保留表的结构,不写日志,无法恢复,速度快

①语法:TRUNCATE TABLE <表名>

(3)删除表的结构和数据

①语法:DROP TABLE <表名>[RESTRICT| CASCADE]

②注解:

l  RESTRICT:删除表是有限制的。欲删除的基本表不能被其他表的约束所引用。若存在依赖该表的对象,则此表不能被删除。

l  CASCADE:删除该表没有限制。在删除基本表的同时,相关的依赖对象一起删除。

2、实例

①删除选课表

drop table 选课表

②删除选课表的内容

方法一:

truncate tablestudent

方法二:

delete from student