【数据库】实验 1:数据库定义与操作语言实验

这篇具有很好参考价值的文章主要介绍了【数据库】实验 1:数据库定义与操作语言实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本篇文章相当于是一个简单的SQL语言归纳总结,包括数据库定义和一些基本的数据操作。值得注意的是,不同的数据库系统有着自己的特点,语法不完全相同,在使用具体系统是可以查阅各产品的用户手册。


提示:以下是本篇文章正文内容,下面案例可供参考

样例选择

本实验所使用的数据库为学生-课程数据库S-T

• 学生-课程数据库模式 S-T :

学生表:Student(Sno,Sname,Ssex,Sage,Sdept)

课程表:Course(Cno,Cname,Cpno,Ccredit)

学生选课表:SC(Sno,Cno,Grade)

【数据库】实验 1:数据库定义与操作语言实验
【数据库】实验 1:数据库定义与操作语言实验
【数据库】实验 1:数据库定义与操作语言实验

实验 1.1 数据库定义实验

(1)实验目的

理解和掌握数据库 DDL 语言,能够熟练地使用 SQL DDL 语句创建、修改和 删除数据库、模式和基本表。

(2)实验内容和要求

理解和掌握 SQL DDL 语句的语法,特别是各种参数的具体含义和使用方法; 使用 SQL 语句创建、修改和删除数据库、模式和基本表。掌握 SQL 语句常见语法错误的调试方法。

(3)实验重点和难点

实验重点:创建数据库、基本表。

实验难点:创建基本表时,为不同的列选择合适的数据类型,正确创建表 级和列级完整性约束,如列值是否允许为空、主码和外码等。注意:数据完整 性约束,可以在创建基本表时定义,也可以先创建表然后定义完整性约束。由于完整性约束的限制,被引用的表要先创建。

(4)实验记录

1.DDL语言

数据(结构)定义语言DDL(Data Definition Language),是用于创建和修改数据库表结构的语言

常用的语句:create, alter, drop, rename

2.SQL DDL 语句
数据库:
#创建数据库
CREATE DATABASE lab1;

#修改数据库字符集
ALTER DATABASE lab1 CHARSET utf8;

#删除数据库
DROP DATABASE lab1;
模式:

严格地说,在MySql中,Database和Schema之间的区别是不存在的。

但是,在其他数据库引擎(如SQL Server)中并非如此。 在SQL server:中,

每个表都属于数据库中称为数据库模式的一组对象。 它是容器或命名空间(查询Microsoft SQL Server 2012)

#创建模式
CREATE SCHEMA S-T AUTHORIZATION QUAN;

#修改模式
SQL标准不提供修改模式定义的操作

#删除模式  CASCADE(级联)/RESTRICT(限制) 二只必选其一
DROP SCHEMA S-T CASCADE;
基本表

数据类型
【数据库】实验 1:数据库定义与操作语言实验

#创建基本表
mysql> CREATE TABLE Student
    -> (Sno CHAR(9) PRIMARY KEY,  /*列级完整性约束条件,Sno是主码*/
    -> Sname CHAR(20) UNIQUE,   /*Sname取唯一值*/
    -> Sex CHAR(2),
    -> Sage SMALLINT,
    -> Sdept CHAR(20)
    -> );

mysql> CREATE TABLE Course
    -> (Cno CHAR(4) PRIMARY KEY,  /*列级完整性约束条件,Cno是主码*/
    -> Cname CHAR(40) NOT NULL,    /*列级完整性约束条件,Cname不能取空值*/
    -> Cpno CHAR(4),
    -> Ccredit SMALLINT,
    -> FOREIGN KEY(Sno) REFERENCES Student(Sno),
    -> FOREIGN KEY(Cpno) REFERENCES Course(Cno)
                       /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
    -> );
    
mysql> CREATE TABLE SC
    -> (Sno CHAR(9),
    -> Cno CHAR(4),
    -> Grade SMALLINT,
    -> PRIMARY KEY (Sno,Cno),
    -> FOREIGN KEY(Cno) REFERENCES Course(Cno)
                       /*表级完整性约束条件,Cno是外码,被参照表是Course,被参照列是Course*/
    -> );
#修改基本表
ALTER TABLE Student ALTER COLUMN Sage INT; /*修改年龄的数据类型为整数*/

【数据库】实验 1:数据库定义与操作语言实验

#删除基本表
mysql> DROP TABLE SC CASCADE;

实验 1.2 数据基本查询实验

(1)实验目的

掌握 SQL 程序设计基本规范,熟练运用 SQL 语言实现数据基本查询,包括单表查询、分组统计查询和连接查询。

(2)实验内容和要求

