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得到验证。
MySQL数据库定义与操作语言的更多相关文章
- 【代码学习】MYSQL数据库的常见操作
---恢复内容开始--- ============================== MYSQL数据库的常见操作 ============================== 一.mysql的连接与 ...
- 【代码总结】MYSQL数据库的常见操作
============================== MYSQL数据库的常见操作 ============================== 一.mysql的连接与关闭 -h:指定所连接的服 ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- linux系统上Mysql数据库导入导出操作
需求:把MySQL数据库目录中的dz数据库备份到/home/dz_bak.sql ,然后再新建一个数据库dzbak,最后把/home/dz_bak.sql 导入到数据库dzbak中.操作如下:以下操作 ...
- PHP对MySQL数据库的相关操作
一.Apache服务器的安装 <1>安装版(计算机相关专业所用软件---百度云链接下载)-直接install<2>非安装版(https://www.apachehaus.com ...
- mysql 数据库必备命令操作,入门练习一下
mysql 数据库必备命令操作 show databases: 查看所有的数据库: create database jfedu: 创建名为jfedu数据库: use nihao: 进入jfedu数据库 ...
- 第二百七十九节,MySQL数据库-pymysql模块操作数据库
MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数使用方式: 模块名称.connec ...
- 第二百七十八节,MySQL数据库-表内容操作
MySQL数据库-表内容操作 1.表内容增加 insert into 表 (列名,列名...) values (值,值,值...); 添加表内容添加一条数据 insert into 表 (列名,列名. ...
- MySQL数据库的常见操作(七)
MySQL数据库的常见操作 1.创建数据库 2.创建重名的数据库以及如何查看警告信息 3.设置数据库的编码方式(默认为utf8) 4.修改和查看数据库的编码方式 5.删除数据库 6.6.删除已经删除了 ...
随机推荐
- DP总结
最长回文子序列 int lpsDp(char * str,int n){ int dp[n][n], tmp; memset(dp,0,sizeof(dp)); for(int i=0; i<n ...
- Xshell连接虚拟机
一般连接虚拟机失败 原因1:ip地址错误 当输入 ifconfig 只有lo没有eth0,或者有eth0,但eth0中确没有inet addr这一行 输入命令:dhclient eth0 就可以了
- VS经常报错的link error 2019
VS经常报错的link error 2019 原因如下: 可能是找得到头文件,但是相关的dll或者lib找不到,需要在配置里面添加相应的库文件. project=>configuration.. ...
- 用PHP实现URL转换短网址的算法示例
短网址就是把一个长的地址转换在超级短的网址,然后访问短网址即可跳转到长网址了,下面来看用PHP实现URL转换短网址的算法与例子. 短网址(Short URL) ,顾名思义就是在形式上比较短的网址.在W ...
- Oracle 建表,递增序列,触发器,分析函数row_number() ,partition by 子句。
create table SC ( Id INTEGER, Name nvarchar2(20) , KC_Name nvarchar2(20), KC_score INTEGER , constra ...
- HLSL之漫反射光
整整忙了一个月了,总算清闲下来了,从上次写完环境光后又过了这么长时间,继续学习......加油!!今天整理下漫反射光并记录下来,那就直接进入主题吧,开始漫反射光的学习. 漫反射光是在环境光的基础上添加 ...
- maven 配置篇 之pom
maven 配置篇 之pom.xml(一) 博客分类: pm mavenXML配置管理项目管理junit 说完了settings.xml配置,下来说一下maven2的主要配置pom.xml ...
- 非官方windows下Cpython二进制扩展包下载地址
Unofficial Windows Binaries for Python Extension Packages url:http://www.lfd.uci.edu/~gohlke/pythonl ...
- 国内从事GIS行业的公司及其网址
www.esrichina-bj.cn esri中国北京http://www.lingtu.com/ 北京灵图软件技术有限公司(三维gis) http://www.spatialport.com.cn ...
- 学习WCF之——wcf程序的创建
这是我参考的主要资料——wcf学习之旅:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 首先,如博客上介绍的一样,创建空白的项 ...