1.数据库概念
1.1 数据库(database)
- 狭 义:一些有关系的数据的总和;
- 广义:DBMS数据库管理软件;
1.2 表(table)
- 现实中具有共同特征的一些列的数据的总和,类似:学生、老师、课程;
1.3 表中数据
- 一行的数据:记录(record);
- 具体一行中的具体列的数据:单元格(Cell);
1.4 表的结构
- 表的名称:学生;
- 表的字段有哪些:学号、类型 姓名类型 年级 类型;
- 表中数据的约束(constraint):学号不能重复;
1.5 数据存储
目前,学习到的数据存储主要存储在内存中,SE、数据结构阶段学习的全部是内存中数据的抽象;
内存存储的特点:
- 易失性存储;
- 相对于持久化存储(硬盘、光盘、磁盘……)内存的读写速度更快;
- 相对于,支持O(1)的下标访问。
需要持久化存储;硬盘上的数据,更多的被操作系统转换成为文件,我们以文件的形式管理数据的存储!
1.6 数据库管理系统(DBMS database manage system)
例如:MySQL、Oracle、 MS SQL Server 、Postgres……
DBMS在管理数据时,总是存在共性,关于数据的建模与抽象问题,一般被应用广泛的是关系型模型(relationship model)
(1)关系型数据库管理软件(RDBMS)
学生:
学号(唯一) 姓名 年级……
1 小曹 大三
2 小张 大四
1.7 示例–图书馆借书还书需求
表:图书、用户、借阅记录
图书:
bid 名称 总量 当前存量
b1 《javaSE》 10 10–> 9
b2 《MySQL》 3 1–>0–>1
用户:
uid 姓名
u1 cc
u2 zoe
借阅记录
brid 那本书 谁借的 什么时候借 还了没 归还时间
br1 《javaSE》 cc 11-19 09:00 没有 null
br2 《MySQL》 cc 11-19 09:00 还了 11-19 10:00
第一阶段:只有结构,没有数据
第二阶段:想图书表中放入图书记录过程
第三阶段:向用户表中放入记录
第四阶段:正常借书还书
借书:cc借了一本JavaSE(要修改两张表:图书、借阅记录 事务机制:保证一致性存在)
借书:cc借了一本MySQL
zoe准备借,能否成功?-----》不能,存量为0
总结
DBMS的功能:
- 以数据库(database、schema)为单位进行组织管理;
- 以表为单位对表中的数据进行增删查改(CURD create Retrieve Updata Delete)的(数据本身)操作,还要对表的结构进行调整的(结构)操作;
统一标准,抽象了一门语言,专门用于DB的操作,叫做查询语言(query language),非常结构(structure query language -->SQL);
1.8 SQL三大类
数据本身的操作:DML 数据维护语言
结构操作:DDL 数据定义语言
修改DBMS配置:DCL 数据控制语言
1.9 关于MySQL的架构简介
MySQL是一种典型的C/S(Client客户端/Server服务端)架构
服务器(MySQL Server (mysqld) ):提供RDBMS服务; 以接收+看懂SQL,进行回复提供服务;
实际中,允许主机A is 主机B (客户端和服务端程序运行在同一台主机上)
CS架构:一个程序(client)通过网络与另一个程序(server)进行通信
Client:如何在网络上的众多主机中的茫茫的程序里唯一定位的服务器程序?
- ip地址:网络任意两台主机,其ip地址不能重复(有例外)
- 端口(port):来定义主机上的唯一程序 某台主机上任意时刻任意两个程序,其端口(port)不能重复,默认3306
- 一个特殊ip地址:127.0.0.1 一个特殊域名:localhost 代表的是自己(本主机)
1.10 使用数据库的主要两个场景
- OLTP(OnLine Transaction Processing)在线事务型场景 , 例如上面的例子 学习重点
- OLAP(OnLine Analytical Processing)在线分析型场景 ,统计分析、大数据相关岗位
2.SQL语言
默认用分号作为结尾(只有一条SQL语句时,可以省略分号)
–开头 为注释
SQL中关键字是不区分大小写的。
2.1 DDL(关于结构的操作)
(学习要求:能看懂,会用图形化界面创建即可)
- 围绕库:创建库结构,扔掉库结构
- 围绕表:创建表结构、扔掉表结构、修改表结构
2.1.1 建库操作
库名称:
- 不要使用关键字,一般也不使用反引号
- 最好只出现一下字符,全部统一小写【a-z】【0-9】下划线 ,不要以下划线和数字开头
扔掉库
- 不要删除系统库:sys mysql test world
2.1.2 显示当前的数据库
- SHOW DATABASEAS; 查看数据库里的所有库
2.1.3 使用数据库
- use 数据库名; 设置默认(default)数据库
2.1.4 建表操作
2.1.5 扔掉表
DROP TABLE
2.1.6 修改表结构
Alter Table
2.1.7 从这张表中查询所有字段
SELECT * FROM db_11_19.students;