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查询问题。

sql几道题希望回答一下

SQL Server创建 学号 性别 课程编号 check约束 主键约束 UNIQUE约束

sql 升序降序排列

你可能不知道SQL Server索引列的升序和降序带来的性能问题

SQL Server学习笔记——存储过程