第一篇:数据库实验报告6-13[精选]
数据库实验六至十二实验报告
实验日志六
指导教师 祝家钰
实验时间: 2015 年 4月 27日 学院
计算机科学与技术学院 专业
计算机与智能科学大类
班级
0401410 学号
2014211727姓名 周泓源实验室 s331
实验题目:
SQL语言数据查询语言DQL 实验目的:
数据查询语言指对数据库中的数据查询、统计、分组、排序等操作。查询语句可以分为简单查询、连接查询、嵌套查询和组合查询等。
本次实验了解SQL语言的SELECT语句对数据的查询,学会在Navicat for MySQL中用SELECT语句对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。
实验内容:(叙述自己编写的程序)
1、用Create Table建立Student表。
CREATE TABLE Student(SNO VARCHAR(20), Name VARCHAR(10), Age INTEGER, College VARCHAR(30))
2、用Create Table建立Course表: CREATE TABLE Course(CourseID VARCHAR(15), CourseName VARCHAR(30), CourseBeforeID VARCHAR(15))
3、用Create Table建立Choose CREATE TABLE Choose(SNO VARCHAR(20), CourseID VARCHAR(30), Score DECIMAL(5,2))
4、用INSERT语句向Student表中插入3个元组: 1)INSERT INTO Student VALUES('S00001', '张三', 20, '计算机学院')2)INSERT INTO Student VALUES('S00002', '李四', 19, '通信学院')3)INSERT INTO Student VALUES('S00003', '王五', 21, '计算机学院')
5、用INSERT语句向Course表中插入3个元组: 1)INSERT INTO Course VALUES('C1', '计算机引论', NULL)2)INSERT INTO Course VALUES('C2', 'C语言', 'C1')3)INSERT INTO Course VALUES('C3', '数据结构', 'C2')
6、用INSERT语句向Choose表中插入7个元组 1)INSERT INTO Choose VALUES('S00001', 'C1', 95)2)INSERT INTO Choose VALUES('S00001', 'C2', 80)3)INSERT INTO Choose VALUES('S00001', 'C3', 84)4)INSERT INTO Choose VALUES('S00002', 'C1', 80)5)INSERT INTO Choose VALUES('S00002', 'C2', 85)6)INSERT INTO Choose VALUES('S00003', 'C1', 78)7)INSERT INTO Choose VALUES('S00003', 'C3', 70)
7、用SELECT语句,查询计算机学院
SELECT SNO,Name FROM Student where college = '计算机学院'
8、用SELECT语句的between…and…表示查询条件,查询年龄在20~23岁的学生 SELECT * FROM Student where Age BETWEEN 20 and 30
9、用SELECT语句的COUNT()聚集函数,统计Student表中学生总人数。SELECT COUNT(*)FROM Student
10、分别用SELECT语句的max()、min()、sum()、avg()四个聚集函数,计算Choose表中C1.1)SELECT MAX(Score)FROM choose GROUP BY CourseID HAVING CourseID = 'C1' 2)SELECT MIN(Score)FROM choose GROUP BY CourseID HAVING CourseID = 'C1' 3)SELECT SUM(Score)FROM choose GROUP BY CourseID HAVING CourseID = 'C1' 4)SELECT AVG(Score)FROM choose GROUP BY CourseID HAVING CourseID = 'C1'
11、用SELECT语句对空值(NULL)的判断条件,查询Course表中先修课称编号为空值的课程编号和课程名称
SELECT CourseID,CourseName FROM Course where CourseBeforeID is NULL
12、用SELECT语句的连接查询,查询学生的学号、姓名、选修的课程以及成绩。SELECT Student.SNO,Name,CourseName,Score FROM Student,Choose,Course where Student.SNO = Choose.SNO AND Course.CourseID=Choose.CourseID
13、用SELECT的存在量词EXISTS,查询与“张三”在同一个学院学习的学生信息。SELECT * FROM Student WHERE college =(select college from Student where name='张三')AND EXISTS(SELECT * FROM Student WHERE name='张三')
14、用SELECT语句的嵌套查询,查询选修C1课程的成绩低于“张三”的学生的学号和成绩。
SELECT SNO,Score FROM Choose WHERE CourseID='C1'
AND Score <(select score FROM choose,student WHERE choose.SNO=Student.SNO AND name = '张三' AND CourseID='C1')
15、用SELECT语句的组合查询(UNION),查询选修了C1课程或者选修了C3课程的学生学号。
SELECT SNO FROM Choose WHERE CourseID='C1' UNION SELECT SNO FROM Choose Where CourseID='C3'
16、用SELECT语句的组合查询(UNION)与DISTINCT短语,查询选修了C1课程或者选修了C3课程的学生学号,并取消重复的数据。SELECT DISTINCT SNO FROM Choose WHERE CourseID='C1' UNION SELECT DISTINCT SNO FROM Choose Where CourseID='C3' 遇到的问题及解决:(程序编写调试过程中出现的错误及解决方法)
Sql查询语句的不熟悉,以及语法上的一些错误,经过查询和询问进行了改正。
心得体会:
通过本次实验了解了SQL语言的SELECT语句对数据的查询,学会了在Navicat for MySQL中用SELECT语句对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。
实验日志七
指导教师
祝家钰
实验时间:
2016 年
5月4日 学院
计算机
专业
智能科学大类
班级
0401410
学号
2014211727
姓名
周泓源
实验室
s331
实验题目
DQL补充仓库管理系统实验日志
实验目的:
加强对DQL语句的使用
实验内容:
仓库管理系统需求完成功能主要有以下几点:
1、仓库管理各种信息的输入,包括入库、出库、需求信息等的输入等。。。
2、仓库管理各种信息的查询、修改和维护;
3、设备采购报表的生成;
4、在库存管理中加入最高储备和最低设备字段,对仓库中的物资设备实现监控和报警 设备表(设备号、设备名称)
设备入库(设备号、入库时间、供应商、供应商电话、入库数量、价格、采购员)
设备出库(设备号、使用部门、出库时间、出库状况、经手人、出库数量、领取人、用途)现有库存表(设备号、现有库存总数、最大库存、最小库存)
部门需求表(设备号、部门名称、需要数量、需求开始时间、需求结束时间)
设备采购计划表(设备号、现有总库存数、最大库存、购买数量、供应商、价格、计划采购时间)要求:
1、仓库设备可自己设定(比如 邮电大学资产处的仓库,仓库里有各种型号电脑)
2、定义基础表(表结构里面的数据类型自己定义)
3、给表里面输入一些基础数据(自己设定)
4、查询仓库里面设备的总类型量
5、查询仓库某一入库时间(某一天)的所有入库设备
6、查询仓库的设备出库某一领取人(可模糊查询)在某一出库时间范围的设备情况
7、查询出现有库存表中已经是小于等于最小库存的设备号及名称,以准备采购。
8、查询某一部门需求的某一设备在库存里面是否够该部门需求数量?
9、根据某一设备库存总数已经低于最小库存数量警戒线的设备和最大库存的上限,并自动
查询生成出该设备的设备采购计划表(包括采购计划表的设备号、现有总库存数、最大库存、该购买数量的信息)
2、源码:
CREATE TABLE PCin(PCid INTEGER NOT NULL, TimeIN VARCHAR(20)NOT NULL PRIMARY KEY, Sup VARCHAR(20), SupTel VARCHAR(20), NumIN INTEGER, Price DOUBLE(10,2), buyer VARCHAR(20))
CREATE TABLE PCout(PCid INTEGER NOT NULL, Department VARCHAR(20), TimeOut VARCHAR(20)NOT NULL PRIMARY KEY, NumOut INTEGER, UsePerson VARCHAR(20), HowUse VARCHAR(20), PCstate VARCHAR(20))
CREATE TABLE Stock(PCid INTEGER NOT NULL PRIMARY KEY, SUM INTEGER, MAX INTEGER, MIN INTEGER)
CREATE TABLE req(PCid INTEGER NOT NULL, Department VARCHAR(20), ReqNum INTEGER, ReqDateStart VARCHAR(20), ReqDateEnd VARCHAR(20))
CREATE TABLE BuyPCPlan(PCid INTEGER NOT NULL, SUM INTEGER, MAX INTEGER, BuyNum INTEGER, Sup VARCHAR(20), Price DOUBLE(5,2), BuyPlanDate VARCHAR(20)NOT NULL PRIMARY KEY)
3、给表里面输入一些数据
4、Buypcplan表:
Pc表:
Pcin表:
Pcout表:
Req表:
Stock表:
4、查询仓库里面设备的总类型量 源码:
SELECT count(*)FROM pc;
5、查询仓库某一入库时间(某一天)的所有入库设备(2016-5-02为例)源码:
SELECT PCName FROM pc WHERE PCid IN(SELECT PCid FROM pcin where TimeIN='2016-5-02');
6、查询仓库的设备出库某一领取人(可模糊查询)在某一出库时间范围的设备情况(2016年5月)源码: SELECT PCstate FROM pcout WHERE TimeOut LIKE “2016-5-%”;
7、查询出现有库存表中已经是小于等于最小库存的设备号及名称,以准备采购。源码:
SELECT pc.* FROM stock,pc WHERE stock.PCid=pc.PCid AND SUM<=MIN;
8、查询某一部门需求的某一设备在库存里面是否够该部门需求数量。通过比较库存数量(SUM)和需求数量(ReqSum)源码:
SELECT req.Department,stock.SUM,req.ReqNum FROM stock,req WHERE stock.PCid=req.PCid;
9、根据某一设备库存总数已经低于最小库存数量警戒线的设备和最大库存的上限,并自动
查询生成出该设备的设备采购计划表 源码:
SELECT buypcplan.PCid,buypcplan.SUM,buypcplan.MAX,buypcplan.BuyNum
FROM buypcplan,stock WHERE stock.PCid=buypcplan.PCid AND stock.SUM < stock.MIN;
遇到的问题及解决:
对于有些逻辑上的问题需要一定的理解,并且对sql语句有一定的不熟悉。通过看书询问进行解决。
心得体会: 对于语句的使用要一步步的探索,不能盲目使用,根据这些表的关系以及题目的要求对这些sql语句再来进行使用。通过这次实验了解了sql语句的具体应用以及sql语句的强大。
实验日志八
指导教师
祝家钰
实验时间:
2016 年
5月 11 日 学院
计算机
专业
智能科学大类
班级
0401410
学号
2014211727
姓名
周泓源
实验室
s331
实验题目:
MySQL的存储过程 实验目的:
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。存储过程分为两类:1.系统提供的存储过程;2.用户自定义存储过程。
存储过程具有的优点:1.存储过程允许标准组件式编程;2.存储过程能够实现较快的执行速度;3.存储过程能够减少网络流量;4.存储过程可被作为一种安全机制来充分利用。存储过程是可复用的组件!想象一下如果你改变了主机的语言,这对存储过程不会产生影响,因为它是数据库逻辑而不是应用程序。存储过程是可以移植的!
本次实验了解MySQL存储过程的创建、修改和删除的方法和步骤,掌握在Navicat for MySQL中对存储过程的进行创建、修改和删除,掌握在MySQL Command Line Client调用参数和不带参数的存储过程。
实验内容:(叙述自己编写的程序)
1.启动Navicatfor MySQL,在MySQL –新建连接中完成连接参数配置。2.登录到本地数据库服务器后,连接到db5536数据库上。
Use db5536
DELIMITER //
3.执行
五、教学过程中
(三)实验内容的1部分的(2)、(3)步骤创建及调用不带参数的存储过程,验证不带参数的存储过程和调用方法。
Create procedure first_p()Select 'Hello MySQL,This is my first procedure ' //
Create procedure second_p()Select current_date from cqupt //
CALL first_p()//
CALL second_p()//
4.在步骤3的基础上,创建存储过程third_p(),显示表cqupt中的数据,并对其进行调用测试。
Create procedure third_p()Select * from cqupt //
CALL third_p()//
5.执行
五、教学过程中
(三)实验内容的第2部分创建及调用带参数的存储过程,验证带参数的存储过程的创建和调用方法。
CREATE PROCEDURE simpleproc(OUT param1 INT)SELECT COUNT(*)INTO param1 FROM cqupt //
CREATE PROCEDURE simpleproc1(IN param1 INT)SET @x = param1-100 //
CALL simpleproc(@a)// Select @a//
CALL simpleproc1(5500)// Select @x//
6.在步骤5的基础上,创建存储过程simpleproc2(),对传入参数进行乘以10的处理,变量定义@x,并对其进行调用测试。
CREATE PROCEDURE simpleproc2(IN param1 INT)SET @x = param1 * 10 //
CALL simpleproc2(50)// Select @a//
CALL simpleproc2(0)// Select @a//
7.用Drop Procedure语句删除存储过程first_p。drop procedure first_p//
遇到的问题及解决:(程序编写调试过程中出现的错误及解决方法)
对语句的理解不够透彻,以及在实验中经常出现一些低级错误,通过仔细阅读指导书进行解决。
心得体会:通过本次实验,很好了解了MySQL的存储过程的创建、修改和删除的方法和步骤
对其存储过程有了一定的了解,同时掌握了在MySQL Command Line Client调用参数和不带参数的存储过程。对其也有了一定了解。
实验日志九
指导教师
祝家钰
实验时间:
2016 年
5月 18 日 学院
计算机
专业
智能科学大类
班级
0401410
学号
2014211727
姓名
周泓源
实验室
s331
实验题目:
MySQL 应用开发环境的建立
实验目的:
通过在 Windows平台下,搭建 Apache Httpd Web 服务器,PHP 脚本支持,访问 MySQL 数据库等,学习了解 MySQL 应用开发环境的建立过程。
本次实验通过安装 Apache HTTD Server 2.2、PHP 5.3.28,配置 httpd.conf 和 PHP.ini 文件,完成 MySQL 的 PHP 应用开发环境的建立。实验内容:(叙述自己编写的程序)
1.安装 Apache httpd 服务器
2.安装 MySQL 数据库服务器
MySQL 数据库服务器安装已经完成。3.php5.3.28 安装
在httpd.conf 文件最后面添加如下代码,并保存文件。PHPIniDir “D:/php5.3.28” LoadModule php5_module “D:/php5.3.28/php5apache2_2.dll” AddType application/x-httpd-php.php.html 语句功能:使apache服务器支持php文件解析
将 刚 刚 查 找 到 的 extension_dir 前 面 的 ; 去 掉,并 将 其 设 置 为 extension_dir=“D:/php5.3.28/ext”。语句功能:使用此版本的php。
保存 php.ini 文件,点击右下角,找到 Apache 2.2 图标,单击右键,选择 Open Apache Monitor,出现 Apache Service Monitor 对话框,点击 Restart 按钮重启 Apache 让刚刚修改的配置生效,或者在前面的命令行窗口中,输入 httpd –k restart 回车,重新启动 Apache http 服务。如果有错误,根据错误 信息对前面的配置文件进行修改。
用记事本建立 php 测试文件 phpinfo.php,将起放置到 Apache Httpd 的文件目 录 C:Program Files(x86)Apache Software FoundationApache2.2htdocs 下,phpinfo.php 内容如下 重启两次apache 结果:在浏览器中打开 http://localhost:8080/phpinfo.php
此时,Apache 已经支持 PHP 和mysql了。
用记事本建立 php 测试文件 mysqlconn.php,将起放置到 Apache Httpd 的文件 目 录 C:Program Files(x86)Apache Software FoundationApache2.2htdocs下,mysqlconn.php 内容如下: 语句的功能:
定义一个myconn变量,用if语句进行判断,如果连接成功则输出数据库连接成功!可以申请老师检查!结果:
遇到的问题及解决:(程序编写调试过程中出现的错误及解决方法)
安装过程出现了一些问题,因为之前电脑上有,但是还是需要重新配置,所以通过重新配置环境,使得实验完成。
心得体会:
通过本次实验完成 MySQL 的 PHP 应用开发环境的建立,了解了MySQL 应用开发环境的建立过程。
实验日志十
指导教师
祝家钰
实验时间:
2016 年
5月 25 日 学院
计算机
专业
智能科学大类
班级
0401410
学号
2014211727
姓名
周泓源
实验室
s331
实验题目:
MySQL应用开发环境的建立(C/S)
实验目的:
在Windows平台下,通过JDBC连接MySQL数据库,编写java程序对数据库操作,学习了解C/S模式下的MySQL应用开发
实验内容:(叙述自己编写的程序)
1.下载mysql-connector-java并且解压到d盘。2.建立student表并填入数据
语句如下:
CREATE table student(sno char(7)NOT NULL, sname VARCHAR(8)not NULL, sex char(2)NOT NULL);INSERT INTO student(sno,sname,sex)VALUES('S0001','张三','男');INSERT INTO student(sno,sname,sex)VALUES('S0002','李四','男');INSERT INTO student(sno,sname,sex)VALUES('S0003','王五','男');这样便有了一个表:
3.配置JDBC 运行eclipse,从菜单中选择“Windows—>Preferences” 从左边的展开“Java”项,选中“Installed JREs” 选中表格中已安装的JRE 点击“Edit”按钮,出现“Edit JRE”窗口 点击“Add External JARs”按钮,出现“Jar Selection”窗口,在解压mysql-connector-java-5.1.38.zip的目录中找到
mysql-connector-java-5.1.38-bin.jar,并点击“打开 点击“Finish”按钮完成添加 4.编写java程序
在eclipse中新建一个Java Project输入Project名称“JDBCTest” 选中已建立的Project“JDBCTest”,点击右键,在JDBCTest中新建一个类输入类名“JDBCTest” 在“JDBCTest.java”中输入程序 程序如下:
package jDBCTest;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;
publicclass JDBCTest {
publicstaticvoid main(String[] args){
// TODO Auto-generated method stub try{ Class.forName(“com.mysql.jdbc.Driver”);String url=“jdbc:mysql://127.0.01:3306/test”;
String user=“root”;String passwd = “mysql”;Connection if(!connection.isClosed())System.out.println(“Succeeded connection to the connection=DriverManager.getConnection(url,user,passwd);Databash”);
} } 运行结果:Statement statement=connection.createStatement();String sql=“select * from student”;ResultSet rs = statement.executeQuery(sql);System.out.println(“学号”+“t”+“姓名”);String name = null;while(rs.next()){ name = rs.getString(“sname”);System.out.println(rs.getString(“sno”)+“t”+name);} rs.close();connection.close();}catch(ClassNotFoundException e){ System.out.println(“Sorry,can't find the Driver!”);e.printStackTrace();}catch(SQLException e){ e.printStackTrace();}catch(Exception e){ e.printStackTrace();}
修改java程序实现对student表中数据的增加和删除。对java中的sql语句进行修改,添加一个插入语句。
String sql=“INSERT INTO student(sno,sname,sex)VALUES('S0004','杨鑫磊','男')”;
statement.executeUpdate(sql);sql=“select * from student”;ResultSet rs=statement.executeQuery(sql);运行结果:
遇到的问题及解决:(程序编写调试过程中出现的错误及解决方法)
结合eclipse运用java对数据库进行操作,由于是第一次做比较陌生,在插入语句上有一些问题,但是通过询问和查阅很好的完成了插入语句的编写以及在eclipse的运行。
心得体会:
通过JDBC连接MySQL数据库,编写java程序对数据库操作,学习和了解了C/S模式下的MySQL应用开发。很好地完成了要求。也了解了数据库与eclipse的联系对JDBC有了一定的认知。
实验日志十一
指导教师
祝家钰
实验时间:
2016 年
6月 1 日 学院
计算机
专业
智能科学大类
班级
0401410
学号
2014211727
姓名
周泓源
实验室
s331
实验题目:
MySQL 的触发器
实验目的:
触发器是特定事件出现的时候,自动执行的代码块,类似于存储过程。触发 器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器 是不能被直接调用的,由 DBMS 自动执行。
触发器具有这些功能:
1、允许/限制对表的修改;
2、自动生成派生列,比 如自增字段;
3、强制数据一致性;
4、提供审计和日志记录;
5、防止无效的事 务处理;
6、启用复杂的业务逻辑。
本次实验了解 MySQL 触发器的创建、修改和删除的方法和步骤,掌握在 Navicat for MySQL 中对触发器的进行创建、修改和删除,掌握触发器触发测试 的方法。
实验内容:(叙述自己编写的程序)
1.启动 Navicat for MySQL,在 MySQL – 新建连接中完成连接参数配置。2.登录到本地数据库服务器后,连接到 test 数据库上。
3.执行
五、教学过程中
(三)实验内容的第一部分创建简单触发器,验证触发器 的创建和触发器的触发测试。触发器创建: use test;Create trigger audit_student
Before insert On student
For each row
Begin
Insert into student_log(Who,whattime)Values(current_user,current_timestamp);
End;触发测试:
select * from student_log;工作结果:
4.执行
五、教学过程中
(三)实验内容的第二部分改造简单触发器,增加触发类 型判断功能,验证触发器的改造和改造后的触发器触发测试。改造:alter table student_log add(action varchar(20));增加的语句:Begin
Insert into student_log(Who,whattime,action)Values(current_user,current_timestamp,'插入语句触发');
End 测试结果:
5.自行编写 student 表的触发器 aduit_student_update,在对 student 表进行 更新操作前触发,触发时,向 student_log 表写入触发用户、触发时间和触发类 型。并对该新建进行触发测试。更新语句:
UPDATE student SET sage=40 WHERE sage=50;触发器更新语句:use test;Create trigger audit_student_update
Before UPDATE On student
For each row
Begin
Insert into student_log(Who,whattime,action)Values(current_user,current_timestamp,'更新操作前触发');
End;结果:
6.自行编写 student 表的触发器 aduit_student_delete,在对 student 表进行 删除操作后触发,触发时,向 student_log 表写入触发用户、触发时间和触发类 型。并对该新建进行触发测试。删除语句:
DELETE FROM student WHERE sname='吴思远';触发器删除语句: use test;Create trigger audit_student_delete
AFTER DELETE On student
For each row
Begin
Insert into student_log(Who,whattime,action)Values(current_user,current_timestamp,'删除操作后触发');
End;结果:
遇到的问题及解决:(程序编写调试过程中出现的错误及解决方法)
触发器语句的不熟悉,在自行编写 student 表的触发器 aduit_student_delete的时候一些语法上出现了错误,及时进行了改正。
心得体会:
了解了数据库的触发器,以及对触发器有了一定的认识。了解 MySQL 触发器的创建、修改和删除的方法和步骤,掌握了在Navicat for MySQL 中对触发器的进行创建、修改和删除,掌握触发器触发测试的方法。
实验日志十二
指导教师
祝家钰
实验时间:
2016 年
3月 23 日 学院
计算机
专业
智能科学大类
班级
0401410
学号
2014211727
姓名
周泓源
实验室
s331
实验题目:SQL 语言数据控制语言 DCL
实验目的:
SQL 的数据控制通过 DCL(数据控制语言)实现。DCL 通过对数据库用户的授 权和权限回收命令来实现有关数据的存取控制,以保证数据库的安全性。
本次实验了解 DCL 语言的 GRANT 和 REVOKE 语句对数据库存取权限的控制,学会在Navicat for MySQL中用GRANT、REVOKE语句对数据库存取权限进行设定。
实验内容:(叙述自己编写的程序)
执行以下内容:
1.启动 Navicat for MySQL,在 MySQL – 新建连接中完成 root 连接参数配置。2.登录到本地数据库服务器后,连接到 mysql 数据库上。
3.执行
五、教学过程中
(三)实验内容的第一部分创建用户 jason,密码为 abc123, 并授权该用户完整访问数据库 test。即执行如下 DCL 语句: GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;
4.启动另外一个 Navicat for MySQL,在 MySQL – 新建连接中完成 jason 连接 参数配置。
双击 jason 连接到该用户对应的数据库 test 上。test 整个数据库。
点击查询->新建,执行如下语句
select host,user,password from mysql.user;我们看到,这条 SELECT 语句被拒绝执行,没有查询到相应的数据。为了能查询 到相应的数据,我们必须进行授权操作。运行 MySQL 的命令行客户端软件。在MySQL 的命令行客户端软件中进行登录然后执行grant select on mysql.user to jason;语句对其进行授权。授权结果:
接下来,切换到 MySQL 的命令行客户端,执行如下两条语句,创建一个简单的表,为后面的 INSERT 授权操作做准备。use mysql;create table dcltest(id int,name varchar(20));切换到 Navicat for MySQL,新建一个查询,执行如下插入语句 insert into mysql.dcltest(id,name)values(1,'张三丰');
我们看到,这条 INSERT 语句被拒绝执行,没有完成数据的插入。为了能插入数 据,我们必须进行授权操作。
切换到 MySQL 的命令行客户端,执行如下授权语句,进行 INSERT 权限的授予,grant insert on mysql.dcltest to jason;授权后,现在切换到 Navicat for MySQL,执行之前窗口中的插入语句
输入如下查询语句
select * from mysql.dcltest;
再对其进行授权:
grant select on mysql.dcltest to jason;授权之后进行查询:
权限授予后,root(数据库超级用户)可以进行权限的回收。
切换到 Navicat for MySQL,新建一个查询,执行如下插入语句: insert into mysql.dcltest(id,name)values(2,'扫地僧');
目前,我们能顺利的插入数据到表 mysql.dcltest 中,接下来我们要回收该权限,切换到 MySQL 的命令行客户端,执行如下权限回收语句,进行 INSERT 权限的回 收:
revoke insert on mysql.dcltest from jason;切换到 Navicat for MySQL,新建一个查询,执行如下插入语句: insert into mysql.dcltest(id,name)values(3,'天山童姥');
我们看到,由于权限被回收,这条 INSERT 语句被拒绝执行,没有完成数据的插 入。新建一个查询,执行如下查询语句 select * from mysql.dcltest;
目前,我们能顺利的查询表 mysql.dcltest 中的数据,接下来我们要回收该权限,切换到 MySQL 的命令行客户端,执行如下权限回收语句,进行 SELECT 权限的回收 revoke select on mysql.dcltest from jason;
切换到 Navicat for MySQL,执行之前的查询语句
我们看到,由于权限被回收,这条 SELECT 语句被拒绝执行,没有完成数据的查 询。
请大家在理解以上内容的基础上,1对mysql 数据库的dcltest 表的UPDATE 权限进行 GRANT 权限授予 grant update on mysql.dcltest to jason;
Mysql下的运行结果
2对mysql 数据库的 dcltest 表的UPDATE 权限进行 EVOKE 权限回收操作(MySQL 的命令行客户端中执行),revoke update on mysql.dcltest from jason;
遇到的问题及解决:(程序编写调试过程中出现的错误及解决方法)
在本次实验中需要在MySQL 的命令行客户端中对mysql 数据库的表的权限进行权限授予 但是却忘了,所以老是得不到想要的结果,然后发现了这个问题,就解决了,也在Mysql下得到了想要的运行结果。
心得体会:通过本次实验了解了 DCL 语言的 GRANT 和 REVOKE 语句对数据库存取权限的控制,学会了在Navicat for MySQL中用GRANT、REVOKE语句对数据库存取权限进行设定。很好的完成了试验指标。
第二篇:数据库原理及应用实验报告 6
实验成绩
《数据库系统原理及应用》
实 验 报 告 六
专业班级:
计算机科学与技术
学
号:
201116910233
姓
名:
范晓曈
指导教师:
苏小玲
2013年
月
日 实验六名称:
SQL Server存储过程
一、实验内容及要求
1.使用输入参数存储过程的创建和执行
任务1:查询学生的学号、姓名、选修的课程号、课程名、课程学分,将学生所在系作为输入参数,默认值为“软件工程系”。执行此存储过程,并分别指定一些不同的输入参数值,查看执行过程。
2.修改视图
任务1:查询指定系的男生人数,其中系为输入参数,人数为输出参数。执行此存储过程,并分别指定一些不同的输入参数值,查看执行过程。
任务2:查询指定学生(姓名)在指定学期的选课门数和考试平均成绩,要求姓名和学期为输入参数,选课门数和平均成绩用输出参数返回,平均成绩保留到小数点后两位。
3.使用返回代码存储过程的创建和执行
任务1:查询指定学生(学号)的选课门数。如果指定学生不存在,则返回代码1;如果指定的学生没有选课,则返回代码2;如果指定学生有选课,则返回代码0,并用输出参数返回该学生的选课门数。
4.使用实现对数据库修改、删除和插入操作的存储过程创建和执行
任务1:删除指定学生(学号)的修课,如果指定的学生不存在,则显示提示信息“没有指定学生”;如果指定的学生没有选课,则显示提示信息“该学生没有选课”。学号为输入参数。
任务2:修改指定课程的开课学期。输入参数为:课程号和修改后的开课学期。
任务3:在course表中插入一行数据,课程号、课程名、学分、开课学期均为输入参数。课程号为C100、课程名为操作系统、学分为
4、开课学期为4,开课学期的默认值为3。如果学分大于10或者小于1,则不插入数据,并显示提示信息“学分为1~10之间的整数”。
二、实验目的
掌握存储过程的创建和执行;掌握存储过程中输入参数和输出参数的设置和使用方法。
三、实验步骤及运行结果
1.使用输入参数存储过程的创建和执行
任务1:查询学生的学号、姓名、选修的课程号、课程名、课程学分,将学生所在系作为输入参数,默认值为“软件工程系”。执行此存储过程,并分别指定一些不同的输入参数值,查看执行过程。
create procedure p_studentdept @dept char(20)='计科' as select s.sno,s.sname,c.cno,cname,s.credit from student s inner join sc on s.sno=sc.sno inner join Course c
on c.cno=sc.cno where sdept=@dept
2.修改视图
任务1:查询指定系的男生人数,其中系为输入参数,人数为输出参数。执行此存储过程,并分别指定一些不同的输入参数值,查看执行过程。
create procedure p_numberofBoy @dept char(20),@boynumber int output as select @boynumber=COUNT(*)from Student
where Ssex='男' and sdept=@dept
declare @boynumber int exec p_numberofBoy '计科' ,@boynumber output print @boynumber
declare @boynumber int exec p_numberofBoy '电信' ,@boynumber output print @boynumber
任务2:查询指定学生(姓名)在指定学期的选课门数和考试平均成绩,要求姓名和学期为输入参数,选课门数和平均成绩用输出参数返回,平均成绩保留到小数点后两位。
create proc p_studentInfo @name char(20),@semester int,@count_xk int output,@avg_sscore float output as select @count_xk=count(c.cno),@avg_sscore=Avg(sscore)from Student s join SC
on s.Sno =SC.Sno join Course c
on SC.Cno =c.Cno where s.Sname=@name and c.Semester =@semester
declare @count_xk int,@avg_grade float,@avg_sscore decimal exec p_studentInfo '范晓曈',2,@count_xk output,@avg_sscore output select @count_xk as 选课门数,@avg_sscore as平均成绩
3.使用返回代码存储过程的创建和执行
任务1:查询指定学生(学号)的选课门数。如果指定学生不存在,则返回代码1;如果指定的学生没有选课,则返回代码2;如果指定学生有选课,则返回代码0,并用输出参数返回该学生的选课门数。
create proc p_countxk @number decimal,@xk_number decimal output as if not exists(select Sno from Student where Sno=@number)return 1 else if not exists(select Sno from SC where Sno=@number)return 2 else begin select @xk_number=COUNT(sc.cno)from SC where Sno =@number return 0 End
declare @xk_number1 int exec p_countxk 201116910233,@xk_number1 output print @xk_number1
4.使用实现对数据库修改、删除和插入操作的存储过程创建和执行
任务1:删除指定学生(学号)的修课,如果指定的学生不存在,则显示提示信息“没有指定学生”;如果指定的学生没有选课,则显示提示信息“该学生没有选课”。学号为输入参数。
create proc p_delete @id numeric as if not exists(select * from Student where Sno=@id)return 1 if not exists(select * from SC where SC.Sno=@id)return 2 else return 0
declare @id numeric,@ret int exec @ret=p_delete 201116910232 if @ret =1 print '没有该学生!' if @ret =2 print '该学生没有选课!' if @ret =0 delete from SC where Sno=201116910232
declare @id numeric,@ret int exec @ret=p_delete 201116910222 if @ret =1 print '没有该学生!' if @ret =2 print '该学生没有选课!' if @ret =0 delete from SC where Sno=201116910222
declare @id numeric,@ret int exec @ret=p_delete 201116910211 if @ret =1 print '没有该学生!' if @ret =2 print '该学生没有选课!' if @ret =0 delete from SC where Sno=201116910211
任务2:修改指定课程的开课学期。输入参数为:课程号和修改后的开课学期。
create proc p_alter @kc char(20),@xq int as update course set semester=@xq where cno=@kc declare @kc char(20),@xq int exec p_alter 'C003',3
修改前:
修改后:
任务3:在course表中插入一行数据,课程号、课程名、学分、开课学期均为输入参数。课程号为C100、课程名为操作系统、学分为
4、开课学期为4,开课学期的默认值为3。如果学分大于10或者小于1,则不插入数据,并显示提示信息“学分为1~10之间的整数”。
create proc p_insert @kc_id varchar(20),@kc_name varchar(20),@xf decimal , @xq int as if(@xf >= 1 and @xf <=10)begin insert course(cno,cname,credit,semester)values(@kc_id,@kc_name,@xf,@xq)
end else print
'学分要在1~10之间!!'
declare @kc_id varchar(20),@kc_name varchar(20),@xf decimal,@xq int exec p_insert 'C006','操作系统',3.0,6
declare @kc_id char(20),@kc_name char(20),@xf decimal,@xq int exec p_insert 'C007','毛概',11.0,4
四、实验心得
在这次实验中,我明白了,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度,存储过程一般用来完成数据查询和数据处理操作。
无论什么时候执行存储过程,总要返回一个结果码,用以指示存储过程的执行状态。如果存储过程执行成功,返回的结果码是0;如果存储过程执行失败,返回的结果码一般是一个负数,它和失败的类型有关。我们在创建存储过程时,也可以定义自己的状态码和错误信息。
通过这次实验,让我深刻了解了数据库的功能,觉得它功能非常的强大,掌握存储过程的创建与执行,熟悉存储过程与批处理的区别。掌握带参数的存储过程的创建与执行。
第三篇:数据库实验报告
数据库实验报告
一、题目要求
某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:
银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名、电话号码、家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额、开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期和金额。
二、需求分析
这一部分主要是根据实验需求对银行系统需求中的实体、实体属性以及实体之间的关联进行确认,以便画出正确的概念模型。
2.1 实体确认
根据需求分析确认实体:银行员工、银行支行、客户、账户(其中:储蓄账户、支票账户是继承实体账户而来)、贷款、支付(弱实体)。
2.2 实体属性确认
银行员工:身份证号(pi)、姓名、电话号码、家庭地址、开始工作日期 银行支行:支行名、资产、城市
客户:身份证号、姓名、街道、所在城市 账户:账户号、余额、最近访问日期 支票账户:透支额 储蓄账户:利率 2.3 实体关系确认
账户和支行:N:1定义关系为Relationship_accout_bank 客户和贷款:M:N定义关系为Relationship_client_loan 客户和员工:M:1 定义关系为 Relation_client_staff 贷款和支行:1:N 定义关系为 Relationship_loan_bank 客户和账户:M:N 定义关系为 client__accout 贷款发放信息和贷款:N:1 定义关系为 Relationship_loan_pay 支行和员工:1:N 定义关系为Relationship_staff_bank
员工和员工:1:N 定义关系为 Relationship_lead
三、概念模型(CDM)
根据sybase power designer画出概念模型(CDM),如下图所示:
四、物理模型(PDM)
根据概念模型转化成物理模型(PDM),如下图所示:
第四篇:数据库实验报告
实验4SQL高级应用
【实验目的】
1、掌握在SQL SERVER 2005下进行数据还原的方法。
2、掌握SQL语句的查询统计功能和数据更改功能。
【实验内容】
1.还原factory数据库。
2.在factory数据库上,完成如下各题。
(1)删除factory数据库上各个表之间建立的关系。(2)*显示各职工的工资记录和相应的工资小计。
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。(6)显示最高工资的职工所在的部门名。
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。(8)*采用游标方式实现(6)小题的功能。(9)*采用游标方式实现(7)小题的功能。
(10)*先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。
【实验报告要求】
1.第(1)写出操作步骤。
2.其他各题写出实现要求的命令/程序,并列出执行结果。
【操作步骤】
1.还原factory数据库。
2.在factory基础上,有
(1)删除factory数据库上各个表之间建立的关系。
(2)*显示各职工的工资记录和相应的工资小计。
Select 职工号,姓名,工资from salary Order by 职工号
Compute sum(工资)by 职工号
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
select worker.职工号,worker.性别,depart.部门名,avg(工资)as'平均工资' from worker inner join depart on worker.部门号=depart.部门号 inner join salary on worker.职工号=salary.职工号
group by worker.职工号,worker.性别,depart.部门名
order by worker.职工号
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
insert into worker values('20','陈立','女','1955-03-08','1','1975-10-10',4)
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。
Insert into depart Values('5','设备处')对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
use factory Select b.部门号,c.姓名
from salary a,departb,worker c delete from worker where 职工号=20 delete from depart where 部门号=5(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。
Use factory Select b.部门名,c.职工号,c.姓名,b.部门名,a.日期,a.工资 from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and a.职工号=c.职工号and b.部门号=c.部门号(6)显示最高工资的职工所在的部门名。
Use factory Select b.部门名from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and c.部门号=b.部门号and a.职工号=c.职工号
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。
Use factory Select a.职工号,a.姓名,avg(b.工资)as平均工资from worker a,salary b where a.职工号=b.职工号 group by a.职工号,a.姓名
having avg(工资)<(select avg(工资)from salary)
第五篇:数据库实验报告
南华大学
计算机科学与技术学院
实验报告
(2013 ~2014 学
第二学期)
课程名称 实验名称
数据库原理与技术
姓名 张涛 学号 20124350230
专业 软件工程
班级 02班
地点
教师 刘征海 实验1 认识DBMS 一.实验题目
认识DBMS 二.实验要求
1.利用管理工具创建数据库、表和表间关系。
实验目的和注意事项 基本操作,进一步理解数 据库、表、表间关系的概念。
注意事项:创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。三.实验代码(内容)
(1)利用SQL Server Management Studio 创建数据库,名称为【学生选课
YYXXXX】。其中YY为专业代号,计算机为JS,软件工程为RJ,网络为WL,数媒为
SM;XXXX为各位同学的学号中的最后四位 实验目的:熟悉SQL Server Management Studio
(2)在【学生选课YYXXXX】中建立数据表,表的定义如下所示。
学生YYXXXX(学号,姓名,性别,出生日期,院系名称,备注);
课程YYXXXX(课程号,课程名,先行课,学分); 选修YYXXXX(学号,课程号,分数)。
要求定义每张表的主码,为属性选择合适的数据类型,决定是否允许为空,为【性别】和【学分】属性定义默认值。
(3)定义表之间的关系。
(4)分别为表录入几行数据记录,同时练习数据的修改和删除操作
2.利用SQL 语句创建数据库、表和表间关系 实验目的和注意事项
实验目的:熟悉创建数据库和数据表的SQL 语句。
注意事项:输入SQL 语句时应注意,语句中均使用西文操作符号。
实验内容
在SQL Server Management Studio 中新建查询,实现以下操作。(1)用SQL 语句创建数据库,名称为“StudentCourseYYXXXX”。其中YYXXXX 为各位同学的学号中的最后四位。
(2)用SQL 语句创建StudentCourseYYXXXX 中的3 张表,同时指定主码、外 码、默认值等。
(3)直接在表数据窗口中录入表数据记录。
实验 2 交互式 SQL(1)
一、数据库单表查询 实验目的和注意事项
实验目的:掌握单表查询SELECT、FROM、WHERE 的用法,特别要掌握比较运 算符、逻辑运算符的使用。注意事项:子句WHERE<条件>表示元组筛选条件;子句HAVING<条件>表示元
组选择条件;子句HAVING<条件>必须和GROUP BY 子句配合使用;注意输入SQL语句时均应使用西文操作符号。实验内容
(1)创建查询窗口,设置查询环境。(2)单表查询 实验步骤
(1)选择要查询的数据库,右击【新建查询】,或者选择系统菜单中的【文
件】|【新建】|【使用当前连接查询】命令,或者单击标准工具栏中的【新建查
询】按钮,即可新建一个查询窗口。如果查询数据库不是StudentCourseYYXXXX,则可在可用数据库下拉列表中进行选择,或用USE 语句调用。
(2)在查询窗口中输入SELECT 查询语句,对StudentCourseYYXXXX 数据库 进行查询操作。
① 查询计算机系全体学生的信息
② 查询姓“李”的学生的学号和姓名。
③ 查询课程表中先行课为空的课程名。
④ 查询考试成绩有不及格的学生的学号。
⑤ 求选修了C1 课程或C2 课程的学生的学号及成绩。
⑥ 查询全体计算机系学生的姓名及其年龄。
⑦ 查询计算机系在1986-1987 年之间出生的学生的姓名。
⑧ 查询姓“李”的前两个学生的学号和姓名。
⑨ 查询选修了两门以上课程的学生学号与课程数。
⑩ 查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。
二、数据库多表连接查询 实验目的和注意事项
实验目的:理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、JOIN子句的用法,特别要求比较内连接、外连接的结果。
注意事项:内连接、左外连接和右外连接的含义及表达方法;注意输入SQL 语 句时均应使用西文操作符号。实验内容
(1)创建查询窗口,设置查询环境。(2)多表复杂查询。实验步骤
新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行多表连接查询操作。(1)查询选修了【数据库原理】的计算机系的学生学号和姓名。
(2)查询每一门课的间接先行课(即先行课的先行课)。
(3)查询学生的学号、姓名、选修课程的名称和成绩。
(4)查询选修了课程的学生姓名。
(5)查询所有学生的信息和所选修的课程。
(6)查询已被选修的课程的情况和所有课程的名字。
(7)列出学生所有可能的选修情况。
(8)查找计算机系的学生选修课程数大于2 的学生的姓名、平均成绩和选课 门数,并按平均成绩降序排列。
实验 3 交互式 SQL(2)数据库嵌套查询和组合查询 实验目的和注意事项
实验目的:掌握查询中嵌套查询和组合查询的操作方法,进一步加深对 SELECT 语句的理解。
注意事项:子句的使用;注意语句的层次嵌套关系和括号的配对使用问题;
注意输入SQL 语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)分组查询。(3)统计查询。(4)嵌套查询。实验步骤
新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行嵌套查询和组合查询操作。
(1)统计选修了【数据库原理】课程的学生人数。
(2)查询没有选修【数据库原理】课程的学生信息。
(3)查询其他系中比计算机系学生年龄都小的学生。
(4)查询被0602001 学生或0602002 学生所选修的课程的课程号(用UNION 组合查询与IN 条件查询两种方法实现)。
(5)查询0602001 学生和0602002 学生同时选修的课程的课程号(用
INTERSECT 组合查询与EXISTS 嵌套子查询两种方法实现)。
(6)查询被0602001 学生选修,但没有被0602002 学生所选修的课程的课程
号(用EXCEPT 组合查询与NOT EXISTS 嵌套子查询两种方法实现)。
实验 4 交互式 SQL(3)数据的更新 实验目的和注意事项
实验目的:熟悉插入、修改和删除SQL 语句的用法。注意事项:对于INSERT 语句,要求理解默认值约束、空值约束在插入时所 起的作用。实验内容
(1)使用INSERT 语句在数据库的表中插入几行记录。(2)使用UPDATA 语句修改某个数据。(3)使用DELETE 语句删除某行记录。实验步骤
(1)新建查询窗口,选择StudentCourseYYXXXX 为当前数据库。
(2)在已建立StudentCourseYYXXXX 数据库和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 个表的基础上,向StudentCourseYYXXXX数据库中 的表更新数据。
① 向表StudentsYYXXXX 中插入(0601001,赵林, 男,1985-09-08,计算机)的记录。
② 向SCYYXXXX 表中添加一个学生的选课记录,学号为0601001,所选的课
程号为C2。SC表中有Sno、Cno、Grade 这3 个列。这里只知道学号和课程号,不知道成绩值。
③ 向表StudentsYYXXXX 中插入(0601002,张修雨,default)记录,该记录 的数据中default 表示默认值‘男’,其他数据表示空值。
④ 用CREATE 语句建立表StudentBAK1YYXXXX,包含(与Students 的Sno、Sname、Sdept 相同)3 个字段,然后用INSERT SELECT 语句实现向
StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的计算机系学生的学号、姓名、所在系的信息。
⑤ 用 SELECT...INTO 语句实现把StudentsYYXXXX 表中1986 年后(包含
1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2YYXXXX。
⑥ 将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。
⑦ 将选修了课程名为【数据库原理】的学生成绩加5 分。⑧ 将StudentCourseYYXXXX
数据库的StudentBAK1YYXXXX 表中所有姓赵的 同学删除。
⑨ 删除计算机系选修成绩不及格的学生选修记录。⑩ 将除。StudentCourseYYXXXX
数据库的StudentBAK2YYXXXX 表中的所有行删
四.实验总结
实验一要注意创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。输入SQL 语句时应注意,语句中均使用西文操作符号;实验二应注意注意group和having以及where的搭配使用的情况;实验三注意注意输入SQL 语句时均应使用西文操作符号,子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;实验四注意输入SQL 语句时均应使用西文操作符号,对于INSERT 语句,要求理解默认值约束、空值约束在插入时所起的作用。注意插入,修改,新建表,删除语句的写法,并且掌握把原表中的数据转存到新表中的语句写法。