数据库基本sql语句使用

上篇博客解答题2.0版

(1) π S N O ( σ J N O = J 1 ( S P J ) ) \pi_{SNO}( \sigma_{JNO='J1' }(SPJ) )
(2) π S N O ( σ P N O = p i ( σ J N O = J 1 ( S P J ) ) ) \pi_{SNO}(\sigma_{PNO='pi'}( \sigma_{JNO='J1'}(SPJ)))
(3) π S N O ( π S N O , P N O ( σ J N O = j 1 ( S P J ) ) π P N O ( σ C O L O R = ( P ) ) ) \pi_{SNO}( \pi_{SNO,PNO}(\sigma_{JNO='j1'}(SPJ))\Join\pi_{PNO} (\sigma_{COLOR='红色'}(P)) )
(4) π J N O ( S P J ) π J N O ( π S N O , P N O < J N O ( S P J ) π S N O ( σ C I T Y = ( S ) ) π P N O ( σ C O L O R = ( P ) ) ) \pi_{JNO}(SPJ)-\pi_{JNO}(\pi_{SNO,PNO<JNO}(SPJ)\Join\pi_{SNO}(\sigma_{CITY='天津'}(S))\Join\pi_{PNO}(\sigma_{COLOR='红色'}(P)))
(5) π J N O , P N O ( S P J ) ÷ π P N O ( σ S N O = s i ( S P J ) ) \pi_{JNO,PNO}(SPJ)\div\pi_{PNO}(\sigma_{SNO='si'}(SPJ))

sql基本语句练习

实例1
建立模式的语法:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>

CREATE SCHEMA "S-T" AUTHORIZATION WANG
/*  使用这个语句注意wang 这个用户所在的数据库*/

实例2

CREATE SCHEMA AUTHORIZATION WANG
/*这个是没有指定模式名会隐含为用户名*/ 

SQL 模式百度百科
实例3

CREATE SCHEMA TEST AUTHORIZATION WANG
CREATE TABLE TAB1(
COL1 SMALLINT,
COL2 INT,
COL3 NUMERIC(10,3),
COL5 DECIMAL(5,2)
/*默认的模式是dbo*/
);

如图所示,在新建的STU 数据库中表的位置出现TEXT.TAB1,并且在框架中出现TEST框架。
在这里插入图片描述
实例4
删除语句:
DROP SCHEMA <模式名> <CASCADE|RESTRICT>

DROP SCHEMA "TEST" CASCADE

注意直接删除会出现错误,如图
在这里插入图片描述
原因是不支持cascade ,因此换一种方法。其实这也说明了标准的sql在实际应用的时候会有所不同。这就是与T-SQL之间的区别。

DROP TABLE TEST.TAB1
DROP SCHEMA TEST
/*先删除表,再删除模式*/

实例5
创建基本表:
CREATE TABLE<名> (
<列名><数据类型>(列级的完整性)

<表级完整性>
)

CREATE SCHEMA "TEST" AUTHORIZATION WANG
CREATE TABLE Student(
Sno CHAR(9)PRIMARY KEY,
Sname CHAR(9) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT
)

在这里插入图片描述
实例6:

CREATE TABLE TEST.Course(
Cno CHAR(4) PRIMARY KEY,
/*列完整性的约束条件*/
Cname CHAR(40) NOT NULL,
Cpno CHAR(4) ,
FOREIGN KEY (Cpno) REFERENCES TEST.Course(Cno),
/*标记完整性的约束条件,指出参照表*/
);

这个例子也是说明了参照表与被参照表可以是同一个。
实例7:

CREATE TABLE TEST.SC(
Sno CHAR(9),
Cno CHAR(4),
PRIMARY KEY (Sno,Cno),
FOREIGN KEY (Sno) REFERENCES TEST.Student(Sno),
FOREIGN KEY (Cno) REFERENCES TEST.Course(Cno),
);

修改基本表:
ALTER TABLE<表名>
[ADD [COLUMN]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP [COLUMN]<列名>[CASCADE | RESTRICT]]
[DROP CONSTRAINT <完整性的约束名>[CASCADE | RESTRICT]]
[ALTER COLUMN <列名><数据类型>];
实例8:

ALTER TABLE TEST.Student ADD S_entrance DATE

在这里插入图片描述
实例9:

ALTER TABLE TEST.Student ALTER COLUMN Sage INT

实例10:

ALTER TABLE TEST.Course ADD UNIQUE(Cname)

实例11:
删除Student表:
DROP TABLE Student CASCADE

DROP  TABLE TEST.Student  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('TEST.SC')

在这里插入图片描述
这一段代码是为了找到外键的位置

ALTER TABLE  TEST.SC DROP CONSTRAINT FK__SC__Sno__44FF419A
DROP TABLE TEST.Student

为了验证能不能直接删除SC中的Sno进而删除STudent,写入了已下代码:

 ALTER   TABLE  TEST.SC DROP COLUMN Sno

事实证明不可以,因为Sno是SC的主码,上面的代码删除的是表级的完整性(个人觉得)在这里插入图片描述
实例12:
在表上建有视图,选择RESTRICT时表不会删除,选择CASCADE 可以删除表视图

DROP TABLE TEST.Student  

删除后这个视图不能再使用。

以上就是所有的内容,总的来说标准的sql 和T-sql有很大的不同,通过具体的例子加深了语句的理解。数据库的基本表是建立在模式的基础上的(也就是框架),删除基本表的同时要注意表级的引用关系,先去掉约束再删除。最后附上参考文档。
参考文档

发布了5 篇原创文章 · 获赞 5 · 访问量 2225

猜你喜欢

转载自blog.csdn.net/weixin_44724691/article/details/104663531