什么是数据库 DB(DataBase)数据库?
依照某种数据模型进行组织并存放到存储器的数据集合
什么是数据库管理系统 DBMS(DataBase Management System)?
DBMS用来操纵和管理数据库的大型服务软件DBS.DataBase System – 数据库系统:即 DB+DBMS ,指带有数据库并整合了数据库管理软件的计算机系统, 指带有数据库并整合了数据库管理软件的计算机系统
什么是 RDBMS? 关系数据库管理系统
Relational Database Management System
数据按照预先设置的组织结构, 存储在物理存储介质 上,数据之间可以做关联操作
主流数据库服务软件有哪些?开源且跨平台的数据库软件有哪些?
主流数据库服务软件有:
-
MySQL
-
甲骨文公司 Oracle
-
IBM DB2
-
微软 SQL Server
-
美国 Sybase 公司 Sybase
-
加州大学伯克利分校计算机系开发的 PostgreSQL
开源跨平台
-
MySQL
-
PostgreSQL
不开源跨平台
-
Oracle
-
DB2
不跨平台不开源
-
SQL Server
跨平台不开源
-
Sybase
MySQL 的特点及应用主要特点
-
适用于中小规模、关系型数据库系统
-
支持 Linux/Unix 、 Windows 等多种操作系统
-
使用 C 和 C++ 编写,可移植性强
-
通过 API 支持 Python/Java/Perl/PHP 等语言典型应用环境
LAMP 平台
指带有数据库并整合了数据库管理软件的计算机系统 与 Apache HTTP Server 组合
LNMP 平台
指带有数据库并整合了数据库管理软件的计算机系统 与 Nginx 组合
mysql 服务相关参数有什么?
-
/etc/my.cnf 主配置文件
-
/var/lib/mysql 数据库目录
-
默认端口号 3306
-
进程名 mysqld
-
传输协议 TCP
-
进程所有者 mysql
-
进程所属组 mysql
mysql 操作指令和注意事项?
-
MySQL 指令:环境切换、看状态、退出等控制
-
SQL 指令:数据库定义 / 查询 / 操纵 / 授权语句基本注意事项
-
操作指令不区分大小写(密码、变量值除外)
-
每条 SQL 指令以 ; 结束或分隔
-
不支持 Tab 键自动补齐
-
\c 可废弃当前编写错的操作指令
库管理命令都有什么?
-
Show databases; // 显示已有的库
-
Use 库名 ; // 切换库
-
Select database(); // 显示当前所在的库
-
Create database 库名 ; // 创建新库
-
Drop database 库名; // 删除库
-
Show tables; // 显 示 已 有 的 表
常见的信息种类
-
数值型:体重、身高、成绩、工资
-
字符型:姓名、工作单位、通信住址
-
枚举型:兴趣爱好、性别
-
日期时间型:出生日期、注册时间
(数值型)关于整数型字段
-
使用 UNSIGNED 修饰时,指带有数据库并整合了数据库管理软件的计算机系统 对应的字段只保存正数
-
数值不够指定宽度时,指带有数据库并整合了数据库管理软件的计算机系统在左边填空格补位
-
宽度仅是显示宽度,指带有数据库并整合了数据库管理软件的计算机系统存数值的大小由类型决定
-
使用关键字 ZEROFILL 时,指带有数据库并整合了数据库管理软件的计算机系统 填 0 代替空格补位
-
数值超出范围时,指带有数据库并整合了数据库管理软件的计算机系统报错。
(数值型)关于浮点型字段
-
定义格式: float( 总宽度 , 小数位数 )
-
当字段值与类型不匹配时,指带有数据库并整合了数据库管理软件的计算机系统 字段值作为 0 处理
-
数值超出范围时,指带有数据库并整合了数据库管理软件的计算机系统 仅保存最大 / 最小值
字符类型
定长字符: char( 字符数 )
-
最大长度 255 字符
-
不够指定字符数时在右边用空格补齐
-
字符数断超出时,指带有数据库并整合了数据库管理软件的计算机系统无法写入数据。
变长字符: varchar( 字符数 )
-
按数据实际大小分配存储空间
-
字符数断超出时,指带有数据库并整合了数据库管理软件的计算机系统 无法写入数据。
大文本类型:
-
text/blob
-
字符数大于 65535 存储时使用
枚举类型
-
从给定值集合中选择单个值, ENUM
定义格式: enum ( 值 1, 值 2, 值 N)
-
从给定值集合中选择一个或多个值, SET
定义格式: set ( 值 1, 值 2, 值 N)
日期时间类型
• 日期时间, DATETIME
– 占用 8 个字节
– 范围: 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999
• 日期时间, TIMESTAMP
– 占用 4 个字节
– 范围: 1970-01-01 00:00:00.000000 ~ 2038-01-19 03:14:07.999999
• 日期, DATE
– 占用 4 个字节
– 范围: 0001-01-01 ~ 9999-12-31
• 年份, YEAR
– 占用 1 个字节
– 范围: 1901~2155
• 时间, TIME
– 占用 3 个字节
– 格式: HH:MM:SS
时间函数
类型 | 用途 |
---|---|
now() | 获取系统当前日期和时间 |
year() | 执行时动态获得系统日期时间 |
sleep(N) | 休眠 N 秒 |
curdate() | 获取当前的系统日期 |
curtime() | 获取当前的系统时刻 |
month() | 获取指定时间中的月份 |
date() | 获取指定时间中的日期 |
time() | 获取指定时间中的时刻 |
约束条件
-
Null 允许为空, 默认设置
-
NOT NULL 不允许为空
-
Key 索引类型
-
Default 设置默认值,缺省为 NULL
修改表结构的基本用法
– ALTER TABLE 表名 执行动作 ;
-
Add 添加字段
-
Modify 修改字段类型
-
Change 修改字段名
-
Drop 删除字段
-
Rename 修改表名
索引是什么?
-
索引是对记录集的多个字段进行排序的方法。
-
类似于书的目录
-
索引类型包括 :Btree 、 B+tree 、 hash
索引优缺点?
索引优点
-
通过创建唯一性索引,可以保证数据库表中每一行数 据的唯一性
-
可以加快数据的检索速度
索引缺点
-
当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,
-
了数据的维护速度
-
索引需要占物理空间
键值类型有几种,分别是什么?
-
INDEX :普通索引
-
UNIQUE :唯一索引
-
FULLTEXT :全文索引
-
PRIMARY KEY :主键
-
FOREIGN KEY :外键
INDEX普通索引说明
-
一个表中可以有多个 INDEX 字段
-
字段的值允许有重复,切可以赋 NULL 值
-
经常把做查询条件的字段设置为 INDEX 字段
-
INDEX 字段的 KEY 标志是 MUL
primary key 主键注意事项
-
一个表中只能有一个 primary key 字段
-
对应的字段值不允许有重复, 且不允许赋 NULL 值
-
如果有多个字段都作为 PRIMARY KEY , 称为复合主键,必须一起创建。
-
主键字段的 KEY 标志是 PRI
-
通常与 AUTO_INCREMENT 连用
-
经常把表中能够唯一标识记录的字段设置为主键字段
foreign key 外键 使用外键的条件
简述 MySQL 体系结构的组成, 并描述每个组成部分的作用。
主要包括 8 个部分:
-
连接池:进程数限制、内存检查、缓存检查等。
-
SQL 接口:用户通过 sql 客户端发过来的命令,由 sql 接口接收sql 操作: (DML 数据操作语言:查询、修改、升级数据等;DDL 数据定义语言:创建一个新的数据库、新的索引、删除一个用户等;存储过程、视图触发器。)
-
分析器: 分析查询语句 事务处理 对象访问权限。
-
优化器: 优化访问路径 、 生成执行树。
-
缓存和缓冲:保存 sql 查询结果。
-
存储引擎:用于管理存储的文件系统,将逻辑结构转换为物理结构的程序;不同的存储引擎有不同的功能和存储方式。
-
管理工具:备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和 mysql-server 打交道,它们对应的都是命令。
-
物理存储设备(文件系统)。
MySQL 存储引擎
-
作为可插拔式的组件提供
MySQL 服务软件自带的功能程序,处理表的处理器
不同的存储引擎有不同的功能和数据存储方式
-
默认的存储引擎
MySQL 5.0/5.1 > MyISAM
MySQL 5.5/5.6+ > InnoDB
Myisam 存储引擎的主要特点
-
支持表级锁
-
不支持事务、事务回滚、外键
相关的表文件
-
表名 .frm 、
-
表名 .MYI
-
表名 .MYD
InnoDB 存储引擎主要特点
-
支持行级锁定
-
支持事务、事务回滚、支持外键
相关的表文件
-
xxx.frm
-
xxx.ibd
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。