数据库实验:SQL的数据定义与单表查询

news/2024/7/5 7:38:23

目录

  • 实验目的
  • 实验内容
  • 实验要求
  • 实验过程
    • 实验步骤
    • 实例代码
    • 结果示意

数据库的实验,对关系型数据库MySQL进行一些实际的操作

实验目的

(1) 掌握DBMS的数据定义功能
(2) 掌握SQL语言的数据定义语句
(3) 掌握RDBMS的数据单表查询功能
(4) 掌握SQL语言的数据单表查询语句

实验内容

(1) 创建、删除表
(2) 查看、修改表的定义
(3) 理解索引的特点
(4) 创建和删除索引
(5)SELECT语句的基本用法
(6)使用WHERE子句进行有条件的查询
(7)使用IN,NOT IN,BETWEEN AND等谓词查询
(8)利用LIKE子句实现模糊查询
(9)利用ORDER BY子句为结果排序
(10)用SQL Server的聚集函数进行统计计算
(11)用GR0UP BY子句实现分组查询的方法

实验要求

(1) 熟练掌握SQL的数据定义语句CREATE、ALTER、DROP
(2) 熟练掌握SQL的数据查询语句SELECT

实验过程

实验步骤

设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
(1) 用查询分析器创建、删除表
(2) 查看、修改表的定义
(3) 创建和删除索引
(4) 删除表
利用SQL Server集成管理器(简称SSMS)交互式创建数据库S_T2;
(6)将S_T设为当前数据库
(7)创建3个表
(8)在3个表中添加示例数据(任选一种数据添加方法)
表Student
| Sno | 姓名 |
Sname | 性别
Ssex 年龄
Sage 所在系
Sdept
200215121 李勇 男 20 CS
200215122 刘晨 女 19 CS
200215123 王敏 女 18 MA
200215125 张立 男 19 IS

表Course
课程号
Cno 课程名
Cname 现行课
Cpno 学分
Ccredit
1 数据库 5 4
2 数学 2
3 信息系统 5 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 PASCAL语言 6 4

表SC
学号
Sno 课程号
Cno 成绩
Grade
200215121 1 92
200215121 2 85
200215121 3 88
200215122 2 90
200215122 3 80
(9) 对学生关系Student、课程关系Course和选修关系SC进行查询。

实例代码

Create Database S_T1;
CREATE TABLE Student
        (Sno       CHAR(9)  NOT NULL  UNIQUE, 
         Sname     CHAR(20)  UNIQUE,          
         Ssex      CHAR(1),
         Sage      INT,
         Sdept    CHAR(15)) 
create table Course 
  (Cno CHAR(4) PRIMARY KEY,
   Cname CHAR(40),
   Cpno CHAR(4),
   Ccredit SMALLINT,
   FOREIGN KEY (Cpno) REFERENCES Course(Cno)
  );
CREATE TABLE SC(
            Sno CHAR(9),
            Cno CHAR(3), 
            Grade   int,
            Primary key (Sno, Cno));
DROP TABLE Student; 
ALTER TABLE Student ADD Scome DATETIME;
ALTER TABLE Student modify COLUMN Sage SMALLINT;
CREATE UNIQUE INDEX  Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
DROP INDEX  Stusno ON Student;
use S_T2;
create table Student 
  (Sno CHAR(9) PRIMARY KEY,
   Sname CHAR(20) UNIQUE,
   Ssex CHAR(2),
   Sage SMALLINT,
   Sdept CHAR(20)
  );
/*表Student的主码为Sno,属性列Sname取唯一值*/
create table Course 
  (Cno CHAR(4) PRIMARY KEY,
   Cname CHAR(40),
   Cpno CHAR(4),
   Ccredit SMALLINT,
   FOREIGN KEY (Cpno) REFERENCES Course(Cno)
  );
/*表Course的主码为Cno,属性列Cpno(先修课)为外码,被参照表为Course,被参照列是Cno*/
create table SC 
  (Sno CHAR(9),
   Cno CHAR(4),
   Grade SMALLINT,
   primary key (Sno, Cno),
   FOREIGN KEY (Sno) REFERENCES Student(Sno),
   FOREIGN KEY (Cno) REFERENCES Course(Cno)
  );
