目录
1.2、数据库管理系统(DataBase Management System)
一、概述
1.1、数据库作用:存储
1.2、数据库管理系统(DataBase Management System)
简称DBMS,作用对数据进行增、删、改、查。
SQL (Structured Query Language)
结构化查询语言,针对关系型数据库的一种语言;SQL是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。
1.3、数据库类型
| 关系型数据库 |
|---|
| MariaDB/MySQL |
| Oracle |
| DB2 |
| MS SQLServer,只能用于windows系统国产数据库 |
| 达梦 |
| 人大金仓 |
| TiDB,分布式关系型数据库 |
| NOSQL |
|---|
| Redis,缓存数据库 |
| MongoDB,文档型数据库 |
1.4、关系库数据模型
| 层次模型 |
|---|
| 网状模型 |
| 关系模型 |
关系模型的相关概念
| 概念 |
|---|
| 实体:在数据库中,实体通常对应于表中的行,而表是实体的一种集合。 |
| 属性:是实体的特征或性质。属性可以是简单的数据类型,也可以是更复杂的结构。在数据库中,通常对应于表中的列,每列代表实体的一种属性。 |
| 联系:表述了不同实体之间的关系。在数据库中,联系通过关系表来实现,这个表通常包含两个或更多的实体作为表的列。 |
在关系模型中,实体和联系通常通过以下三种类型进一步分类:
| 类型 |
|---|
| 一对一(1:1):每个实体只有一个相关的实体,反之亦然。 |
| 一对多(1:N):一个实体与多个实体相关,但每个相关实体只与一个实体相关 |
| 多对多 (N:N):每个实体可以与多个实体相关,同时每个相关实体也可以与多个实体相关。 |
1.5、关系数据库相关概念
| 概念 |
|---|
| 库(Database):一个存储数据的容器,它可以包含多个数据库。 |
| 表(Table):数据库中的一个表格,由行和列组成。表是存储数据的主要结构,每个表通常对应一个实体类型。表的列名称为属性,而表的行名称为记录。 |
| 行(Record):行也称为记录,它是表中的一个单元,代表表中的一个具体实例。每一行包含了一组属性值,这些值共同描述了一个实体的状态。 |
| 列(Column):列是表中的一列,它代表了表的一个属性。每列都有一个数据类型,用于定义存储在其中的数据的种类和格式。 |
| 字段(Field):字段通常指的是表中的行与列的交叉点,它存储了单个数据项。在数据库中,每个字段都有其特定的数据类型和用途。 |
| 数据(Data):数据是存储在数据库中的信息。它可以是文本、数字、日期、图像、声音等各种形式。数据是数据库管理和操作的核心。 |
二、安装
默认监听端口号:3306/tcp
2.1、mysql安装
yum install -y mysql-server
服务端程序:mysql-server;客户端程序:mysql;
2.2、启动并开机自启
systemctl enable --now mysqld.service
2.3、本地连接(本地登录)

2.4、允许任意主机链接

