模式定义语句:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;
CREATE SCHEMA "S-T" AUTHORIZATION wang;
CREATE SCHEMA AUTHORIZATION wang;
该语句并没有指明<模式名>,则模式名隐含为用户名wang,同时,此处只是定义了一处空间,但由于未指明空间名称,所以并未创建架构
CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>];
CREATE SCHEMA TEST AUTHORIZATION wang
CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMER(10,3),
COL5 DECIMAL(5,2)
);
DROP SCHEMA <模式名><CASCADE|RESTRICT>;
DROP SCHEMA wang CASCADE; --删除模式wang
这是因为T-sql不具备CASCADE语句识别,所以将CASCADE删去,要逐层删去其包含的项目才行,首先就是TAB1
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)NOT NULL, --不可取空值
Cpno CHAR(4), --先修课
Ccradit 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),
--表级完整性约束条件,Sno是外码,Student是被参照表
FOREIGN KEY(Cno)REFERENCES Course(Cno)
--表级完整性约束条件,Cno是外码,Course是被参照表
);
CREATE TABLE "S-T".CS(
A CHAR(10)
);
ALTER TABLE Student ADD S_entrance DATE;`
ALTER TABLE Student ALTER COLUMN Sage INT;
ALTER TABLE Course ADD UNIQUE(Cname);
warning:最离谱儿的地方
DROP TABLE<表名>[RESTRICT|CASCADE];
找了好久,一点点抠唆,吐了吐了
找到了下边这个查找外键的语句,我表示看不懂
SELECT name
FROM sys.foreign_key_columns f
JOIN sys.objects o
ON f.constraint_object_id = o.object_id
WHERE f.parent_object_id = OBJECT_ID('表名');
SELECT name
FROM sys.foreign_key_columns f
JOIN sys.objects o
ON f.constraint_object_id = o.object_id
WHERE f.parent_object_id = OBJECT_ID('SC');
介表名啊,不一定是本表的,要去找引用的表,然后看name的_Sno_是是目标表的属性名,对,就他,ctrl+c,crtl+v,
未删前的属性列
应用公式
ALTER TABLE 表名 DROP CONSTRAINT 外键约束名;
实际语句
ALTER TABLE SC DROP CONSTRAINT FK__SC__Sno__628FA481;
在Course表上建立视图:
CREATE VIEW IS_Course
AS
SELECT Cno,Cname,Cpno
FROM Course
WHERE Ccradit = 'IS';
DROP TABLE Course ;
SELECT name
FROM sys.foreign_key_columns f
JOIN sys.objects o
ON f.constraint_object_id = o.object_id
WHERE f.parent_object_id = OBJECT_ID('Course');
ALTER TABLE Course DROP CONSTRAINT FK__Course__Cpno__5FB337D6;
SELECT name
FROM sys.foreign_key_columns f
JOIN sys.objects o
ON f.constraint_object_id = o.object_id
WHERE f.parent_object_id = OBJECT_ID('SC');
ALTER TABLE SC DROP CONSTRAINT FK__SC__Cno__6383C8BA;
删完被引用部分,开删开删
DROP TABLE Course;
最后来检查一下视图部分
SELECT * FROM IS_Course;