一、什么是数据库?
数据库(Database,简称DB)概念: 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个 数据“仓库”。
二、数据库的特点:
1.结构化:数据在数据库中的存储可以依靠二维表结构来逻辑的存储数据,可以参考数据原有的依赖关系和结构关系去存储数据。
2.共享性:多个用户可以共同分享计算机数据 库中的数据资源,同一数据可以同 时被多人使用,从而实现了数据的 高效共享性。
3.独立性:存储在数据库的数据和应用程序之 间相互独立, 互不影响。数据在磁盘 上怎样存储由数据库管理而不依赖 于应用程序,这样当数据的物理存 储改变了,应用程序不用改变。
4.安全性:数据库在安全性的控制上也有很多 措施,比如访问数据库时对用户的 口令,用户的权限进行限制,再比 如对数据的存储进行限制。
三、数据库的作用:
数据库的作用是: 存放、管理数据
四、数据库的分类
数据库分为 ①关系型数据据②NoSQL数据库
五、常见的数据库有哪些?
关系型数据库:MySQL、ORACLE
NoSQL数据库:redis、mogongDB
五、为什么使用MySQL?
MySQL数据库的特点:①操作便捷、小巧但功能齐全②免费、开源的数据库③可运行于windows或linux系统。④操作方便,适合于中小型甚至大型网站应用
六、数据库结构
数据库(Database) | 以文件的形式存放在磁盘上,即 对应于一个或多个物理文件。 |
数据表(Table) | 简称表,由一组数据记录组成, 数据库中的数据是以表为单位进 行组织的。一个表是一组相关的 按行排列的数据;每个表中都含 有相同类型的信息。 |
字段(Field) | 也称域。表中的每一列称为一个 字段。每个字段都有相应的描述 信息。 |
记录(Record) | 表中的每一行称为一个记录,它 由若干个字段组成。实体 |
索引(Index) | 索引实际上是一种特殊类型的表, 其中含有关键字段的值和指向实 际记录位置的指针,可以提高访 问数据库的效率。 |
SQL语句 | 结构化查询语句命令,用来从一 个或多个表中获取一组指定的记 录,或者对某个表执行指定的操 作。 |
七、SQL语句分类
SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一 种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。
名词 | 解释 | 命令 |
DDL (数据定义语言) | 定义和管理数据对象, 如数据库,数据表等 | CREATE、DROP、ALTER |
DML (数据操作语言) | 用于操作数据库对象中所包含的数据 | INSERT、UPDATE、DELETE |
DQL (数据查询语言) | 用于查询数据库数据 | SELECT |
DCL (数据控制语言) | 用来管理数据库的语言,包括管理权 限及数据更改 | GRANT、COMMIT、ROLLBACK |
八、DDL语句操作数据库
创建数据库 | CREATE DATABASE [IF NOT EXISTS] dbname
|
删除数据库 | DROP DATEBASE [IF EXISTS] dbname
|
查看数据库 | SHOW DATABASES
|
选择数据库 | USE dbname
|
九、DDL创建数据表
语法:
CREAT TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 字段类型 [ 属性 ] [ 索引 ] [ 注释],
`字段名2` 字段类型 [ 属性 ] [ 索引 ] [ 注释],
... ...
`字段名n` 字段类型 [ 属性 ] [ 索引 ] [ 注释]
)[ 表类型 ] [ 表字符集 ];
- “[]” 包含的内容可以省略;
- “`” 当前符号为反引号,用于区别MySQL保留字与普通字符而引入的。
十、数据库表的字段类型
1.字符串类型
类型 | 说明 | 取值范围 | 存储需求 |
char[(M)] | 固定长字符串,检索快但费空间, 0 <= M <= 255 | M字符 | char[(M)] |
varchar[(M)] | 可变字符串 0 <= M <= 65535 | 变长度 | varchar[(M)] |
tinytext | 微型文本串 | 16777215长度+3个字节 | tinytext |
text | 文本串(4个G左右) | 4294967295长度+4个字节 | text |
2.数值类型
类型 | 说明 | 取值范围 | 储存需求 |
tinyint | 非常小的数据 | 有符值: -2 ^7 ~ 2^7-1,无符号值:0 ~ 28-1 | 1字节 |
smallint | 较小的数据 | 有符值: -2 15 ~ 215 -1 ,无符号值: 0 ~ 216 -1 | 2字节 |
mediumint | 中等大小的数据 | 有符值: -2 23 ~ 223 -1 ,无符号值: 0 ~ 224 -1 | 3字节 |
int | 标准整数 | 有符值: -2^31 ~ 2^31-1,无符号值:0 ~ 2^32-1 | 4字节 |
bigint | 较大的整数 | 有符值: -2^63 ~2^63-1,无符号值:0 ~2^64-1 | 8字节 |
float | 单精度浮点数 | ±1.1754351e -38 | 4字节 |
double | 双精度浮点数 | ±2.2250738585072014e -308 | 8字节 |
Decimal(钱) | 字符串形式的浮点数 | 点数 decimal(m, d) | m个字节 |
3.日期和时间类型
类型 | 说明 | 取值范围 | 储存需求 |
DATE | YYYY-MM-DD,日期格式 | 1000-01-01~ 9999-12-31 | DATE |
TIME | Hh:mm:ss ,时间格式 | -838:59:59~838:59:59 | TIME |
DATETIME | YY-MM-DD hh:mm:ss | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | DATETIME |
TIMESTAMP | YYYYMMDDhhmmss格式表示的时间戳 | 197010101000000 ~2037年 的某个时刻 | TIMESTAMP |
YEAR | YYYY格式的年份值 | 1901~2155 | YEAR |
设置当前 创建时间,或者是更新时间时给TIMESTAMP或者DATETIME字段 设置 DEFAULT CURRENT_TIMESTAMP 添加当前默认时间
NULL类型:
- 理解为“没有值”或“未知值”;
- 不要用NULL进行算术运算,结果仍为NULL;
- MySQL中,0或NULL都意味着为假,1为真。
十一、数据库表的字段注释
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 字段类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 字段类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 字段类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] ;
注释:可以给字段增加注释,即给字段增加描述,方便后续修改和维护字段。
十一、数据库表的字段注释
查询创建的数据库结构:
方式一:
describe 表名
或
desc 表名
方式二:
show create table 表名
十二、数据库存储引擎
查看当前数据库支持的存储引擎: show engines;
查询结果显示,MySQL 8支持9种存储引擎,分别为MEMORY、MRG_ MYISAM、CSV、 FEDERATED 、PERFORMANCE_ SCHEMA、 MyISAM、 InnoDB 、BLACKHOLE 和ARCHIVE。
- Engine参数 表示存储引擎名称。
- Support参 数表示MySQL数据库管理系统是否支持该存储引擎: YES表示支持,NO表示不支持。
- DEFAULT表示系统默认支持的存储引擎。
- Comment 参数表示对存储引擎的评论。
- Transactions参数表示存储引擎是否支持事务: YES表示支持,NO表示不支持。
- XA参数表示存储引擎所支持的分布式是否符合XA规范: YES表示支持,NO表示不支持。代表着该存储引擎是否支持分布式事务。
- Savepoints参 数表示存储引擎是否支持事务处理的保存点: YES表示支持,NO表示不支持。也就是说,该存储引擎是否支持部分事务回滚。
十四、 数据库存储引擎-MyISAM 和InnoDB区别
对比项 | MyISAM | InnoDB |
外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发操作 | 行锁,操作时只锁某一行,不对其它行有 影响,适合高并发操作 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引还要缓存真实数据,对内存 要求较高,而且内存大小对性能有决定性 的影响 |
默认安装 | Y | Y |
默认使用 | N | Y |
关注点 | 性能:节省资源、消耗少、简单业务 | 事务:并发写,事务、更大资源 |
两种存储引擎各有特点,当然你也可以在MySQL中,针对不同的数据表,可以选择不同的存储引擎
十五、修改和删除数据表
修改表名 | ALTER【ɔːltə(r)】 TABLE 旧表 名 RENAME AS 新表名 |
修改字段 | ALTER TABLE 表名 MODIFY 【mɒdɪfaɪ】 字段名 列类型 [ 属性 ] ALTER TABLE 表名 CHANGE 旧字段 名 新字段名 列类型 [ 属性 ] |
删除字段 | ALTER TABLE 表名 DROP 字 段名 |
添加字段 | ALTER TABLE 表名 ADD 字段 名 列类型 [ 属性 ] |
删除表 | DROP TABLE [ IF EXISTS ] 表名 |
后续更新中......