三、mysqld数据库配置与命令
yum安装后生成的目录
rpm -ql mysqld-server
mysqld服务器的启动脚本
cat /usr/lib/systemd/system/mysqld.service
数据存储目录的权限
ls -ld /var/lib/mysql/
服务器启动时读取的默认配置文件
cat /etc/my.cnf
mysql命令
mysql数据库登录的命令行工具,本地登录时且root用户没有密码,输入mysql,等效于”mysql -uroot -hlocalhost -P3306“
| mysql [options] db_name |
|---|
| -u : 指定登录用户 |
| -p : 指定用户密码 |
| -h : 指定登录数据库的IP或者域名 |
| -P : 指定登录数据库的端口号 |
| -e : 能够在终端执行数据库命令 |
mysqladmin命令
超级管理命令
语法
mysqladmin [options] command [command-arg] [command [command-arg]] ...
设置root用户密码
mysqladmin -uroot password '123.com'
使用密码
mysql -uroot -p123.com -h127.0.0.1 -P3306
四、默认数据库
| information_schema:信息数据库,存储所有的库、表、列的名称,任意可登录数据库的用户都可读;sql注入 |
|---|
| mysql :主数据库,mysqld运行的必须数据库,用户与配置信息 |
| performance_schema:性能数据库,存储mysqld的资源使用、安全策略权限配置信息 |
| sys库 |
五、SQL语言
| DDL: 数据定义语言,对数据库结构操作 |
|---|
| create:创建(用户,库,表) |
| alter:改变 |
| drop:删除 |
| DML:数据操作语言,对数据表的操作 |
|---|
| insert:插入 |
| update:更新 |
| delete:删除数据 |
| DCL:数据控制语言,针对用户权限设置 |
|---|
| grant:用户赋权 |
| revoke:移除用户权限 |
| DQL:数据查询语言,对数据表的操作 |
|---|
| select:查询 |
六、mysqld数据类型
常用的数据类型有:整型、浮点型、BIT类型、定点数、日期时间类型、字符串、NULL类型
七、数据库操作命令
| 库操作命令 |
|---|
| 查看数据库: show databases; |
| 查看所在数据库: select database( ) ; |
| 查看当前登录用户: select user( ); |
| 查看当前数据库版本: select version ( ); |
| 查看用户权限列表: show privileges[\G]; |
| 查看指定用户的权限: show grants for root@localhost\G; |
| 切换数据库: use databaseName; |
| 创建数据库: create database databaseName [character set utf8]; |
| 删除数据库: drop database databaseName; |
| 表结构命令 |
|---|
| 查看数据表 : show tables ; |
| 查看表结构 :tableName ; |
| 创建数据表 : create table tableName(columnName(列名称) dataType(数据类型), ............) ; |
| 删除数据表 :drop table tableName; |
| alter 命令用法 |
|---|
| 修改表名 :alter table tab_name rename to tab_new; |
| 修改字段类型:alter table tab_name modify field type (first/before/after field1); |
| 修改字段默认值/是否为空/自动增长:alter table tab_name modify field type not null/default =" 默认值"/auto_increment; |
| 修改字段名/字段类型:alter table tab_name change field newfield newtype; |
| 添加字段:alter table tab_name add field type (first/before/after field1); |
| 删除字段:alter table tab_name drop field; |
| 表数据操作 |
|---|
| 单行插入:insert [into] tableName[(columnName,.........)] value('value1',value2,.......); |
| 批量插入:insert into stu value('张三', 22, '110', '男'),('丽丝',26 , '120', '女'),('王五',27 ,'130', '男'); |
| 全表更新:update tableName set columnName=newValue; |
| 条件更新:update tableName set columnName=newValue where columnName=currentValue; |
| 全表删除:delete from tableName; |
| 条件删除:delete from tableName where columnName=currentValue; |
| 全表查询:select * from tableName; |
| 去重查询:select distinct class from tablename; |
| 统计查询,非空数据:select count(distinct ) from ; |
| 重新定义查询结果表中的列名称:select count(*) [as] count from tablenam |
| 聚合函数查询: |
| 计算和值:select sum() xx from tablename; |
| 计算平均值:select avg() xxfrom tablename; |
| 最大值/最小值:select max/min() from |
| 分组查询:select...from ...group by xx having(分组后的条件) |
| 排序查询: select * from ... order by xx [asc/desc];(升序/降序) |
| 分页查询:select * from ...limit number |
| 子查询:例:select name,score from stu where name in (select name from info); |
| union联合查询:select * from sc union select |
八、mysqld用户权限管理
创建远程管理用户
create user username@'ip地址' identified by '密码'
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%'
查看用户权限
show grants for ''@'...%'
删除用户权限
revoke all on 库.表 from 'username'@'ipaddress';
九、mysqld数据库备份
| 备份类型 |
|---|
| 冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行 |
| 温备(warm backup):服务在线,但仅支持读请求,不允许写请求 |
| 热备(hot backup):备份的同时,业务不受影响 |
| 备份方法 |
|---|
| 物理冷备(完全备份) |
| 专用备份工具mysqldump或mysqlhotcopy (完全备份,逻辑备份) |
| 第三方工具备份 |
完整备份
mysqldump --all-databases -uroot > all.sql
恢复
mysql -uroot < all.sql
指定数据库的备份
mysqldump --databases 库名 -uroot > 库名.sql
恢复
mysql -uroot 库名< 库名.sql
2万+

被折叠的 条评论
为什么被折叠?



