创建与使用数据表-SQL创建和操作表教材

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
REFERENCES 课程设置表(课号), FOREIGN KEY(学号)
REFERENCES 学生信息表(学号), CHECK(成绩 >= 0 AND 成绩 <= 100) );
6.3 修改表结构
已经建立的表格,如果不符合要求,可以进行修改。 SQLServer2008提供两种修改数据表的方法:
创建与使用数据表
复习
1.主键定义? 功能? 2.外键定义? 功能? 3.其他约束有哪些? 功能?
复习
பைடு நூலகம்
关系表
定义表:创建、修改、删除 操作表:插入、修改、删除
定义表的约束:主键、外键、NULL、 默认、Check、唯一性
方法:1.使用管理器 2.SQL代码
6.2.3 使用Transact-SQL创建数据表
7) NOT NULL ----非空约束
列的完整性约束说明
约束均为可选项,默认为NULL, [NULL | NOT NULL | PRIMARY KEY | DEFAULT |CHECK |UNIQUE | NOT NULL UNIQUE]
①NULL 空,默认值 ②NOT NULL 非空 ③PRIMARY KEY,当表中只有一个列是主键, 在该列数据类型说明后添加PRIMARY KEY
出版日期 DATETIME )
使用Transact-SQL语句创建表
使用Transact-SQL语句中的CREATE TABLE命令创
建表,其语法较完整格式:
CREATE TABLE <表名> (<列名1> <数据类型> [<列1的完整性约束>],
<列名2> <数据类型> [<列2的完整性约束>], …… <列名n> <数据类型> [<列n的完整性约束>], [<表的完整性约束>]);
例:课程设置表(课号,课程名称,学分) CREATE TABLE 课程设置表 (课号 CHAR(4) PRIMARY KEY ,
课程名称 varchar(40), 学分 INT DEFAULT(2) )
多主键约束案例:
例:成绩表(学号,课号,成绩) CREATE TABLE 成绩表 (学号 CHAR(10),
SQL Server Management Studio修改表 使用Transact-SQL语句修改表
6.3.1 使用SQL Server Management Studio修改数据表结构
修改数据表结构包括修改某列的数据类型、 列宽度、添加和删除某列、修改列的约束等。
选中表如Usercate右键设计打开设计界 面进行各类修改,约束设置
ALTER TABLE UserTb ADD UserOcc varchar(6) null
GO ALTER TABLE UserTb
ALTER COLUMN UserOcc varchar(6) not null
即设置了添加的列“UserOcc”非空。
【例6-6】在表“UserTb”中,添加一个禁用, 用于限制在【例6-4】中创建的约束。NOCHECK CONSTRAINT与ALTER TABLE一起使用,以禁用 该约束并使正常情况下会引起约束违规的插入 操作得以执行。CHECK CONSTRAINT重新启用该 约束。
⑦CHECK指出该列取值约束条件内的值,
格式:CHECK(<值约束条件的集合>)
例如:学生信息表(学号,姓名,性别,生日,籍贯,专 业号,班级)
CREATE TABLE 学生信息表 (学号 CHAR(10) PRIMARY KEY,
姓名 CHAR(8) NOT NULL, 性别 CHAR(2) CHECK(性别 =’男’ or 性别 =’ 女’)) DEFAULT(‘男’) , 生日 DATETime NOT UNLL, 籍贯 CHAR(20) DEFAULT(‘合肥’) , 专业代码 CHAR(4) NOT NULL, 班级 CHAR(4) NOT NULL );
③PRIMARY KEY SQL的句法:在该列数据类型说明后添加
PRIMARY KEY 例如:专业表(专业代码,专业名称)
CREATE TABLE 专业表 (专业代码 CHAR(4) PRIMARY KEY,
专业名称 VARCHAR(30) NOT NULL);
看看P80页 例题6-1
【例6-1】使用CREATE TABLE语句创建“Book”表,“Book” 表用存放图书的各种信息,包括图书编号、图书名称、图书类 别号、作者、出版社、出版日期、入库日期、价格、状态等属 性。 USE Library
) [ on { partition_scheme_name ( partition_column_name ) | filegroup | “default”}] [ TEXTIMAGE_ON{ filegroup | “default”}] 其中:<column_definition>包括: column_name <data_type> [ FILESTREAM ] [ COLLATE collation_name ] [ NULL | NOT NULL ] [ [ CONSTRAINT constraint_name ] DEFAULT constant_expression ] | [ IDENTITY [ ( seed ,increment ) ] [ NOT FOR REPLICATION ] ]
【例6-5】在“UserTb”表中添加一个字段 “UserOcc”表示读者的职业, varchar(6)。随后再删除掉:
ALTER TABLE UserTb ADD UserOcc varchar(6) null
GO ALTER TABLE UserTb
DROP COLUMN UserOcc
此处需要注意的是:当使用Alter Table 添加列 时,如果要求该列不为空,则必须要指定一个默认值, 否则不能添加成功。若不允许为空又不需指定默认值, 只能先添加一个允许为空的列,再通过alter column 修改该列为非空。如:
定义约束的类型的
1) CHECK约束 ----检测约束 2) DEFAULT约束 ----默认约束
定义约束是在创 建表或修改表的命 令中实现的
3) PRIMARY KEY约束 ----主键约束
4) FOREIGN KEY约束 ----外键约束 5) UNIQUE约束 ----唯一约束
6) NULL ----允许为空约束
表的完整性约束说明:
①主键约束子句 用于主键多于一个(<=16)属性 PRIMARY KEY(<主键列名1>[,<主键列名 2>,…<主键列名r>])
②外键约束子 本表列名 FOREIGN KEY (<列名1>) REFERENCES < 表名> (<列名2>)
主键表的表名
主键表对应列名
单主键约束案例:
REFERENCES 课程设置表(课号), FOREIGN KEY (学号)
REFERENCES 学生信息表(学号));
③检验约束子句 CHECK(值的约束条件 或包含SELECT语句的SQL语句)
注意:SQL语句以“;”号结束,在交互式使用 中是一条命令
例:成绩表(学号,课号,成绩) CREATE TABLE 成绩表 (学号 CHAR(9), 课号 CHAR(7), 成绩 INT DEFAULT(0), PRIMARY KEY (学号,课号), FOREIGN KEY(课号)
使用Transact-SQL语句创建表
【例】 利用CREATE TABLE命令创建“book”。
USE Library
GO
CREATE TABLE book
( 编号 CHAR(8) NOT NULL, ISBN号 CHAR(13) NOT NULL,
书名
VARCHAR(200),
定价
MONEY,
出版社 VARCHAR(200),
6.3.2 使用Transact-SQL修改数据表结构
使用T-SQL修改数据表结构的语法如下:
ALTER TABLE [database_name .[ schema_name ] .| schema_name.] table_name
{ [ ALTER COLUMN column_name
----修改列定义
----删除约束 ----删除列
| { CHECK | NOCHECK } CONSTRAINT { ALL | constraint_name } [ ,…n ]
----启用或禁用约束
| { ENABLE | DISABLE } TRIGGER { ALL | trigger_name [ ,…n ] }
[ ROWGUIDCOL ] [ <column_constraint> [ ...n ] ]
使用Transact-SQL语句中的CREATE TABLE 命令创建表,其语法最简格式如下:
表名
CREATE TABLE table_name (
Col_name column_properties [,…] )
CREATE TABLE Book ( BookId char(10) not null primary key, BookName varchar(50) not null, BkCateId varchar(6) not null, Author varchar(20) not null, Publish varchar(50) not null, PubTime date null, CheckIn date not null, Price money null, BookStatus char(2) not null )
使用T-SQL创建表的语法如下。
CREATE TABLE [ database_name .[ schema_name ] .| schema_name .] table_name ( { < column_definition > | < computed_column_definition >} [ < table_constraint >][,…n ]
| column_name AS computed_column_expression
} [ ,...n ]
| [ WITH CHECK | WITH NOCHECK ] ADD
----添加约束
{ < table_constraint > } [ ,…n ] | DROP
{ [ CONSTRAINT ] constraint_name | COLUMN column } [ ,…n ]
列名
列的数据类型及长度
提示:每个不同项目之间用空格隔开
可以有若干列,用 逗号分割开
使用Transact-SQL语句创建表
切换数据库命令: USE Library GO
提示:GO命令是一个批执行命令,后面会 详细解释…。执行上述命令后,后续的创建 表命令等命令,均在该数据库(Library库 )中运行。
课号 CHAR(4), 成绩 INT DEFAULT(0) , PRIMARY KEY (学号,课号))
多属性主键
多主键约束+外键案例:
例:成绩表(学号,课号,成绩) CREATE TABLE 成绩表 (学号 CHAR(10),
课号 CHAR(4), 成绩 INT DEFAULT(0) , PRIMARY KEY (学号,课号), FOREIGN KEY (课号)
----启用或禁用触发器
}
【例6-4】在“UserTb”表中,为“UserBkNum” 字段添加一个检查约束,所 输入的已借书数量必须大于等于零的约束代码:
USE Library Go
ALTER TABLE UserTb ADD CONSTRAINT U_check CHECK ( UserBkNum>=0 )
{ new_data_type [ (precision [,scale ] ) ]
[ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| { ADD | DROP } ROWGUIDCOL }
]
| ADD
----添加列
{ [ < column_definition >]
④DEFAULT设置缺省值,对暂时不输入数据的 数字列施加DEFAULT约束,以避免数据操作错 误,
格式:DEFAULT(<缺省值>) 例如: DEFAULT(0)
DEFAULT(‘男’) DEFAULT(‘2012-3-12’) ⑤UNIQUE 惟一性约束
⑥NOT NULL UNIQUE 该列非空且惟一
相关文档
最新文档