实验一 安装MySQL、Navicat

因为自己有一台云服务器,所以使用的是部署在云服务器上的MySQL,在linux服务器上的安装过程就略过了,我在云服务器上配置好账号密码即可

在本地远程连接云服务器的MySQL,我使用的是Navicat,这是一款非常好用且功能强大的数据库管理软件,支持市面上主流的数据库,安装成功后连接上我的云服务器的数据库后结果如下图

实验二 使用MySQL建库、表

  1. 启动数据库服务如下,其中的数据库是我服务器中其他应用部署的数据库

  2. 创建一个Demo数据库

  3. 在数据库Demo上,建立如下所示的表customer:

    字段名 类型 长度 含义
    customid varchar 17 顾客编号
    name varchar 10 姓名
    sex varchar 2 性别
    age int 4 年龄
    xfg dec 10,2 消费金额
    address varchar 50 地址
    memo varchar 100 备注

    设计表:

    完成:

实验三 MySQL查询分析器

  1. 启动查询分析器:

  2. 用SQL语言建表student

    字段名 类型 长度 含义
    id varchar 17 学生编号
    name varchar 10 姓名
    sex varchar 2 性别
    age integer 年龄
    score numeric 6,2 总成绩

    SQL语句:

         create table students (
             id varchar(17) comment '学生编号',
             name varchar(10) comment '姓名',
             sex varchar(2) comment'性别',
             age integer comment'年龄',
             score numeric(6,2) comment '总成绩'
         )

    点击运行后:

    查看类型和备注是否也创建:

  3. 用SQL语言向表student插入如下6条记录:

    A0001 赵一 20 580.00
    B0002 钱二 19 540.00
    C0003 孙三 21 555.50
    D0004 李四 22 480.00
    E0005 周五 20 495.50
    F0006 吴六 19 435.00

    SQL语句:

         insert into students values
         ('A0001','赵一','男',20,580.00),
         ('B0002','钱二','女',19,540.00),
         ('C0003','孙三','男',21,555.50),
         ('D0004','李四','男',22,480.00),
         ('E0005','周五','女',20,495.50),
         ('F0006','吴六','男',19,435.00)

    运行成功:

    结果:

  4. 练习查询语句,查找年龄大于等于20岁,成绩低于500分的记录:

    SQL语句:

         select * from students
         where age>=20&&score<500

    结果:

实验四 SQL语言的DDL

  1. 用Create Table建表aa,表结构如下所示:

    字段名 类型 长度 含义
    Aa1 Varchar 20 字段1
    Aa2 Int 字段2
    Aa3 Dec 10,2 字段3

    SQL语句:

         create table aa(
         Aa1 varchar(20) comment'字段1',
         Aa2 int comment'字段2',
         Aa3 dec(10,2) comment'字段3'
         )

    结果:

  2. 用Create Table建表bb,表结构如下所示:

    字段名 类型 长度 含义
    Bb1 Varchar 30 字段1
    Bb2 Int 字段2
    Bb3 Dec 6,2 字段3

    SQL语句:

         create table bb(
         Bb1 varchar(30) comment '字段1',
         Bb2 int comment '字段2',
         Bb3 dec(6,2) comment '字段3'
         )

    结果:

  3. 用Drop Table删除表aa:

    SQL语句:

         drop table aa

    结果:

  4. 用Alter Table修改表bb,添加一个字段Bb4,类型Varchar,长度20:

    SQL语句:

         alter table bb add Bb4 varchar(20)

    结果:

  5. 用Create View对表Bb的bb1和Bb4建立一个视图Viewbb,字段名为Viewbb1和Viewbb2:

    SQL语句:

         create view Viewbb( Viewbb1,Viewbb2)
         as 
         select  Bb1,Bb2
         from bb
    

    结果:

  6. Drop View删除视图Viewbb:

    SQL语句:

         drop view Viewbb
  7. 用Create Index对表bb的Bb3字段建立一个升序索引,索引名Index_bb:

    SQL语句:

         create index Index_bb on bb(Bb3)
  8. 用Drop Index删除索引Index_bb:

    SQL语句:

         drop index Index_bb on bb
  9. 将以上的SQL语言存盘,以备老师检查:

