1.新建数据库
输入语句 CREATE DATABASE <数据库名>
CREATE DATABASE SCHOOL
点对勾检查一下语句是否正确,然后点执行再刷新就能在数据库里找到了
2.新建用户
在建好的数据库里新建用户WANG
点开数据库,找安全性,点开找用户,右键新建用户
先把用户名填好,然后按图片中的顺序操作
把登录名设置好后点确定就把用户建好了。
3.【例3.1】为用户WANG定义模式S-T
给用户WANG创建模式,语句:CREATE SCHEMA "S-T" AUTHORIZATION WANG
在执行前有一个非常需要注意的地方!!!因为用户WANG在数据库SCHOOL里,如果不是在那个新建数据库下就找不着用户WANG,所以要点那个倒三角改成SCHOOL。然后再执行那条语句就能新建S-T模式了。软件里模式就是架构,在架构那里就能找到了。
4.创建模式并建表
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
如果不指定模式名,那就在默认模式dbo下。
【例3.2】为用户ZHANG创建一个模式TEST,并且在其中定义一个表TAB1。
先新建ZHANG用户,然后新建查询,输入下边的语句(这些语句之前不要有别的语句),检查这里是不是SCHOOL,然后执行,刷新就完成了。
新建模式同时在这个模式下新建表:
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1 ( COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
在ZHANG用户下建立新的模式TEST,模式里新建一个表TAB1。效果如图
CREATE TABLE TEST.TAB2
(COL1 SMALLINT
)
下面展示一下默认模式:
CREATE TABLE TAB1 ( COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
还有一种是
CREATE TABLE TAB2
(COL1 SMALLINT
)
新建表但不说明在哪个模式下时,就是默认的dbo模式。
5.删除模式
【例3.4】DROP SCHEMA TEST CASCADE 该语句删除了模式TEST,同时,该模式中已经定义的表TAB1也被删除了。
但是这句语句在SQL Server中提示是语法错误
经过在官方文档SQL文档中查询,学习到删除架构,必须首先删除架构所包含的表!! 删除表的语句是:DROP TABLE <表名>
运行后,就删除了TEST以及包含的表TAB1.
6.【例3.5】建立“学生”表Student。学号是主码,姓名取值唯一
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);
【例3.7】建立一个学生选课表SC
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*/
);
【例3.8】向Student表增加“入学时间”列,其数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE;
【例3.9】将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;
ALTER TABLE Course ADD UNIQUE(Cname);
DROP TABLE Student CASCADE;
显示有语法错误,用去搜了一下,官方说不能使用 DROP TABLE 删除被 FOREIGN KEY(外码) 约束引用的表。 必须先删除引用 FOREIGN KEY 约束或引用表。 如果要在同一个 DROP TABLE 语句中删除引用表以及包含主键的表,则必须先列出引用表。我们知道删除Student表之前要先把SC表删除,因为SC表的外码是Student表中的。
删除语句应改写为
DROP TABLE SC
DROP TABLE Student;
【例3.12】若表上建有视图,使用RESTRICT时表不能删除;使用CASCADE时可以删除表,视图也自动删除。
创建基于Student的视图IS_Student:
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS';
DROP TABLE Student RESTRICT;
限制删除不能将这个表下的视图删除。
DROP TABLE Student CASCADE;
这两个语句都不能执行,语法错误。
在官方搜索了一下怎么删除视图,得到:使用 DROP TABLE 删除的表上的任何视图都必须使用 DROP VIEW显式删除。
DROP VIEW IS_Student;
DROP TABLE Student;