目录
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