From 4d9f2703507cb98ec5a8d6ae9cc392f18beee449 Mon Sep 17 00:00:00 2001 From: jackfrued Date: Thu, 27 Dec 2018 00:37:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E9=83=A8=E5=88=86=E7=9A=84=E4=BB=A3=E7=A0=81=E5=92=8C?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Day36-40/code/Exercise_Origin.sql | 53 +++++++++++++++++++++++++++ Day36-40/code/SRS_create_and_init.sql | 12 +++++- Day36-40/关系型数据库MySQL.md | 35 +++++++++++------- 3 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 Day36-40/code/Exercise_Origin.sql diff --git a/Day36-40/code/Exercise_Origin.sql b/Day36-40/code/Exercise_Origin.sql new file mode 100644 index 0000000..b776858 --- /dev/null +++ b/Day36-40/code/Exercise_Origin.sql @@ -0,0 +1,53 @@ +use SRS; + +-- 查询所有学生信息 + +-- 查询所有课程名称及学分(投影和别名) + +-- 查询所有女学生的姓名和出生日期(筛选) + +-- 查询所有80后学生的姓名、性别和出生日期(筛选) + +-- 查询姓”杨“的学生姓名和性别(模糊) + +-- 查询姓”杨“名字两个字的学生姓名和性别(模糊) + +-- 查询姓”杨“名字三个字的学生姓名和性别(模糊) + +-- 查询名字中有”不“字或“嫣”字的学生的姓名(模糊) + +-- 查询没有录入家庭住址的学生姓名(空值) + +-- 查询录入了家庭住址的学生姓名(空值) + +-- 查询学生选课的所有日期(去重) + +-- 查询学生的家庭住址(去重) + +-- 查询男学生的姓名和生日按年龄从大到小排列(排序) + +-- 查询年龄最大的学生的出生日期(聚合函数) + +-- 查询年龄最小的学生的出生日期(聚合函数) + +-- 查询男女学生的人数(分组和聚合函数) + +-- 查询课程编号为1111的课程的平均成绩(筛选和聚合函数) + +-- 查询学号为1001的学生所有课程的平均分(筛选和聚合函数) + +-- 查询每个学生的学号和平均成绩(分组和聚合函数) + +-- 查询平均成绩大于等于90分的学生的学号和平均成绩 + +-- 查询年龄最大的学生的姓名(子查询) + +-- 查询年龄最大的学生姓名和年龄(子查询+运算) + +-- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) + +-- 查询学生姓名、课程名称以及成绩(连接查询) + +-- 查询选课学生的姓名和平均成绩(子查询和连接查询) + +-- 查询每个学生的姓名和选课数量(左外连接和子查询) diff --git a/Day36-40/code/SRS_create_and_init.sql b/Day36-40/code/SRS_create_and_init.sql index e63405e..115f370 100644 --- a/Day36-40/code/SRS_create_and_init.sql +++ b/Day36-40/code/SRS_create_and_init.sql @@ -1,3 +1,9 @@ +-- 关系型数据库可以保证数据的完整性 +-- 实体完整性:每条记录都是独一无二的没有冗余 - 主键/唯一索引 +-- 参照完整性(引用完整性):外键 +-- 域完整性:数据类型、非空约束、默认值约束、检查约束 + + -- 创建SRS数据库 drop database if exists SRS; create database SRS default charset utf8 collate utf8_bin; @@ -30,6 +36,10 @@ collid int not null comment '所属学院编号', primary key (stuid) ); +-- 检查约束(MySQL不支持它) +alter table tb_student add constraint ck_student_birth +check (birth between '1990-1-1' and '1999-12-31'); + -- 添加外键约束 alter table tb_student add constraint fk_student_collid foreign key (collid) references tb_college (collid); @@ -134,7 +144,7 @@ insert into tb_score (sid, cid, seldate, mark) values (1378, 1111, '2017-09-05', 82), (1378, 7777, '2017-09-02', 65.5), (2035, 7777, '2018-09-03', 88), -(2035, 9999, date(now()), null), +(2035, 9999, curdate(), null), (3755, 1111, date(now()), null), (3755, 8888, date(now()), null), (3755, 9999, '2017-09-01', 92); diff --git a/Day36-40/关系型数据库MySQL.md b/Day36-40/关系型数据库MySQL.md index 1714ad4..f49e6fb 100644 --- a/Day36-40/关系型数据库MySQL.md +++ b/Day36-40/关系型数据库MySQL.md @@ -1,24 +1,33 @@ -## 关系型数据入门 +## 关系数据库入门 -### 关系型数据概述 +### 关系数据库概述 + +1. 数据持久化 - 将数据保存到(在掉电情况下)能够长久保存数据的存储介质中。 + +2. 数据库发展史 - 网状数据库、层次数据库、关系数据库。 + + > 1970年,IBM的研究员E.F.Codd在*Communication of the ACM*上发表了名为*A Relational Model of Data for Large Shared Data Banks*的论文,提出了关系模型的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。 + +3. 关系数据库特点。 -1. 数据持久化。 -2. 数据库发展史。 -3. 关系型数据库特点。 - 理论基础:集合论和关系代数。 + - 具体表象:用二维表(有行和列)组织数据。 + - 编程语言:结构化查询语言(SQL)。 + 4. E-R图。 - 实体 - 矩形框 - 属性 - 椭圆框 - 关系 - 菱形框 - 重数 - 1:1 / 1:N / M:N -5. 关系型数据库产品。 - - [Oracle](https://www.oracle.com/index.html) - - [DB2](https://www.ibm.com/analytics/us/en/db2/) - - [SQL Server](https://www.microsoft.com/en-us/sql-server/) - - [MySQL](https://www.mysql.com/) - - [SQLite](https://www.sqlite.org/index.html) + +5. 关系数据库产品。 + - [Oracle](https://www.oracle.com/index.html) - 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在Oracle最新的12c版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库云。 + - [DB2](https://www.ibm.com/analytics/us/en/db2/) - IBM公司开发的、主要运行于Unix(包括IBM自家的[AIX](https://zh.wikipedia.org/wiki/AIX))、Linux、以及Windows服务器版等系统的关系数据库产品。DB2历史悠久且被认为是最早使用SQL的数据库产品,它拥有较为强大的商业智能功能。 + - [SQL Server](https://www.microsoft.com/en-us/sql-server/) - 由Microsoft开发和推广的关系型数据库产品,最初适用于中小企业的数据管理,但是近年来它的应用范围有所扩展,部分大企业甚至是跨国公司也开始基于它来构建自己的数据管理系统。 + - [MySQL](https://www.mysql.com/) - MySQL是开放源代码的,任何人都可以在GPL(General Public License)的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。 + - [PostgreSQL]() - 在BSD许可证下发行的开发源代码的关系数据库产品。 ### MySQL简介 @@ -341,5 +350,5 @@ ### Python数据库编程 -1. MySQLdb -2. PyMySQL +#### 使用三方库PyMySQL +