Mysql 数据库基础----了解数据库 (一)
1.什么是数据库
- 存储数据的仓库--------database
- 高效的存储和处理数据的介质(介质:磁盘和内存)
2.数据库类型
- 关系型数据库(大型-oracle、DB2 | 中型 sql-server,mysql | 小型 access)优点:安全
- 非关系型数据库(memcached、mongodb、redis)同步到磁盘 优点:效率高 ,断电丢失
关系型数据库
- 什么是关系型数据库 : 建立在关系模型(数学模型)上的数据库
-
关系模型: 一种所谓建立在关系上的模型. 关系模型包含三个方面:
数据结构: 数据存储的问题, 二维表(有行和列)
操作指令集合: 所有SQL语句
完整性约束: 表内数据约束(字段与字段), 表与表之间约束(外键)
-
以实际案例来进行处理: 分析一个教学系统, 讲师负责教学, 教学生, 在教室教学生.
①找出系统中所存在的实体: 讲师表, 学生表, 班级表
②找出实体中应该存在的数据信息
讲师: 姓名,性别,年龄,工资
学生: 姓名,性别,学号,学科
班级: 班级名字, 教室编号
实体内部联系: 每个学生都有姓名,性别, 学号,学科信息
姓名 |
性别 |
学号 |
学科 |
年龄 |
陈明 |
男 |
Itcast0001 |
PHP |
20 |
陈晶晶 |
女 |
Itcast0002 |
PHP |
|
王威 |
|
Itcast0003 |
UI |
|
关系型数据库的特点之一: 如果表中对应的某个字段没有值(数据), 但是系统依然要分配空间: 关系型数据库比较浪费空间
实体与实体之间的联系: 每个学生肯定属于某个班级, 每个班级一定有多个学生(一对多)
学生表
姓名 |
性别 |
学号 |
学科 |
年龄 |
陈明 |
男 |
Itcast0001 |
PHP |
20 |
陈晶晶 |
女 |
Itcast0002 |
PHP |
|
王威 |
|
Itcast0003 |
UI |
|
班级表
班级名称 |
教室编号 |
PHP0810 |
B205 |
PHP0710 |
A203 |
解决方案: 在学生表中增加一个班级字段来指向班级(必须能够唯一的找到一个班级信息)
姓名 |
性别 |
学号 |
学科 |
年龄 |
班级名称 |
陈明 |
男 |
Itcast0001 |
PHP |
20 |
PHP0810 |
陈晶晶 |
女 |
Itcast0002 |
PHP |
|
PHP0810 |
王威 |
|
Itcast0003 |
UI |
|
UI0810 |
学生实体与班级实体的关联关系: 实体与实体之间的关系
关键字说明
数据库: database
数据库系统: DBS(Database System): 是一种虚拟系统, 将多种内容关联起来的称呼
DBS = DBMS + DB
DBMS: Database Management System, 数据库管理系统, 专门管理数据库
DBA: Database Administrator,数据库管理员
行/记录: row/record, 本质是一个东西: 都是指表中的一行(一条记录): 行是从结构角度出发,记录是从数据角度出发
列/字段: column/field, 本质是一个东西
SQL
SQL: Structured Query Language, 结构化查询语言(数据以查询为主: 99%是在进行查询操作)
SQL分为三个部分
DDL: Data Definition Language, 数据定义语言, 用来维护存储数据的结构(数据库,表), 代表指令: create, drop, alter等
DML: Data Manipulation Language, 数据操作语言, 用来对数据进行操作(数据表中的内容), 代表指令: insert, delete,update等: 其中DML内部又单独进行了一个分类: DQL(Data Query Language: 数据查询语言, 如select)
DCL: Data Control Language, 数据控制语言, 主要是负责权限管理(用户), 代表指令: grant,revoke等
SQL是关系型数据库的操作指令, SQL是一种约束,但不强制(类似W3C): 不同的数据库产品(如Oracle,mysql)可能内部会有一些细微的区别.
MYSQL
C/S:客户端/服务端 必须服务器一直运行,客户端需要时请求
交互方式
- 客户单连接认证: 连接服务器, 认证身份: mysql.exe -hPup
- 客户端发送SQL指令
- 服务器接收SQL指令: 处理SQL指令: 返回操作结果
- 客户端接收结果: 显示结果
- 断开连接(释放资源: 服务器并发限制): exit/quit/\q
Mysql服务器对象
没有办法完全了解服务器内部的内容: 只能粗略的去分析数据库服务器的内部的结构.
将mysql服务器内部对象分成了四层: 系统(DBMS) -> 数据库(DB) -> 数据表(Table) -> 字段(field)