数据库学习笔记
数据库的相关概念
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,数据库管理系统通常采用预编