《数据库原理与应用》

本文详细介绍了如何在MySQL中创建、查看、修改和删除数据库以及表,包括表结构定义、数据插入、表结构修改、数据更新和删除,同时还展示了基本的SQL查询操作,如无条件和条件查询,为数据库管理提供了全面指南。
摘要由CSDN通过智能技术生成

一.Mysql操作环境及数据库操作

1.1创建数据库

使用SQL语句创建数据库,设置默认字符集为utf8mb4,设置默认校对规则为utf8mb4_ general_ci,数据库的名称为teaching

create database if not exists teaching
default character set utf8mb4
default collate utf8mb4_general_ci;

1.2查看数据库

使用SQL语句查看数据库teaching,请给出SQL代码。

show create database teaching;

1.3修改数据库

使用SQL语句修改数据库,将teaching数据库中的默认字符修改为gbk,默认校队规则修改为gbk_chinese_ci,请给出SQL代码。

alter database teaching
default character set gbk
default collate gbk_chinese_ci;

1.4删除数据库

使用SQL语句删除teaching数据库

drop database if exists teaching;

二. 表的创建和管理

2.1 表的创建

2.1.1 学生信息表student: 学号、姓名、性别、年龄、专业、院系

字段名

数据类型

默认值

完整性约束

主码/外码约束

Sno

Char(10)

…not null…

主码

Sname

varchar(45)

unique

Sex

Enum(男,女)

Not null

 Age

int

Not null

Maj

varchar(45)

Dept

varchar(45)

CREATE TABLE 'Sys'.'student'(
'Sno' CHAR(18) NOT NULL,
'Sname' VARCHAR(45) NOT NULL,
'Sex' ENUM('男','女') NOT NULL DEFAULT '男',
'Age' INT NOT NULL,
'Maj' VARCHAR(45) NOT NULL,
'Dept' VARCHAR(45) NOT NULL,
PRIMARY KEY( 'Sno'));
  1. 2.1.2 教师信息表t: 教师号、姓名、性别、年龄、职称、工资、专业、院系

字段名

数据类型

默认值

完整性约束

主码/外码约束

Tno

Char(10)

…not null…

主码

Tname

varchar(45)

unique

Sex

Enum(男,女)

Not null

 Age

int

Not null

Prof

varchar(45)

Not null

Sal

Decimal(6,2)

Not null

Maj

varchar(45)

Not null

Dept

varchar(45)

Not null

'Tno'  CHAR(10) NOT NULL,
'Tname' VARCHAR(45) NOT NULL,
'Sex' ENUM('男','女') NOT NULL DEFAULT '男',
'Age'  INT NOT NULL,
'Prof' VARCHAR(45) NOT NULL,
'Sa1' DECIMAL(6,2) NOT NULL,
'Maj' VARCHAR(45) NOT NULL,
'Dept' VARCHAR(45) NOT NULL,
PRIMARY KEY( 'Tno'));

2.1.3 课程信息表 course :课程号、课程名、课时

字段名

数据类型

默认值

完整性约束

主码/外码约束

Cno

Char(10)

…Not null…

主码

课程名称

varchar(45)

Not null

Ct

int

Not null

CREATE TABLE 'sys'.'course'(
'Cno' CHAR(10) NOT NULL,
'课程名称' VARCHAR(45) NOT NULL,
'Ct' INT NOT NULL,
PRIMARY KEY('CnO'));

2.1.4 选课表sc:学号、课程号、教师号,成绩、开课日期

字段名

数据类型

默认值

完整性约束

主码/外码约束

Sno

Char(10)

…Not null…

主码、外码

Cno

Char(10)

Not null

主码、外码

Tno

Char(10)

Not null

主码、外码

 Score

Decimal(4,2)

取值范围为0-100

Tcdate

Date

 CREATE TABLE 'sys'.'sc'(
'Sno' CHAR(10) NOT NULL,
'Cno' CHAR(10) NOT NULL,
'TnO' CHAR(10) NOT NULL,
'Score' DECIMAL(4,2) CHECK(Score>0 and Score<100) NULL,
'Tcdate'  DATE NULL,
PRIMARY KEY('Sno','cno','Tno' ));

2.2 表的管理

2.2.1 表的查看

(1)查看2.1中已创建的表。
(2)查看2.1中学生信息表student的表结构。
(3)查看2.1中教师信息表t中数据。
SHOW TABLES;

DESC student;

SHOW CREATE TABLE t;

2.2.2 表的修改

(1)在学生信息表student中增加一个班号class_no的字段.
alter table student
add class_no varchar(6);
(2)将教师信息表t名称改为teacher.
alter table t
rename teacher;
(3)将课程信息表course中字段名称课程名称改为Cname.
alter table course
change 课程名称 Cname varchar(45);
(4)将学生信息表student中Sname字段的数据类型改为varchar(30).
alter table student
modify Sname varchar(30);
(5)删除学生信息表student中的class_no字段.
alter table student
drop class_no;

