【例9.1】为stu_info表定义一个规则,指定其成绩列的值必须大于0,小于100,输入语句如下。
USE test;
GO
CREATE RULE rule_score
AS
@score > 0 AND @score < 100
【例9.2】将创建的rule_score规则绑定到stu_info表中的s_score列上,输入语句如下。
USE test;
GO
EXEC sp_bindrule 'rule_score', 'stu_info.s_score'
【例9.3】向stu_info表中插入一条记录,该条学生记录的成绩值为110,输入语句如下。
INSERT INTO stu_info VALUES(21,'鹏飞',110,'男',18);
SELECT * FROM stu_info;
【例9.4】解除stu_info表中s_score列上的规则绑定,输入语句如下。
EXEC sp_unbindrule 'stu_info.s_score'
【例9.5】删除前面创建的名称为rule_score的规则,输入语句如下。
DROP RULE rule_score;
【例9.6】在stu_info表中创建默认值,输入语句如下。
CREATE DEFAULT defaultSex AS '男'
【例9.7】将defaultSex默认值绑定到stu_info表中的s_sex列,输入语句如下。
USE test;
GO
EXEC sp_bindefault 'defaultSex', 'stu_info.s_sex'
【例9.8】向stu_info表中插入一条记录,不指定性别字段,输入语句如下。
INSERT INTO stu_info (s_id,s_name,s_score,s_age) VALUES(21,'王凯',90,19);
SELECT * FROM stu_info;
【例9.9】取消stu_info表中s_sex列的默认值绑定,输入语句如下。
USE test;
GO
EXEC sp_unbindefault 'stu_info.s_sex'
【例9.10】删除前面创建的名称为defaultSex的默认值,输入语句如下。
DROP DEFAULT defaultSex;
【例9.11】定义数据表tb_emp2,其主键为id,SQL语句如下:
CREATE TABLE tb_emp2
(
id INT PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
);
【例9.12】定义数据表tb_emp 3,其主键为id,SQL语句如下:
CREATE TABLE tb_emp3
(
id INT NOT NULL,
name VARCHAR(25) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
CONSTRAINT 员工编号
PRIMARY KEY(id)
);
【例9.13】定义数据表tb_emp4,创建完成之后,在该表中的id字段上添加主键约束,输入语句如下。
CREATE TABLE tb_emp4
(
id INT NOT NULL,
name VARCHAR(25) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
);
该表创建时没有指定主键,创建完成之后,执行下面的添加主键的语句。
USE company;
GO
ALTER TABLE tb_emp4
ADD
CONSTRAINT 员工编号
PRIMARY KEY(id)
【例9.14】定义数据表tb_emp5,假设表中间没有主键id,为了唯一确定一个员工,可以把name、deptId联合起来做为主键,SQL语句如下:
CREATE TABLE tb_emp5
(
name VARCHAR(25),
deptId INT,
salary FLOAT,
CONSTRAINT 姓名部门约束
PRIMARY KEY(name,deptId)
);
【例9.15】删除tb_emp5表中定义的联合主键,输入语句如下。
ALTER TABLE tb_emp5
DROP
CONSTRAINT姓名部门约束
【例9.16】定义数据表tb_emp6,并在tb_emp6表上创建外键约束。
创建一个部门表tb_dept1,SQL语句如下:
CREATE TABLE tb_dept1
(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50) NULL
);
定义数据表tb_emp6,让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句为:
CREATE TABLE tb_emp6
(
id INT PRIMARY KEY,
name VARCHAR(25),
deptId INT,
salary FLOAT,
CONSTRAINT fk_员工部门编号 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);
【例9.17】如前面例子,如果创建是不设置外键约束,则创建表完成之后,可输入如下语句。
USE company;
GO
ALTER TABLE tb_emp6
ADD
CONSTRAINT fk_员工部门编号
FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
【例9.18】删除tb_emp6表中创建的“fk_员工部门编号”外键约束,输入语句如下。
ALTER TABLE tb_emp6
DROP CONSTRAINT fk_员工部门编号;
【例9.19】定义数据表tb_dept2,指定部门的名称唯一,SQL语句如下:
CREATE TABLE tb_dept2
(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(22) NOT NULL UNIQUE,
location VARCHAR(50)
);
【例9.20】定义数据表tb_dept3,指定部门的名称唯一,SQL语句如下:
CREATE TABLE tb_dept3
(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
CONSTRAINT 部门名称 UNIQUE(name)
);
【例9.21】创建tb_emp7表中,定义员工的工资列值大于1800小于3000,创建CHECK约束,输入语句如下。
CREATE TABLE tb_emp7
(
id INT PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT NOT NULL,
salary FLOAT NOT NULL
CHECK(salary > 1800 AND salary < 3000)
);
【例9.22】定义数据表tb_emp8,指定员工的部门编号默认为1111,SQL语句如下:
CREATE TABLE tb_emp8
(
id INT PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT DEFAULT 1111,
salary FLOAT,
);
USE test;
GO
CREATE RULE rule_score
AS
@score > 0 AND @score < 100
【例9.2】将创建的rule_score规则绑定到stu_info表中的s_score列上,输入语句如下。
USE test;
GO
EXEC sp_bindrule 'rule_score', 'stu_info.s_score'
【例9.3】向stu_info表中插入一条记录,该条学生记录的成绩值为110,输入语句如下。
INSERT INTO stu_info VALUES(21,'鹏飞',110,'男',18);
SELECT * FROM stu_info;
【例9.4】解除stu_info表中s_score列上的规则绑定,输入语句如下。
EXEC sp_unbindrule 'stu_info.s_score'
【例9.5】删除前面创建的名称为rule_score的规则,输入语句如下。
DROP RULE rule_score;
【例9.6】在stu_info表中创建默认值,输入语句如下。
CREATE DEFAULT defaultSex AS '男'
【例9.7】将defaultSex默认值绑定到stu_info表中的s_sex列,输入语句如下。
USE test;
GO
EXEC sp_bindefault 'defaultSex', 'stu_info.s_sex'
【例9.8】向stu_info表中插入一条记录,不指定性别字段,输入语句如下。
INSERT INTO stu_info (s_id,s_name,s_score,s_age) VALUES(21,'王凯',90,19);
SELECT * FROM stu_info;
【例9.9】取消stu_info表中s_sex列的默认值绑定,输入语句如下。
USE test;
GO
EXEC sp_unbindefault 'stu_info.s_sex'
【例9.10】删除前面创建的名称为defaultSex的默认值,输入语句如下。
DROP DEFAULT defaultSex;
【例9.11】定义数据表tb_emp2,其主键为id,SQL语句如下:
CREATE TABLE tb_emp2
(
id INT PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
);
【例9.12】定义数据表tb_emp 3,其主键为id,SQL语句如下:
CREATE TABLE tb_emp3
(
id INT NOT NULL,
name VARCHAR(25) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
CONSTRAINT 员工编号
PRIMARY KEY(id)
);
【例9.13】定义数据表tb_emp4,创建完成之后,在该表中的id字段上添加主键约束,输入语句如下。
CREATE TABLE tb_emp4
(
id INT NOT NULL,
name VARCHAR(25) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
);
该表创建时没有指定主键,创建完成之后,执行下面的添加主键的语句。
USE company;
GO
ALTER TABLE tb_emp4
ADD
CONSTRAINT 员工编号
PRIMARY KEY(id)
【例9.14】定义数据表tb_emp5,假设表中间没有主键id,为了唯一确定一个员工,可以把name、deptId联合起来做为主键,SQL语句如下:
CREATE TABLE tb_emp5
(
name VARCHAR(25),
deptId INT,
salary FLOAT,
CONSTRAINT 姓名部门约束
PRIMARY KEY(name,deptId)
);
【例9.15】删除tb_emp5表中定义的联合主键,输入语句如下。
ALTER TABLE tb_emp5
DROP
CONSTRAINT姓名部门约束
【例9.16】定义数据表tb_emp6,并在tb_emp6表上创建外键约束。
创建一个部门表tb_dept1,SQL语句如下:
CREATE TABLE tb_dept1
(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50) NULL
);
定义数据表tb_emp6,让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句为:
CREATE TABLE tb_emp6
(
id INT PRIMARY KEY,
name VARCHAR(25),
deptId INT,
salary FLOAT,
CONSTRAINT fk_员工部门编号 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);
【例9.17】如前面例子,如果创建是不设置外键约束,则创建表完成之后,可输入如下语句。
USE company;
GO
ALTER TABLE tb_emp6
ADD
CONSTRAINT fk_员工部门编号
FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
【例9.18】删除tb_emp6表中创建的“fk_员工部门编号”外键约束,输入语句如下。
ALTER TABLE tb_emp6
DROP CONSTRAINT fk_员工部门编号;
【例9.19】定义数据表tb_dept2,指定部门的名称唯一,SQL语句如下:
CREATE TABLE tb_dept2
(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(22) NOT NULL UNIQUE,
location VARCHAR(50)
);
【例9.20】定义数据表tb_dept3,指定部门的名称唯一,SQL语句如下:
CREATE TABLE tb_dept3
(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
CONSTRAINT 部门名称 UNIQUE(name)
);
【例9.21】创建tb_emp7表中,定义员工的工资列值大于1800小于3000,创建CHECK约束,输入语句如下。
CREATE TABLE tb_emp7
(
id INT PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT NOT NULL,
salary FLOAT NOT NULL
CHECK(salary > 1800 AND salary < 3000)
);
【例9.22】定义数据表tb_emp8,指定员工的部门编号默认为1111,SQL语句如下:
CREATE TABLE tb_emp8
(
id INT PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT DEFAULT 1111,
salary FLOAT,
);
--课后练习
--create database Market
--use Market
--create table customers
--(
-- c_id int primary key not null,
-- c_name varchar(50),
-- c_contact varchar(50),
-- c_city varchar(50),
-- c_birth datetime not null
--);
--create table orders
--(
-- o_num int not null,
-- o_date date,
-- c_id int
-- constraint 员工部门编号 foreign key(c_id) references customers(c_id)
--)
--use Market
--go
--alter table orders
--add
--constraint 数目
--primary key(o_num)
--alter table orders
--drop constraint 数目;
--alter table orders
--drop constraint 员工部门编号;

2897

被折叠的 条评论
为什么被折叠?