实验五 SQL语言的DML

  1. 打开数据库SQL Server 2000的查询分析器,用Create Table建表cc,表结构如下所示:

    字段名 类型 长度 含义
    Cc1 Varchar 20 字段1
    Cc2 Int 字段2
    Cc3 Dec 10,2 字段3
    Cc4 Varchar 60 字段4

    SQL语句:

         create table cc(
             Cc1 varchar(20) comment '字段1',
             Cc2 int comment '字段2',
             Cc3 dec(10,2) comment '字段3',
             Cc4  varchar(60) comment '字段4'
         )   
  2. 用INSERT语句对表cc插入6条记录:

    Cc1 Cc2 Cc3 Cc4
    赵一 20 580.00 重邮宿舍12-3-5
    钱二 19 540.00 南福苑5-2-9
    孙三 21 555.50 学生新区21-5-15
    李四 22 480.00 重邮宿舍8-2-22
    周五 20 495.50 学生新区23-4-8
    吴六 19 435.00 南福苑2-5-12

    SQL语句:

         insert into cc (Cc1,Cc2,Cc3,Cc4) values 
         ('赵一','20','580.00','重邮宿舍12-3-5'),
         ('钱二','19','540.00','南福苑5-2-9'),
         ('孙三','21','555.50','学生新区21-5-15'),
         ('李四','22','480.00','重邮宿舍8-2-22'),
         ('周五','20','495.50','学生新区23-4-8'),
         ('吴六','19','435.00','南福苑2-5-12')

    结果:

  3. 用UPDATE语句,将表cc中cc2小于等于20的记录,把cc3字段加5

    SQL语句:

         update cc
         set cc3=cc3+5
         where cc2<=20

    更新前:

    更新后:

  4. 用DELETE语句将表cc中cc2大于等于20和cc3大于等于500的记录删除

    SQL语句:

         delete from cc
         where Cc2>=20 and Cc3>=500

    删除前:

    删除后:

  5. 将以上的SQL语言存盘,以备老师检查

