数据库作业-SQL练习1

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)
	 );

在这里插入图片描述
在这里插入图片描述
【例3.6】建立一个“课程”表Course

CREATE TABLE  Course
	 (Cno       CHAR(4) PRIMARY KEY,
	  Cname  CHAR(40), 
	  Cpno     CHAR(4),  
	  Ccredit  SMALLINTFOREIGN 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;

在这里插入图片描述
【例3.10】增加课程名称必须取唯一值的约束条件。

ALTER TABLE Course ADD UNIQUE(Cname); 

在这里插入图片描述
【例3.11】删除Student表

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;

执行这两个语句发现已完全删除。
在这里插入图片描述

发布了4 篇原创文章 · 获赞 9 · 访问量 2749

猜你喜欢

转载自blog.csdn.net/qq_45265330/article/details/104732448