2.2.3 表的删除

(1)删除选课表sc.
drop table if exists sc;

三.数据操纵语言

3.1 插入

3.1.1 学生信息表student: 学号、姓名、性别、年龄、专业、院系

学号

姓名

性别

年龄

专业

院系

s1

王彤

18

计算机

信息学院

s2

苏乐

20

信息

信息学院

s3

林昕

19

信息

信息学院

s4

陶然

18

自动化

工学院

s5

魏立

17

数学

理学院

s6

何欣荣

21

计算机

信息学院

INSERT INTO student(sno, sname, sex,age,maj, dept)
VALUES('s1', '王彤', '女', 18, '计算机','信息学院'),
('s2', '苏乐', '女', 20, '信息','信息学院'),
('s3', '林昕', '男', 19, '信息','信息学院'),
('s4', '陶然', '女', 18, '自动化','工学院'),
('s5', '魏立', '男', 17, '数学','理学院'),
('s6', '何欣荣', '女', 21, '计算机','信息学院');

3.1.2 教师信息表teacher: 教师号、姓名、性别、年龄、职称、工资、专业、院系

教师号

姓名

性别

年龄

职称

工资

专业

院系

t1

刘杨

40

教授

3610.5

计算机

信息学院

t2

石丽

26

讲师

2923.3

信息

信息学院

t3

顾伟

32

副教授

3145

计算机

信息学院

t4

赵礼

50

教授

4267.9

自动化

工学院

t5

赵希希

36

副教授

3332.67

数学

理学院

t6

张刚

30

讲师

3012

自动化

工学院

INSERT INTO teacher(tno, tname, sex,age,prof,sal,maj, dept)
VALUES('t1', '刘杨', '男', 40,'教授','3610.5', '计算机','信息学院'),
('t2', '石丽', '女', 26,'讲师','2923.3', '信息','信息学院'),
('t3', '顾伟', '男', 32,'副教授','3145', '计算机','信息学院'),
('t4', '赵礼', '女', 50,'教授','4267.9', '自动化','工学院'),
('t5', '赵希希', '女', 36,'副教授','3332.67', '数学','理学院'),
('t6', '张刚', '男', 30,'讲师','3012', '自动化','工学院');

3.1.3 课程信息表 course :课程号、课程名、课时

课程号

课程名

课时

c1

Java程序设计

40

c2

程序设计基础

48

c3

线性代数

48

c4

数据结构

64

c5

数据库系统

56

c6

数据挖掘

32

INSERT INTO course(cno, sname, ct)
VALUES('c1', 'Java程序设计', '40'),
('c2', '程序设计基础', '48'),
('c3', '线性代数', '48'),
('c4', '数据结构', '64'),
('c5', '数据库系统', '56'),
('c6', '数据挖掘', '32');

3.1.4 选课表sc:学号、课程号、教师号,成绩、开课日期

学号

课程号

教师号

成绩

开课日期

s1

c1

t1

90.5

20210903

s1

c2

t1

85

20210904

s3

c2

t3

70.5

20210308

s4

c1

t1

93

20210903

s5

c5

t6

20210906

s6

c6

t5

20210910

INSERT INTO sc(sno, cno, tno,score,tcdate)
VALUES('s1','c1','t1', '90.5', '20210903'),
('s1','c2','t1', '85', '20210903'),
('s3','c2','t3', '70.5', '20210903'),
('s4','c1','t1', '93', '20210903'),
('s5','c5','t6', null, '20210903'),
('s6','c6','t5', null, '20210903');

3.2 修改

3.2.1 将刘杨老师转到工学院。

UPDATE teacher
SET dept='工学院'
WHERE tname='刘杨';

3.2.2 将所有学生的年龄增加一岁。

UPDATE student
SET age=age+1;

3.2.3 将所有课程的课时提高到原来的1.5倍

UPDATE course
SET ct=1.5*ct;

3.2.4 将s1学生的性别改为男

UPDATE student
SET sex='男'
WHERE sno='s1';

3.2.5 将赵希希老师的职称改为教授

UPDATE teacher
SET prof='教授'
WHERE tname='赵希希';

3.2.6 将c3课程的课时改为60

UPDATE course
SET ct='60'
WHERE cno='c3';

3.3 删除

3.3.1 删除成绩为90.5分的记录。

DELETE FROM sc
WHERE score=90.5;

3.3.2 删除课程号为c3的课程信息

DELETE FROM course
WHERE Cno='c3';

3.3.3 删除课程号为c6的课程信息

DELETE FROM course
WHERE Cno='c6';

3.3.4 删除所有学生的选课记录

DELETE FROM sc;

四.简单查询(基本查询与条件查询)

4.1 无条件查询

4.1.1查询课程表中的全部数据

select *
FROM c;

4.1.2查询已选课的学生的学号

SELECT DISTINCT sno
FROM sc;

4.2 条件查询

