MySQL数据库定义与操作语言

文章为作者原创,未经许可,禁止转载。    -Sun Yat-sen University 冯兴伟

实验1.1 数据库定义

1)实验目的

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

2)实验内容和要求

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

3)实验重点和难点

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

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

4)实验过程

a.         创建名为university的数据库:

b.         删除名为university的数据库:

c.         定义名为university的模式:

注:后续各个实验项目基于当前创建的university数据库

university数据库模式由(课程专业表)course、(系表)department、(教师表)instructor、(课程安排表)section、(学生名单表)student、(学生选课表)takes和(教师上课表)teaches组成。

d.         在university 数据库中创建上述各表,为不同的列选择合适的数据类型以及做好表的完整性约束:

 

e.         在建立好各个表后,进行数据库的删除,插入和更新操作:

为不冗余复述,以department表为例,其余各表操作类似。

删除操作:

 

插入操作:

 

更新数据后department的结果:

 

f.          同理对其余各表进行插入数据以及更新操作,为方便后续检查,得到各表格结果如下:

instructor表:                                                     

 

course表:

 

section表:

 

teaches表:

 

student表:

takes表:

 

 

实验1.2 数据基本查询

1)实验目的

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

2)实验内容和要求

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

说明:简单地说,SQL程序设计规范包含SQL关键字大写、表名、属性名、存储过程名等标示符大小写混合、SQL程序书写缩进排列等编程规范。具体内容参见参考文献3。

3)实验重点和难点

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

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

4)实验过程

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

查询教师的编号,姓名和所在系。

 

查询结果:

 

b.         单表查询(实现选择操作)

查询所有在computer science系并且工资超过70000美元的教室的姓名。

 

查询结果:

 

c.         不带分组过滤条件的分组统计查询

查询找出每个系的平均工资。

 

查询结果:

 

d.         带分组过滤条件的分组统计查询

查询平均工资超过42000美元的系及其平均工资。

 

查询结果:

 

e.         单表自身连接查询

查询工资至少比Biology系某个老师工资要高的所有老师姓名

 

查询结果:

 

f.          两表连接查询

查询大学中所有讲授课程的教师的名字以及所讲述的所有课程标识。

 

查询结果:

 

g.         三表连接查询

查询教师的名字以及他们所讲授课程的名称。

 

查询结果:

 

 

实验1.3 数据高级查询

1)实验目的

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

2)实验内容和要求

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

3)实验重点和难点

实验重点:嵌套查询。

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

4)实验过程

a.         in 嵌套查询

查询2009年秋季和2010年春季学期同时开课的所有课程。

 

查询结果:

 

b.         单层EXIST嵌套查询

查询2009年秋季和2010年春季学期同时开课的所有课程。

查询结果:

 

c.         FROM子句中的嵌套查询

查询平均工资超过42000美元的系及其平均工资。

 

查询结果:

 

d.         由于MySQL没有交集和差集运算,只进行集合并集的查询

查询2009年秋季开课,或者2010年春季开课或两个学期都开课的所有课程。

 

查询结果:

 

 

实验1.4 数据更新

1)实验目的

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

2)实验内容和要求

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

3)实验重点和难点

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

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

4)实验过程

a.         INSERT基本语句

student表中插入一条学生记录。

 

插入结果:

 

b.         UPDATE语句

更新刚才插入的名字属性值为我的名字拼音Feng Xingwei

更新结果:

 

c.         DELETE基本语句

删除刚才插入和修改过的那条编号为11111的记录。

 

删除后结果:

 

 

实验1.5 视图

1)实验目的

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

2)实验内容和要求

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

3)实验重点和难点

实验重点:创建视图。

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

4)实验过程

a.         创建视图

创建一个视图history_instructors,用于列出所有教师中那些归属为历史系的教师信息

 

b.         使用视图进行操作

 

操作结果:

 

c.         不带WITH CHECK OPTION对视图进行更新操作

 

操作结果:

 

结论:所以不加WITH CHECK OPTION时可以更新

删除刚才加进来的记录。

 

d.         带WITH CHECK OPTION对视图进行更新操作

删除之前创建的不带WITH CHECK OPTION的history_instructors视图,重新创建带WITH CHECK OPTION的同名视图,并进行插入操作,代码如下。

 

实验结果:

 

插入操作不被允许,原因在于系名为Comp.Sci而不是History所以不允许更新,因此WITH CHECK OPTION得到验证。

转载于:https://www.cnblogs.com/fengxw/p/6058719.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值