实验六 DML的数据查询

  1. 打开数据库SQL Server 2000的查询分析器,用Create Table建表Student,表结构如下所示:

    字段名 类型 长度 含义
    ID Varchar 20 学号
    Name Varchar 10 姓名
    Age Int 年龄
    Department Varchar 30 所在系

    SQL语句:

         create table student(
         ID varchar(20) comment '学号',
         Name varchar(10) comment '姓名',
         Age int comment '年龄',
         Department varchar(30) comment '所在系'
         )
  2. 用Create Table建表Course,表结构如下所示

    字段名 类型 长度 含义
    CourseID Varchar 15 课程号
    CourseName Varchar 30 课程名
    CourseBefore Varchar 15 先行课

    SQL语句:

         create table Course(
         CourseID varchar(15) comment'课程号',
         CourseName varchar(30) comment'课程名',
         CourseBefore varchar(15) comment'先行课'
         )
  3. 用Create Table建表Choose,表结构如下所示

    字段名 类型 长度 含义
    ID Varchar 20 学号
    CourseID Varchar 30 课程号
    Score Dec 5,2 成绩

    SQL语句:

         create table Choose(
         ID varchar(20) comment'学号',
         CourseID varchar(30) comment'课程号',
         Score Dec(5,2) comment '成绩'
         )
  4. 用INSERT语句向表Student中插入3条记录

    ID Name Age Department
    00001 张三 20 计算机系
    00002 李四 19 计算机系
    00003 王五 21 计算机系

    SQL语句:

         insert into student (ID,Name,Age,Department) values
         ('00001','张三','20','计算机系'),
         ('00002','李四','19','计算机系'),
         ('00003','王五','21','计算机系')

    结果:

  5. INSERT语句向表Course中插入3条记录:

    CourseID CourseName CourseBefore
    C1 计算机引论
    C2 PASCAL语言 C1
    C3 数据结构 C2

    SQL语句:

         insert into Course(CourseID,CourseName,CourseBefore) values
         ('C1','计算机引论',''),
         ('C2','PASCAL语言','C1'),
         ('C3','数据结构','C2')

    结果:

  6. 用INSERT语句向表Choose中插入7条记录:

    ID CourseID Score
    00001 C1 95
    00001 C2 80
    00001 C3 84
    00002 C1 80
    00002 C2 85
    00003 C1 78
    00003 C3 70

    SQL语句:

         insert into Choose(ID,CourseID,Score) values
         ('00001',   'C1',   '95'),
         ('00001',   'C2',   '80'),
         ('00001',   'C3',   '84'),
         ('00002',   'C1',   '80'),
         ('00002',   'C2',   '85'),
         ('00003',   'C1',   '78'),
         ('00003',   'C3',   '70')

    结果:

  7. 用SELECT语句求计算机系学生的学号和姓名

    SQL语句:

         select Name,ID from student
         where Department='计算机系'

    结果:

  8. 用SELECT语句求学生的学号、姓名、选的课程名及成绩

    SQL语句:

         select student.ID,Name,CourseName,Score
         from student,Choose,Course
         where student.ID=Choose.ID and Choose.CourseID=Course.CourseID

    结果:

  9. 用SELECT语句求C1课程的成绩低于张三的学生的学号和成绩

    SQL语句:

         select student.ID,Score
         from student,Choose
         where student.ID=Choose.ID and CourseID='C1' and Score <(
                     select Score
                     from Choose,student
                     where Name='张三' and CourseID='C1' and student.ID=Choose.ID
                 ) 

    结果:

  10. 用SELECT语句求选了C2课程并且也选了C3课程的学生的学号

    SQL语句:

         select ID from Choose
         where CourseID='C2' and ID=any(
             select ID from Choose  where CourseID='C3'
         )

    结果:

  11. 将以上的SQL语言存盘,以备老师检查

实验七 SQL语言的DCL

  1. 用Windows2000的Administrator(系统管理员)用户登录系统,建立一个新用户DCL,用户名和口令都相同

  2. 打开数据库SQL Server 2000的查询分析器,用GRANT语句将ALL PRIVILEGES的系统特权授给用户DCL

    SQL语句:

         grant ALL PRIVILEGES
         on *.*
         to DCL
    
  3. 注销用户Administrator,用DCL登录系统,打开数据库SQL Server 2000的查询分析器,用CREATE DATABASE语句建立一个新的数据库DCLDemo

    SQL语句:

         create database  DCLDemo

    结果:

  4. 在数据库DCLDemo上建立一个表Abc,表结构如下图所示

    字段名 类型 长度 含义
    A1 Varchar 20 字段1
    B2 Dec 4,2 字段2
    C3 Int 字段3

    SQL语句:

         create table Abc(
         A1 varchar(20) comment '字段1',
         B2 Dec(4,2) comment '字段2',
         C3 int comment '字段3'
         )
  5. 在表Abc中插入1条记录,如下图所示:

    A1 B2 C3
    DCL测试 90.5 30

    SQL语句:

         insert into Abc(A1,B2,C3)values
         ('DCL测试','90.5','30')

    结果:

  6. 注销用户DCL,用Administrator登录系统,用REVOKE语句将用户DCL在表Abc中修改A1的权利收回

    SQL语句:

         revoke all 
         on *.*
         from DCL