4.2.1查询成绩在90分及其以上的选课信息

SELECT *
FROM sc
WHERE score>=90;

4.2.2查询职称为教授的教师的教师号、姓名和专业

SELECT tno,tname,maj
FROM teacher
WHERE prof IN ('教授')

4.2.3查询专业是计算机和数学的学生信息

SELECT *
FROM student
WHERE maj IN('计算机','数学')

4.2.4查询年龄在30-40(包括30和40)岁的教师的教师号、姓名和职称

SELECT tno,tname,prof
FROM teacher
WHERE age>=30 AND age<=40

4.2.5查询课时不在30-40(包括30和40)课时的课程的课程号、课程名和课时

SELECT *
FROM course
WHERE ct>=30 AND ct<=40

4.2.6查询课程号为c4和c6的选课信息,包括学号、课程号和成绩。

SELECT sno,cno,score
FROM sc
WHERE cno='c4' OR cno='c6'

4.2.7查询年龄大于20的学生的学号、姓名和年龄, 结果列名为汉字

SELECT sno 学号,sname 姓名,age 年龄
FROM student
WHERE age>20

4.2.8查询选修了课程的学生学号

SELECT DISTINCT sno
FROM sc

4.2.9查询不是计算机系或信息系学生

SELECT *
FROM student
WHERE maj NOT IN('计算机','信息')

4.2.10查询姓名长度至少是三个汉字且第三个汉字必须是“马”的学生

SELECT *
FROM student
WHERE sname LIKE '__马%'

4.2.11查询姓名中含有“然”的学生信息

SELECT *
FROM student
WHERE sname LIKE '%然%'

4.2.12查询选修't3'老师,成绩在80至90之间学生的信息

SELECT sno FROM sc WHERE (score>=80 AND score<=90)AND tno='t3'

4.2.13查询没有成绩的学生的学号和课程号

SELECT sno,cno
FROM sc
WHERE score IS Null

4.2.14查询学号为s1的学生的课程的平均分

SELECT AVG(score)
FROM sc
WHERE sno='s1'

4.2.15查询选课表sc中选课学生人数

SELECT COUNT(DISTINCT sno) FROM sc

4.2.16查询选课表sc中每个学生的选课信息及每个学生的选课门数

SELECT sno 学号, COUNT(*) 选课门数 ,
FROM sc GROUP BY sno

4.2.17查询选课表sc中选了1门以上课程的学生的选课信息及学生的选课门数(不包括1门)

SELECT *
FROM sc
GROUP BY sno HAVING COUNT(sno)>1

4.2.18查询学号为s1的学生的选课信息,按照成绩降序排序

SELECT *
FROM sc
WHERE sno='s1'
ORDER BY score DESC

4.2.19查询从第三位学生开始的4位学生的信息

SELECT *
FROM student
where sno>='s3'

4.2.20查询选课表sc中每门课程的课程号及选课人数,按照选课人数降序排列,并且显示前5行

SELECT cno 课程号, COUNT(*) 选课人数
FROM sc
GROUP BY cno
ORDER BY COUNT(*) DESC LIMIT 5 

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
数据库原理应用实验是在数据库原理应用课程中的实践环节,通过实验来加深学生对数据库原理应用的理解和掌握。在实验中,学生可以通过设计数据库、编写SQL语句、实现数据库的操作等方式来应用所学理论知识,同时也可以了解数据库管理系统的使用和数据库应用的实际情况。 以下是数据库原理应用实验的一些分析: 1. 实验目的 数据库原理应用实验的主要目的是让学生通过实践来加深对数据库原理应用的理解和掌握,同时也能够了解数据库管理系统的使用和数据库应用的实际情况。 2. 实验内容 数据库原理应用实验的内容包括数据库设计、SQL语句编写、数据库的操作实现等方面。通过实验,学生可以学习到关系模型、E-R图、范式等数据库设计原理,以及SQL语句的基本语法、查询、插入、删除、更新等操作。 3. 实验过程 数据库原理应用实验的过程一般包括以下几个步骤: (1)数据库设计:学生需要根据实际需求设计一个数据库,包括数据的设计、数据类型的选择、关系建立等方面。 (2)SQL语句编写:学生需要编写SQL语句来实现数据库的各种操作,如查询、插入、删除、更新等。 (3)数据库的操作实现:学生需要在数据库管理系统中实现数据库的各种操作,包括创建数据、插入数据、查询数据、删除数据等。 4. 实验结果 通过数据库原理应用实验,学生可以获得以下几个方面的结果: (1)对数据库原理应用的理解和掌握更加深入。 (2)对SQL语句的编写和数据库的操作实现更加熟练。 (3)对数据库管理系统的使用和数据库应用的实际情况有了更加深入的了解。 总之,数据库原理应用实验是数据库原理应用课程中的重要实践环节,通过实验可以加深学生对数据库原理应用的理解和掌握,同时也可以了解数据库管理系统的使用和数据库应用的实际情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值