数据库学习笔记
数据库的相关概念
DB
数据库(database) :存储数据的”仓库”,它保存了一系列有组织的数据
数据库存储的特点
- 将数据放到表中,表再放到库中
- 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己.表名具有唯一性
- 表具有一些特性,这些特性定义了数据在表中如何存储
- 表由列组成,我们也称为字段.所有表都是由一个或多个列组成的
- 表中的数据是按行存储的
DBMS
数据库管理系统(Database Management System).数据库是通过DBMS创建和操作的容器
常见的数据库管理系统:MySQL、Oracle、DB2、SqlServer等
DBMS分为两类
- 基于共享文件系统的DBMS(Access)
- 基于客户机—服务器的DBMS(MySQL、Oracle、SqlServer)
MySQL
- 成本低,开放源代码,一般可以免费试用
- 性能高,执行很快,可移植性好
- 简单,很容易安装和使用
- 社区版(免费),企业版(收费)
SQL
结构化查询语言(Structure Query Language) :专门用来与数据库通信的语言
SQL的优点
- 不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL
- 简单易学
- 虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作
MySQL的下载安装
下载MySQL

点击Download后,可能出现下面的页面,点击红框所选部分

安装MySQL
找到下载的MySQL安装文件,双击运行

等待片刻

选择Developer Default,点击next

点击Execute

等待下载,之后点击Next

点击Next

点击Next

点击Next

设置管理员密码,之后点击Next

点击Next

点击Execute

点击Finish

点击Next

点击Finish

点击Next

输入密码,之后点击Check

连接成功,点击Next

点击Execute

点击Finish

点击Next

点击Finish,安装完毕

关系数据库标准语言SQL
学生-课程数据库
| 学号Sno | 姓名Sname | 性别Ssex | 年龄Sage | 所在系Sdept |
|---|---|---|---|---|
| 201215121 | 李勇 | 男 | 20 | CS |
| 201215122 | 刘晨 | 女 | 19 | CS |
| 201215123 | 王敏 | 女 | 18 | MA |
| 201215125 | 张立 | 男 | 19 | IS |
| 课程号Cno | 课程名Cname | 先行课Cpno | 学分Ccredit |
|---|---|---|---|
| 1 | 数据库 | 5 | 4 |
| 2 | 数学 | 2 | |
| 3 | 信息系统 | 1 | 4 |
| 4 | 操作系统 | 6 | 3 |
| 5 | 数据结构 | 7 | 4 |
| 6 | 数据处理 | 2 | |
| 7 | PASCAL语言 | 6 | 4 |
| 学号Sno | 课程号Cno | 成绩Grade |
|---|---|---|
| 201215121 | 1 | 92 |
| 201215121 | 1 | 92 |
| 201215121 | 2 | 85 |
| 201215121 | 3 | 88 |
| 201215122 | 2 | 90 |
| 201215122 | 3 | 80 |
SELECT Sname,'Year of Birth',2021-Sage,LOWER(Sdept) |
SELECT Sname NAME,'Year of Birth' BIRTH,2021-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT |
SELECT Sno |
SELECT DISTINCT Sno |
| 查询条件 | 谓词 |
|---|---|
| 比较 | =,>,!=,!>等 |
| 确定范围 | BETWEEN AND,NOT BETWEEN AND |
| 确定集合 | IN,NOT IN |
| 字符匹配 | LIKE,NOT LIKE |
| 空值 | IS NULL,IS NOT NULL |
| 多重条件(逻辑运算) | AND,OR,NOT |
LIKE运算符
进行字符串的匹配
SELECT * |
REGEXP运算符
正则表达式的缩写(regular expression)
SELECT * |
IS NULL运算符
搜索缺失属性的记录
SELECT * |
ORDER BY子句
对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认为升序.对于空值,排序时显示的次序由具体系统实现来决定.
SELECT * |
SELECT first_name,last_name |
聚集函数
| 聚集函数 | 作用 | |
|---|---|---|
| COUNT(*) | 统计元组个数 | |
| COUNT([DISTINCT\ | ALL] <列名>) | 统计一列中值的个数 |
| SUM([DISTINCT\ | ALL] <列名>) | 计算一列值的总和(此列必须为数值型) |
| AVG([DISTINCT\ | ALL] <列名>) | 计算一列值的平均值(此列必须为数值型) |
| MAX([DISTINCT\ | ALL] <列名>) | 求一列值中的最大值 |
| MIN([DISTINCT\ | ALL] <列名>) | 求一列值中的最小值 |
当聚集函数遇到空值时,除COUNT(*)外,都跳过空值而只处理非空值.COUNT(*)是对元组进行计数,某个元组的一个或部分列取空值不影响COUNT的统计结果
LIMIT子句
限制查询返回的记录,LIMIT子句要放在最后
SELECT * |
内连接
数据库编程
嵌入式SQL
对于嵌入式SQL,数据库管理系统通常采用预编