标签:页例 删除 -- 数据库 DROP CHAR Student TABLE 例题
一.模式的定义与删除
编程语言新建数据库
点击【新建查询】
新建数据库语句:
CREATE DATABASE STUDENT
1.分析:语法错误
2.执行:新建数据库成功
刷新左侧【对象资源管理器】,可以查看到新建的STUDENT数据库
81页3.1.为用户WANG定义一个学生-课程模式S-T
(1)创建WANG用户
一定要创建用户WANG,不然会报错
【数据库】->【新建的数据库】->【安全性】->【用户】右键【新建用户】->填写用户名WANG,登陆名:##MS_PolicyEventProcessingLogin##->【确定】
(2)定义学生课程模式S-T
在【新建查询】框中输入以下语句:
CREATE SCHEMA "S-T" AUTHORIZATION WANG;
点击【执行】,点击【架构】会出现S-T
81页例3.2
CREATE SCHEMA AUTHORIZATION WANG;
该语句没有指定<模式名>,所以<模式名>隐含为<用户名>WANG
81页例3.3.为用户ZHANG创建一个模式TEST,并且在其中定义一个表TAB1
(1)创建ZHANG用户,同上
(2)创建一个模式TEST,并且在其中定义一个表TAB1
CREATE SCHEMA TEST AUTHORIZATION ZHANG;
CREATE TABLE TAB1(COL1 SMALLINT,COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2));
(3)TEST模式建立成功,继续在TEST模式下建立表TAB2
CREATE TABLE TEST.TAB2(COL1 SMALLINT);
82页例3.4
DROP SCHEMA ZHANG CASCADE;
该语句删除了模式ZHANG,同时,该模式中已经定义的表TAB1,TAB2也被删除了
说明:SQLserver不支持用CASCADE和RESRICT关键字进行表的删除https://blog.csdn.net/Bthsky/article/details/78180591
DROP SCHEMA TEST
变通方法:先删除该模式下的基本表,再删除模式.
DROP TABLE TEST.ABL1;
DROP TABLE TEST.TABL2;
DROP SCHEMA TEST;
二.基本表的定义、删除与修改
82页例3.5 建立一个“学生”表Student
CREATE TABLE Student
(
Sno CHAR(9) PRIMARY KEY, /*列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /*Sname取为唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
82页例3.6 建立一个“课程”表Course
CREATE TABLE Course
(
Cno CHAR(4) PRIMARY KEY, /*列级完整性约束条件,Cno是主码*/
Cname CHAR(40) NOT NULL, /*列级完整性约束条件,Cname不能取空值*/
Cpno CHAR(4), /*Cpno的含义是先修课*/
Ceredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno) /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);
83页例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*/
);
85页例3.8 向Student表增加“入学时间”列,其数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE;
无论基本表中原来是否已有数据,新增加的列一律为空值(NULL)
85页例3.9 将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;
转换成:
85页例3.10 增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname);
86
86页例3.11 删除Student表
DROP TABLE Student CASCADE;
问题同上:SQLserver不支持用CASCADE和RESRICT关键字进行表的删除
改正:
DROP TABLE Student;
有时想删除某个表时,提示“无法删除对象 ‘*‘,因为该对象正由一个 FOREIGN KEY 约束引用”,原因很简单不要急躁,它被其它表的外键引用了,所以无法删除,在此只需先找到哪些表的外键引用了该表的字段。通过系统函数就能解决(SQL Server系统函数提供了非常完善的功能,能代替我们查找和解决许多问题)。
SQL语句查询某个表被哪些外键引用,并且显示外键表的表名
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('外码的表名')
删除外键的SQL 语句:
ALTER TABLE dbo.被引用的表名 DROP CONSTRAINT 外键名
删除Student表
DROP TABLE Student;
86页例3.12 若表上建有视图,选择RESTRICT时表不能删除;选择CASCADE时可以删除表,视图也自动被删除
创建视图
CREATE VIEW IS_Student /*Student表上建立视图*/
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS';
查询视图IS_Student;
SELECT * FROM IS_Student;
删除Student表
DROP TABLE Student; /*删除Student表*/
删除完毕,查询是否还存在
标签:页例,删除,--,数据库,DROP,CHAR,Student,TABLE,例题 来源: https://blog.csdn.net/m0_50759850/article/details/114879229
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。