sql server笔记1(表的定义)
Posted 金石不渝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server笔记1(表的定义)相关的知识,希望对你有一定的参考价值。
准备SQL Server环境
/* 创建数据库Test /
CREATE DATABASE Test
GO
/ 创建登录名WANG,它的密码是“wang” /
CREATE LOGIN WANG WITH PASSWORD = ‘wang’
GO
/ 选择数据库Test,对该数据库执行操作 /
USE Test
GO
/ 创建用户WANG,把用户WANG映射到登录名WANG */
CREATE USER WANG FOR LOGIN WAN
定义schema
/* 为用户WANG定义一个模式S-T */
CREATE SCHEMA [S-T] AUTHORIZATION WANG;
删除 schema
DROP SCHEMA [S-T];
表的创立
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno,Cno),
/* 主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY (Sno) REFERENCES Student(Sno),
/* 表级完整性约束条件,Sno是外码,被参照表是Student /
FOREIGN KEY (Cno)REFERENCES Course(Cno)
/ 表级完整性约束条件, Cno是外码,被参照表是Course*/
);
schema 与 表
CREATE TABLE [S-T].Student(
Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
CREATE TABLE [S-T].Course(
Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES [S-T].Course(Cno)
);
CREATE TABLE [S-T].SC(
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno,Cno),
FOREIGN KEY (Sno) REFERENCES [S-T].Student(Sno),
FOREIGN KEY (Cno)REFERENCES [S-T].Course(Cno)
);
登录名、用户名、schema、table之间的关系
基本表的基本操作
添加行
向Student表增加“入学时间”列,其数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE;
修改类型
将年龄的数据类型由字符型(假设原来的数据类型是
字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;
索引建立
为学生-课程数据库中的Student,Course,SC三个
表建立索引。Student表按学号升序建唯一索引,Course表
按课程号升序建唯一索引,SC表按学号升序和课程号降序
建唯一索引
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC)
修改索引名
将SC表的SCno索引名改为SCSno
ALTER INDEX SCno RENAME TO SCSno;
删除索引名
删除Student表的Stusname索引
DROP INDEX Stusname;
约束条件
列值非空f(NOT NULL)
在定义SC表时,说明Sno、Cno、Grade属性不允
许取空值。
CREATE TABLE SC
( Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT NOT NULL,
PRIMARY KEY (Sno, Cno),
…
/* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在
列级不允许取空值的定义 可以不写 * /
);
列值唯一(UNIQUE)
建立部门表DEPT,要求部门名称Dname列取值唯
一,部门编号Deptno列为主码
CREATE TABLE DEPT
( Deptno NUMERIC(2),
Dname CHAR(9) UNIQUE NOT NULL,
/要求Dname列值唯一, 并且不能取空值/
Location CHAR(10),
PRIMARY KEY (Deptno)
);
检查列值是否满足一个条件表达式 CHECK
Student表的Ssex只允许取“男”或“女”。
CREATE TABLE Student
( Sno CHAR(9) PRIMARY KEY,
Sname CHAR(8) NOT NULL,
Ssex CHAR(2) CHECK (Ssex IN (‘男’,’女’)),
/*性别属性Ssex只允许取’男’或’女’ */
Sage SMALLINT,
Sdept CHAR(20)
)
check
当学生的性别是男时,其名字不能以Ms.打头。
CREATE TABLE Student
( Sno CHAR(9),
Sname CHAR(8) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),
PRIMARY KEY (Sno),
CHECK (Ssex=‘女’ OR Sname NOT LIKE ‘Ms.%’)
/定义了元组中Sname和 Ssex两个属性值之间的约束条件/
);
check 、 constraint 、 foreign key
. 使用“BETWEEN AND”方式创建约束check_grade
ALTER TABLE SC ADD CONSTRAINT “check_grade” CHECK
(Grade BETWEEN 0 AND 100)
请为SC表创建名为FK_SC_Student的外键,该外键引用
了表Student的Sno字段
ALTER TABLE SC ADD CONSTRAINT FK_SC_Student
FOREIGN KEY(Sno) REFERENCES Student(Sno)
以上是关于sql server笔记1(表的定义)的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server创建 学号 性别 课程编号 check约束 主键约束 UNIQUE约束