针对某个数据库设计各种单表查询 SQL 语句、分组统计查询语句;设计单个表针对自身的连接查询,设计多个表的连接查询。理解和掌握 SQL 查询语句 各个子句的特点和作用,按照 SQL 程序设计规范写出具体的 SQL 查询语句,并 调试通过。

说明:简单地说,SQL 程序设计规范包含 SQL 关键字大写、表名、属性名、 存储过程名等标识符大小写混合、SQL 程序书写缩进排列等编程规范。

(3)实验重点和难点

实验重点:分组统计查询、单表自身连接查询、多表连接查询。

实验难点:区分元组过滤条件和分组过滤条件;确定连接属性,正确设计连接条件.

(4)实验记录

1.单表查询(实现投影操作)

查询学生学号和姓名

SELECT Sno,Sname
FROM Student;
2.单表查询(实现选择操作)

查询分数大于90的选课信息

SELECT *
FROM SC
WHERE Grade>90;
3.不带分组过滤条件的分组统计查询

统计每个学生的选修课数目

SELECT Student.Sno SUM(*)
FROM Student,SC
WHERE Student.Sno=SC.Sno
GROUP BY Student.Sno;
4.带分组过滤条件的分组统计查询

查询选课数大于2的学生学号和姓名

SELECT Student MAX(Student.Sname)
FROM Student,SC
WHERE Student.Sno=SC.Sno
GROUP BY Student.Sno
HAVING SUM(*)>2;
5.单表自身连接查询

查询每门课的间接先修课(先修课的先修课)

SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Con;
6.两表连接查询

查询每个学生及其选修课程的情况

SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno=SC.Sno;
7.两表连接查询(自然连接)

查询每个学生及其选修课程的情况

SELECT Student.Sno,Sname,Sex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno=SC.Sno;
8.三表连接查询

查询每个学生的学号、姓名、选修的课程名及成绩

SELECT Student.Sno,Sname,Cname,Grade
FROM Student,Course,SC
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.cno;

实验 1.3 数据高级查询实验**

(1)实验目的

掌握 SQL 嵌套查询和集合查询等各种高级查询的设计方法等。

(2)实验内容和要求

针对自定义数据库,正确分析用户查询要求,设计各种嵌套查询和集合查 询。

(3)实验重点和难点

实验重点:嵌套查询。

实验难点:相关子查询、多层 EXIST 嵌套查询。

(4)实验记录

1.IN嵌套查询

查询与”刘晨“在同一个系学习的学生

SELECT *
FROM Student
WHERE Sdept IN (SELECT Sdept
                FROM Student
    			WHERE Sname='刘晨';)
2.单层EXISTS嵌套查询

查询所有选修了1号课程的学生姓名

SELECT Sname
FROM Student
WHERE EXISTS(SELECT *
    		 FROM SC
			 WHERE Sno=Student.Sno AND Cno='1';)
3.双层EXISTS嵌套查询

查询选修了全部课程的学生姓名=没有一门课程是他不选修的

SELECT Sname
FROM Student
WHERE NOT EXISTS
		  (SELECT *
          FROM Course
          WHERE NOT EXISTS
          			(SELEST *
                    FROM SC
                    WHERE Sno=Student.Sno
                    AND Cno=Course.Cno));
4.集合查询(交)

查询计算机科学系的学生与年龄不大于19岁的学生的交集

SELECT *
FROM Student
WHERE Sdept='CS'
INTERSECT
SELECT *
FROM Student
WHERE Sage<=19;
5.集合查询(并)

查询选修了课程1或者选修了课程2的学生

SELECT Sno
FROM SC
WHERE Cno='1'
UNION
SELECT Sno
FROM SC
WHERE Cno='2';
6.集合查询(差)

查询计算机科学系的学生与年龄不大于19岁的学生的差集

SELECT *
FROM Student
WHERE Sdept='CS'
EXCEPT
SELECT *
FROM Student
WHERE Sage<=19;

实验 1.4 数据更新实验

(1)实验目的

熟悉数据库的数据更新操作,能够使用 SQL 语句对数据库进行数据的插入、 修改、删除操作。

(2)实验内容和要求

针对自定义数据库设计单元组插入、批量数据插入、修改数据和删除数据 等 SQL 语句。理解和掌握 INSERT、UPDATE 和 DELETE 语法结构的各个组成成分, 结合嵌套SQL子查询,分别设计几种不同形式的插入、修改和删除数据的语句, 并调试成功。

(3)实验重点和难点

实验重点:插入、修改和删除数据的 SQL。

实验难点:与嵌套SQL子查询相结合的插入、修改和删除数据的SQL 语句; 利用一个表的数据来插入、修改和删除另外一个表的数据。

(4)实验记录

1.INSERT基本语句(插入全部列的数据)

插入一条学生信息,要求每一列都给一个合理的值。