use S_T;/*将S_T设为当前数据库*/
insert into student values(200215121,’李勇’,'男',20,'CS');
insert into student values(200215122,'刘晨','女',19,'CS');
insert into student values(200215123,'王敏','女',18,'MA');
insert into student values(200215125,'张立','男',19,IS);
go
/*为表Student添加数据*/
insert into course values('1', '数据库', NULL,4);
insert into course values('2', '数学',  NULL,2);
insert into course values('3', '信息系统', NULL,4);
insert into course values('4', '操作系统', NULL,3);
insert into course values('5', '数据结构', NULL,4);
insert into course values('6', '数据处理', NULL, 2);
insert into course values('7', 'java',  NULL,4);
go
update Course set Cpno = '5' where Cno = '1';
update Course set Cpno = '1' where Cno = '3';
update Course set Cpno = '6' where Cno = '4';
update Course set Cpno = '7' where Cno = '5';
update Course set Cpno = '6' where Cno = '7';
/*为表Course添加数据*/
go
insert into SC values('200215121', '1',92);
insert into SC values('200215121', '2',85);
insert into SC values('200215121', '3',88);
insert into SC values('200215122', '2',90);
insert into SC values('200215122', '3',80);
insert into SC values('200215123','2',92);
SELECT  Sno,Sname,Ssex,Sage,Sdept 
FROM Student;
SELECT Student.Sno, student.Sname
FROM    Student, SC
WHERE Student.Sno = SC.Sno AND  SC.Cno= '2' AND  SC.Grade > 90
SELECT Sname,Ssex
FROM  Student
WHERE Sdept IN ( 'IS','MA','CS' )
SELECT Sname,Sdept,Sage
FROM   Student
WHERE Sage BETWEEN 20 AND 23
SELECT Sname,Sno,Ssex
FROM Student
WHERE  Sname LIKE '刘%'
SELECT Sno,Grade
FROM  SC
WHERE  Cno= '3'
ORDER BY Grade DESC
SELECT AVG(Grade)
FROM SC
WHERE Cno= '1' SELECT Sno
FROM  SC
GROUP BY Sno
HAVING  COUNT(*) >3

结果示意

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1745792.html

相关文章

数据库 | 看这一篇就够了!最全MySQL数据库知识框架!

大家好! 作为一名程序员,每天和各种各样的“数据库”打交道,已经成为我们的日常。当然,立志成为一名超级架构师的我,肯定要精通这项技能。咳咳!不过饭还是要一口一口吃的,“数据库”这个内容实在…

idea插件(三)-- Translation(最好用的翻译插件)

目录 1.安装 2. 快捷键操作 2.1 显示翻译对话框 2.2 翻译文本 2.3 翻译和替换 2.4 选择翻译器 3. 配置有道翻译 3.1 申请 有道翻译 的应用ID与应用密钥 3.2 在idea配置有道翻译

Viessmann Vitogate远程代码执行漏洞(CVE-2023-45852)

Viessmann Vitogate远程代码执行漏洞(CVE-2023-45852) 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: body"vitogate 300" 漏洞复现1. 构造poc2. 执行命令查看用户 免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好…

嵌入式软件工程师面试题——2025校招社招通用(八)

说明: 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要…

记Solaris下一个rac 异常hang故障

故障现象 rac 某一节点hang住,另一节点也不可用,重启hang住节点恢复。该故障出现了多次,平均1月出现一次。 故障原因 查看cssd.log 2021-05-22 13:53:50.565: [GIPCXCPT][5] gipclibMalloc: failed to allocate 10376 bytes, cowork ffff…

IDEA运行报错Command line is too long

报错内容: Error running ServiceStarter: Command line is too long. Shorten command line for ServiceStarter or also for Application default configuration. 解决: 1. 2. 3.

软件测试 —— 移动端测试

1. 移动端 指移动设备(如智能手机、平板电脑、智能手表等)上的操作系统和应用程序。移动设备具有便携性和多功能性,可以随时随地连接互联网,提供丰富的应用和服务。 2. 移动端应用分类 (1) 原生应用(Native App&…

论文 辅助笔记:t2vec train.py

1 train 1.1 加载training和validation数据 def train(args):logging.basicConfig(filenameos.path.join(args.data, "training.log"), levellogging.INFO)设置了日志的基本配置。将日志信息保存到名为 "training.log" 的文件中日志的级别被设置为 INFO&…