实验八 SQL语言综合练习

  1. 打开数据库SQL Server 2000的查询分析器,用Create Table建表Exam,表结构如下图所示:

    字段名 类型 长度 含义
    id varchar 17 学生编号
    name varchar 10 姓名
    sex varchar 2 性别
    age integer 年龄
    score numeric 6,2 总成绩
    address varchar 50 地址
    memo varchar 100 备注

    SQL语句:

         create table Exam(
         id varchar(17) comment'学生编号',
         name varchar(10) comment'姓名',
         sex varchar(2) comment'性别',
         age int comment'年龄',
         score numeric(6,2) comment'总成绩',
         address varchar(50) comment'地址',
         memo varchar(100) comment'备注'
         )
  2. 用Insert Into语句向Exam表中添加6条记录,记录内容如下图所示:

    A0001 赵一 20 580.00 重邮宿舍12-3-5 学习委员
    B0002 钱二 19 540.00 南福苑5-2-9 班长
    C0003 孙三 21 555.50 学生新区21-5-15 优秀共青团员
    D0004 李四 22 480.00 重邮宿舍8-2-22 暂无相关信息
    E0005 周五 20 495.50 学生新区23-4-8 暂无相关信息
    F0006 吴六 19 435.00 南福苑2-5-12 暂无相关信息

    SQL语句:

         insert into Exam(id,name,sex,age,score,address,memo)values
         ('A0001','赵一','男','20','580.00','重邮宿舍12-3-5','学习委员'),
         ('B0002','钱二','女','19','540.00','南福苑5-2-9','班长'),
         ('C0003','孙三','男','21','555.50','学生新区21-5-15','优秀共青团员'),
         ('D0004','李四','男','22','480.00','重邮宿舍8-2-22','暂无相关信息'),
         ('E0005','周五','女','20','495.50','学生新区23-4-8','暂无相关信息'),
         ('F0006','吴六','男','19','435.00','南福苑2-5-12','暂无相关信息')

    结果:

  3. 对表Exam的Score字段建立一个名为IndexScore的升序索引

    SQL语句:

         create unique index IndexScore on Exam(Score ASC)
  4. 建立视图ViewExam,字段ViewExam1和ViewExam2分别对应表Exam的Name和Address字段

    SQL语句:

         create view ViewExam(ViewExam1,ViewExam2)
         as
         select Name,Address
         from Exam

    结果:

  5. 将jm.sql、zjm.sql、dhshow.sql拷贝到自己的计算机上,在SQL Server 2000的查询分析器中执行该SQL语句,在数据库中建立jm、zjm、dhshow等三个表。dhshow表执行的时间要长一些,请耐心等候,大约需要1-2分钟,三个表的字段含义如下:

    Jm表:

    Jmbm Jmhz Jmbz
    局名编码 局名汉字说明 局名标志

    Zjm表:

    Zjmbm Zjmhz Jmbm Zjmbz
    子局名编码 子局名汉字说明 局名编码 子局名标志

    Dhshow表:(其它字段与本次测验无关,未给出相关含义):

    Dhh Sl1 Sl3 Sl39 Sl40
    电话号码 长话费 市话费 地区编码 子局名编码

    表间关联:Jm表中的jmbm和zjm表中的jmbm是相等的;Zjm表中的zjmbm和dhshow表中的sl40是相等的

    表说明:dhshow表中的sl1和sl3字段的计费单位是人民币分

    因没有数据,根绝后面问题只构造了需要的数据,结果如下:

  6. 用SELECT语句,求拉萨地区长话消费平均是多少分人民币

    SQL语句:

         select AVG(Sl1)
         from Dhshow
         where Sl39='拉萨'

    结果:

  7. 用SELECT语句,求阿里地区市话消费总大于10元人民币并且长话消费不为零的电话号码

    SQL语句:

         select Dhh
         from Dhshow
         where Sl1!=0 and (Sl1+Sl3)>10 and Sl39='阿里'

    结果:

Last modification:November 17th, 2020 at 02:52 pm