INSERT INTO Student
VALUES('201215121','李勇''男',20,'CS');
2.INSERT基本语句(插部分列的数据)

插入一条课程记录,给出必要的几个字段值。

INSERT INTO Course(Cno,Cname,Ccredit)
VALUES('2','数学',2);
3.批量数据INSERT语句
  • 创建一个新的学生表,把所有选了1号课程的学生插入到新的学生表中。

    CREATE TABLE NewStudent AS SELECT * FROM Student WITH NO DATA;
    /*WITH NO DATA 子句使得SELECT查询只生成一个结果模式,不查询出实际数据*/
    INSERT INTO NewStudent
    SELECT S.*
    FROM Student S,SC C
    WHERE S.Sno=C.Sno AND C.Cno='1';
    
  • 创建一个学生选课统计表,记录每个学生及其选课总数和总学分等信息

    CREATE TABLE CourseStat
    (Sno CHAR(9),
     quantity REAL,
     totalcredits 
    );
    INSERT INTO CourseStat
    SELECT Student.Sno,COUNT(*),SUM(Ccredit)
    FROM Student,Course,SC
    WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno
    GROUP BY Student.Sno;
    
4.UPDATE语句(修改部分记录的部分列值)

将计算机科学系全体学生成绩下降10%

UPDATE SC
SET Grade=Grade*0.9
WHERE Sno IN
		(SELECT Sno
        FROM Student
        WHERE Sdept='CS');
5.UPDATE语句(利用一个表中的数据修改另一个表中的数据)

利用Course表中学分来修改SC表中的Grade,其中Grade=Course.Ccredit*Grade

UPDATE SC
SET SC.Grade=Course.Ccredit*SC.Grade
FROM Course
WHERE SC.Cno=Course.Cno;
6.DELET基本语句(删除给定条件的所有记录)

删除学生李勇的所有选课记录

DELETE FROM Student
WHERE Sname='李勇'DELETE RFOM SC
WHERE Sno = (SELECT SC.Sno
             FROM SC,Student
             WHERE SC.Sno=Student.Sno AND Student.Sname='李勇'
)

实验 1.5 视图**

(1)实验目的

熟悉SQL语言有关视图的操作,能够熟练使用 SQL语句来创建需要的视图, 定义数据库外模式,并能使用所创建的视图实现数据管理。

(2)实验内容和要求

针对给定的数据库模式,以及相应的应用需求,创建视图和带 WITH CHECK OPTION 的视图,并验证视图 WITH CHECK OPTION 选项的有效性。理解和掌握视图消解执行原理,掌握可更新视图和不可更新视图的区别。

(3)实验重点和难点

实验重点:创建视图。

实验难点:可更新的视图和不可更新的视图的区别, WITH CHECK OPTION 的验证。

(4)实验记录

1.创建视图(省略视图列名)

省略则隐含该视图由子查询中SELECT子句目标列中的诸字段组成

建立信息系学生的视图

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Stept='IS';
2.创建视图(不能省略视图列名的情况)
  • 某个目标列不是单纯的属性名,而是聚集函数列表达式
  • 多表连接时选出了几个同名列作为视图的字段
  • 需要在视图中为某个列启用新的更合适的名字

建立信息系选修了1号课程的学生的视图(包括学号、姓名、成绩)

CREATE VIEW IS_S1(Sno,Sname,Grade)
AS
SELECT Student.Sno,Sname,Grade
FROM Student,SC
WHERE Student.Sno=SC.Sno AND 
	  Student.Stept='IS' AND
	  SC.Cno='1';
3.创建视图(WITH CHECK OPTION)

WITH CHECK OPTION 表示对视图进行UPDATE、INSERT和DELETE操作时要保证更新、插入或删除的行满足视图中定义的谓词条件(即子查询中的条件表达式)

建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Stept='IS'
WITH CHECK OPTION;
4.可更新的视图(行列子集视图)

行列子集视图:从单个基本表导出,并且只是去掉了基本表的某些列和某些行,但是保留了主码

建立信息系学生的视图

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Stept='IS';
5.不可更新的视图

DB2规定以下视图不允许更新:

  • 视图由两个以上基本表导出
  • 视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作
  • 视图的字段来自聚集函数
  • 视图定义中含有GROUP BY子句
  • 视图定义中含有DISTINCT短语
  • 视图定义中含有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表
  • 一个不允许更新的视图上定义的视图

将SC表中成绩在平均成绩之上的元祖定义成一个视图

CREATE VIEW GOOD_SC
AS
SELECT Sno,Cno,Grade
FROM SC
WHERE Grade >
			(SELECT AVG(Grade)
            FROM SC);
6.删除视图(RESTRICT/CASCADE)

删除视图GOOD_SC

