大数据学习
bigdata learning
Toggle navigation
大数据学习
主页
openGauss数据库
Flume
MongoDB
Hadoop
数据库实验
Kafka
Zookeeper
Hbase
Manual
Spark
Neo4j
InfluxDB
RabbitMQ
Flink
About Me
归档
标签
实验01-数据定义
无
2022-10-13 22:47:22
197
0
0
bigdata
# 实验1、数据定义 ## 1.1 实验目的 熟悉SQL的数据定义语言,能够理解并熟练地使用SQL语句来创建、修改和删除数据库、模式和基本表,创建和取消索引,特别是各种参数的具体含义和使用方法。掌握SQL 语句常见语法错误的调试方法。 ## 1.2 实验内容 * 在DataStudio的SQL终端中使用CREATE语句创建数据库Db_Uni,该数据库为nbuuser所属。 * 在DataStudio的SQL终端中使用SQL语句创建SCHEMA并授权给用户nbuuser。 * 在DataStudio的SQL终端中使用CREATE语句创建基本表。 * 更改基本表的定义: 增加列,删除列,修改列的数据类型。 * 创建表的升、降序索引。 * 删除基本表的约束、基本表的索引或基本表。 ## 1.3 实验步骤 打开DataStudio:  1. 在DataStudio的SQL终端中使用CREATE语句创建数据库Db_Uni SQL语句为: ```sql --若数据库Db_Uni存在的话将删除 DROP DATABASE IF EXISTS Db_Uni; --采用字符集UTF-8创建名为Db_Uni 的数据库,并设置nbuuser为其属主 CREATE DATABASE Db_Uni ENCODING = 'UTF-8' OWNER nbuuser; ``` 2. 使用SQL语句查看当前模式搜索路径,创建SCHEMA并授权给用户nbuuser所有,设置当前会话的搜索路径为nbuuser 模式、Puhlic 模式,随后创建的基本表就会自动创建nbuuser 模式下。 (注意:先切换到Db_Uni数据库) SQL语句为: ```sql --查看当前模式搜索路径 SHOW SEARCH_PATH; --若数据库Db_Uni中存在模式nbuuser的话将删除 DROP SCHEMA IF EXISTS nbuuser; --在数据库Db_Uni中创建名为nbuuser的模式,并授权给用户nbuuser所有。 CREATE SCHEMA nbuuser AUTHORIZATION nbuuser; -- 设置当前会话的搜索路径为nbuuser 模式、Puhlic 模式,随后创建的基本表就会自动创建nbuuser 模式下。 SET SEARCH_PATH TO nbuuser, Public; --再次查看当前模式搜索路径 SHOW SEARCH_PATH; ``` 3. 在DataStudio的SQL终端用SQL语句创建关系数据库基本表: 学生表Students(Sno,Sname, Semail,Scredit,Sroom); 教师表Teachers(Tno,Tname,Temail,Tsalary); 课程表Courses(Cno,Cname,Ccredit); 成绩表Reports(Sno,Tno,Cno, Score); 其中:Sno、Tno、Cno分别是表Students、表Teachers、表Courses的主键,具有唯一性约束,Scredit具有约束“大于等于0”; Reports中的Sno,Tno,Cno是外键,它们共同组成Reports的主键。 SQL语句为: ```sql --在Db_Uni 数据库的nbuuser模式中创建4 个基本表。 DROP TABLE IF EXISTS Reports; DROP TABLE IF EXISTS Students; CREATE TABLE Students /*列级完整性约束条件*/ (Sno VARCHAR(6), /*Sno为主键*/ Sname VARCHAR(20) NOT NULL, /*Sname不能为空值*/ Semail VARCHAR(50), Scredit DECIMAL( 5,1 ), Sroom VARCHAR(5), CONSTRAINT PK_Stu PRIMARY KEY(Sno), CONSTRAINT CK_Student_Scredit CHECK(Scredit>=0) ); DROP TABLE IF EXISTS Teachers; CREATE TABLE Teachers /*列级完整性约束条件*/ (Tno VARCHAR(6), /*Tno为主键*/ Tname VARCHAR(20) NOT NULL, /*Tname不能为空值*/ Temail VARCHAR(50), Tsalary DECIMAL( 5,1 ), CONSTRAINT PK_Tea PRIMARY KEY(Tno) ); DROP TABLE IF EXISTS Courses; CREATE TABLE Courses /*列级完整性约束条件*/ (Cno VARCHAR(6), /*Cno为主键*/ Cname VARCHAR(40) NOT NULL, /*Cname不能为空值*/ Ccredit DECIMAL( 5,1 ), CONSTRAINT PK_Cou PRIMARY KEY(Cno) ); DROP TABLE IF EXISTS Reports; CREATE TABLE Reports /*列级完整性约束条件*/ (Sno VARCHAR(6) , Tno VARCHAR(6) , Cno VARCHAR(6) , Score DECIMAL( 5,1 ), CONSTRAINT PK_Rep PRIMARY KEY(Sno, Tno, Cno),/*Sno,Tno,Cno为主键*/ CONSTRAINT FK_Stu_Rep FOREIGN KEY(Sno) REFERENCES Students, CONSTRAINT FK_Tea_Rep FOREIGN KEY(Tno) REFERENCES Teachers, CONSTRAINT FK_Cou_Rep FOREIGN KEY(Cno) REFERENCES Courses ); ``` 4. 更改表Students:增加属性Ssex(类型是VARCHAR,长度为3),取消Scredit“大于等于0”约束。分别把表Students中的属性Sname、Teachers中的属性Tname、Courses中的属性Cname的数据类型改成长度为30。 ```sql --更改表Students:增加属性Ssex(类型是VARCHAR,长度为3) ALTER TABLE IF EXISTS Students ADD COLUMN Ssex VARCHAR(3); --取消Scredit“大于等于0”约束 ALTER TABLE IF EXISTS Students DROP CONSTRAINT CK_Student_Scredit; --修改表Students中的属性Sname的数据类型改成长度为30。 ALTER TABLE IF EXISTS Students MODIFY Sname VARCHAR(30); --修改表Teachers中的属性Tname的数据类型改成长度为30。 ALTER TABLE IF EXISTS Teachers MODIFY Tname VARCHAR(30); --修改表Courses中的属性Cname的数据类型改成长度为30。 ALTER TABLE IF EXISTS Courses MODIFY Cname VARCHAR(30); ``` 5. 删除表Students的一个属性Sroom。 6. 删除表Reports,然后重建表Reports。 7. 为Courses表创建按Cno降序排列的索引。 8. 为Students表创建按Sno升序排列的索引。 9. 创建表Students的按Sname升序排列的唯一性索引。 10. 删除Students表Sno的升序索引,删除Courses表Cno的降序索引。 1.4 实验要求 1. 实验之前请细细阅读实验总体要求与说明指导书 2. 在DataStudio的SQL终端环境中,完成以上实验(1)-(10)步所有SQL数据定义操作,并完成实验报告。
上一篇:
多流处理
下一篇:
实验02-SQL数据查询
文档导航