操作对象 | 操作方式 |
---|---|
模式 | 创建CREATE SCHEMA 删除DROP SCHEMA |
表 | 创建 CREATE TABLE 删除 DROP TABLE 修改 ALTER TABLE |
索引 | 创建 CREATE VIEW–删除 DROP INDEX 修改 ALTER INDEX |
视图 | 创建 CREATE VIEW 删除DROP VIEW |
SQL的各种数据定义功能
1,模式的定义与删除
创建用户WANG 并且 定义模式S-T
1.1
右击用户新建WANG
1.2
点击新建查询
模式定义基本语句为
CREATE SCHEMA<模式名>AUTHORIZATION<用户名>
输入代码
CREATE SCHEMA S-T AUTHORIZATION WANG
1.3 为用户WANG创建一个模式TEST 并在其中定义TAB1
CREATE SCHEMA TEST AUTHORIZATION WANG
CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
继续在TEST模式下建立TAB2
CREATE TABLE TEST.TAB2(COL1 SMALLINT,
);
注意不能漏写 TEST. 不然就变成 dbo.TAB2
2.1模式的删除
删除模式TEST 同时定义的表也会删除,所以在删除时要注意是否需要事先保存
DROP SCHEMA TEST CASCADE;
但是这样输入 却显示错误
查阅后发现 SQL Server 不支持CASCADE/RESTRICT关键字
所以把CASCADE去掉 此外由于TEST模式中存在表 所以要将表先删除,才能删除模式
DROP TABLE TEST.TAB1;
DROP TABLE TEST.TAB2;
DROP SCHEMA TEST;
3.基本表的定义,删除与修改
3.1 定义基本表
例: 建立学生表
CREATE TABLE Student
(Sno CHAR(9)PRIMARY KEY,/*列级完整性约束条件,Sno是主码*/
Sname CHAR(20)UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
建立课程表
CREATE TABLE Course
(Cno CHAR(4)PRIMARY KEY,
Cname CHAR(40)NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno)REFERENCES Course(Cno)
/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);
建立学生选课表
CREATE TABLE SC
( Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno)REFERENCES Student(Sno),
FOREIGN KEY(Cno)REFERENCES Course(Cno)
);
3.2修改基本表
向Student表增加“入学时间”列,其数据类型为日期型
将年龄数据类型改为整数
ALTER TABLE Student ADD S_entrance DATE;
ALTER TABLE Student ALTER COLUMN Sage INT;
增加课程名称必须取唯一值的约束条件
ALTER TABLE Course ADD UNIQUE(Cname);
3.3删除基本表
删除 SC表
DROP TABLE SC;
这里又会出现错误 显示SC表现在由一个外键FOREIGN KEY引用
所以这里要将外键先删除
找出外键
exec sp_helpconstraint SC;
删除表Student
DROP TABLE Student
删除外键
ALTER TABLE SC DROP CONSTRAINT FK_SC_Cno_6C190EBB
删除成功