DROP VIEW GOOD_SC CASCADE; /*删除了视图GOOD_SC和由它导出的所有视图*/

总结

查询是重点,连接查询是重中之重文章来源地址https://www.toymoban.com/news/detail-431432.html

到了这里,关于【数据库】实验 1:数据库定义与操作语言实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库Microsoft SQL Server】实验一 数据库的定义与单表查询

    一、实验目的 1.要求学生熟悉掌握在DBMS中用SQL语言定义数据库、表、主码及外码。 2.熟悉关系数据库中常用数据类型,为关系表各属性定义合理的数据类型。 3.在建立好的数据库表中输入部分虚拟数据,实现基于单表的sql查询并分析查询结果。 二、实验环境与实验准备工作

    2024年02月05日
    浏览(62)
  • POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 数据压缩打更新 (本篇有数据到列节点异步但不延迟的解释)...

    开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共1300人左右 1 + 2 + 3 + 4) 3群即将突破 400 会关闭自由申请,新人会进4群 这

    2024年02月07日
    浏览(46)
  • 数据库系统原理及MySQL应用教程实验四MySQL数据库表数据的查询操作

    1.掌握SELECT 语句的基本语法格式。 2.掌握SELECT 语句的执行方法。 3.掌握SELECT 语句的 GROUP BY 和 ORDER BY 子句的作用。 验证性实验:在公司的部门员工管理数据库的bumen表和yuangong表上进行信息查询。 设计性试验:将在student表和score表上进行查询。 ( 一 ) 验证性实验 在

    2024年02月05日
    浏览(57)
  • 南京邮电大学数据库实验一(SQL语言)

    (1) 通过上机实践,熟悉Oracle的SQL * Plus环境及使用方法 (2) 掌握SQL语言,能熟练运用SQL语言进行数据定义和数据操纵 (3) 加深对关系数据模型的数据结构和约束的理解 硬件:微型计算机 软件:Windows 操作系统、ORACLE 10G 实验原理基于第二、三、五章的相关内容。 实验内容如下:

    2024年04月27日
    浏览(48)
  • 实验4 NoSQL和关系数据库的操作比较

    实验4 NoSQL和关系数据库的操作比较 1 .实验 目的 (1)理解四种数据库(MySQL、HBase、Redis和MongoDB)的概念以及不同点; (2)熟练使用四种数据库操作常用的Shell命令; (3)熟悉四种数据库操作常用的Java API。 2 . 实验平台 (1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04); (

    2024年02月03日
    浏览(36)
  • mysql 数据库定义语言(DDL)

    目录 库的操作 数据库创建 数据库编码集 数据库删除 数据库修改 数据库查询 数据库备份 表的操作 表的创建 查询表 删除表 修改表 这里先声明一下,这篇文章主要是讲数据库表的定义操作,也就是 DDL,只要是对数据库以及表结构操作的 SQL 数据库的创建,其实在之前我们浅

    2024年02月12日
    浏览(41)
  • 【MySQL】:DDL数据库定义与操作

    🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! SQL是一种强大的语言,根据其功能可以分为DDL、DML、DQL和DCL四类。其中,DDL用于定义数据库对象,如数据库、表和字段。本文将深入探讨DDL的数据库操作,包括查询数据库、创建数据库

    2024年02月01日
    浏览(55)
  • 数据库实验一:基本表操作、基本数据查询和复杂数据查询

    按下图创建四个表:teacher、student、course和SC,为属性选择合适的域、合适的主码和外键约束,并为他们插入所列出数据; 中文语义 teacher (TID,TNAME,DEPT,SALARY) 教师(教工号,姓名,系,薪水) student (SID,SNAME,DEPT,AGE,GENDER) 学生(学号,姓名,系,年龄,性别) course (CID,CNAME,DE

    2024年02月01日
    浏览(64)
  • 实验一 关系数据库标准语言SQL 课后习题/头歌

    任务要求 建立demo数据库 并显示所有数据库 第2关:创建表 任务要求 设有一个demo数据库,包括S,P,J,SPJ四个关系模式: S(SNO,SNAME,STATUS,CITY) P(PNO,PNAME,COLOR,WEIGHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY) 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CI

    2024年02月05日
    浏览(53)
  • 大数据技术原理与应用实验3——NoSQL和关系数据库的操作比较

    (1)理解四种数据库(MySQL、HBase、Redis和MongoDB)的概念以及不同点; (2)熟练使用四种数据库操作常用的Shell命令; (3)熟悉四种数据库操作常用的Java API。 (1)Linux操作系统(CentOS7.5) (2)VMware Workstation Pro 15.5 (3)远程终端工具Xshell7 (4)Xftp7传输工具 (5)Hadoop版本:

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包