MySQL关系型数据库
1. 介绍
在开发中,数据库是专门用来存取数据的软件。数据库的职责就是管理数据的。
根据存取数据的类型分为关系型数据库和非关系型数据库
数据存储后呈现出来的效果类似上图的,是关系型数据库
数据存储后呈现出来的效果类似上图的,是非关系型数据库
1.1 MySQL
2. 安装
docker方式安装MySQL数据库
前提:安装好了docker软件
1、拉取MySQL镜像
docker pull mysql:5.7 # 拉取 mysql 5.7
docker pull mysql # 拉取最新版mysql镜像
2、docker run镜像创建容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7
- –name:容器名,此处命名为
mysql
- -e:配置信息,此处配置mysql的root用户的登陆密码
- -p:端口映射,此处映射容器的3306端口到主机3306端口
- -d:后台运行容器,保证在退出终端后容器继续运行
设置MySQL挂载目录,启动MySQL容器操作步骤
# MySQL挂在目录创建
mkdir -p /home/mysql/{
conf,data,log,mysql-files}
# 新建配置文件
vim /home/mysql/conf/my.cnf
# 配置文件如下:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
lower_case_table_names=1
init_connect='SET NAMES utf8'
max_connections=5000
wait_timeout=20000
max_user_connections=5000
max_allowed_packet=128M
thread_stack=262144
# 容器启动命令
docker run --restart=always --privileged=true --name mysql-container \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/log:/var/log \
-v /home/mysql/mysql-files:/var/lib/mysql-files \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD='123456' -id mysql:latest
3. SQL语句
SQL的英文是Structured Query Language,简称SQL,是一种操作关系型数据库的结构化查询语言。操作数据库,最经常使用就是查询操作。
1、MySQL数据库的SQL语句不区分大小写,关键字建议使用大写;
2、SQL语句可以使用单行或多行书写,以分号结尾
3、注释
单行注释
- 单行注释
# 单行注释
多行注释
/*
多行注释
多行注释
*/
4. SQL分类
分类 | 说明 | 作用 | 备注 |
---|---|---|---|
DDL | 数据定义语言 | 用来对数据库、表、列的定义 | data definition language |
DML | 数据操作语言 | 用来对数据库中表的数据进行增、删、改操作 | data manipulation language |
DQL | 数据查询语言 | 用来对数据库中表的数据进行查询 | data query language |
DCL | 数据控制语言 | 用来对数据库的控制(用户创建、权限控制) | data control language |
5. DDL
5.1 库的DDL
展示所有的数据库
show databases;
创建数据库
create database 数据库名称 charset=utf8;
create database if not exists 数据库名称 charset=utf8;
示例:
create database db1 charset=utf8;
create database if not exists db1 charset=utf8;
删除数据库
drop database 数据库名称;
drop database if exists 数据库名称;
示例:
drop database test;
drop database if exists test;
使用数据库
use 数据库名称;
查询正在使用的数据库
select database();
小结:
命令 | 作用 | 示例 |
---|---|---|
show databases; | 查看所有数据库 | show databases; |
create database if not exists 数据库名 charset=utf8; | 创建数据库 | create database if not exists db1 charset=utf8; |
use 数据库名; | 使用数据库 | use db1; |
select database(); | 查看当前使用的数据库 | select database(); |
drop database if exists 数据库名; | 删除数据库 | drop database if exists db1; |
5.2 表、列的DDL
列的内容可以是数字、字符串、时间等,由数据类型约束
数值数据类型
数据类型 | 字节数 | 有符号 | 无符号 |
---|---|---|---|
tinyint | 1个字节 | -128~127 | 0~255 |
smallint | 2个字节 | -32768~32767 | 0~65535 |
mediumint | 3个字节 | -8388608~8388607 | 0~16777215 |
int | 4个字节 | -2147483648~2147483647 | 0~4294967295 |
bigint | 8个字节 | -263~263-1 | 0~2^64-1 |
float | 单精度,4个字节 | -231~231-1 | 0~2^32-1 |
double | 双精度,8个字节 | ||
decimal[M, D] | 双精度,8个字节 |
decimal(5,2),表示共5位数字,其中2位是小数,比如:888.88
字符串数据类型
数据类型 | 长度 | 用途 |
---|---|---|
char(size) | 最大255个字符 | 数据是定长,如md5的密码,邮编,手机号,身份证号等 |
varchar(size) | 最大65535个字节 | 存放一般内容长度 |
tinytext | 最大255个字节 | |
text | 最大65535个字节 | |
mediumtext | 最大16777215个字节 | 大段文本时,如新闻、文章、论文等 |
longtext | 最大4294967295个字节 | 大段文本时,如新闻、文章、论文等 |
1、VARCHAR(size):0~65535字节 可变长度字符串,最大65532字节,1-3个字节用于记录大小【utf8编码size最大21844字符,gbk编码最大32766字符 】
2、查询速度:char > varchar
3、text与char、varchar不同的是,text不可以有默认值,能用varchar的地方不用text
日期+时间数据类型
数据类型 | 格式 |
---|---|
date | 年-月-日,如:2024-4-8 |
datetime | 年-月-日 时:分:秒,如:2024-4-8 16:17:40 |
timestamp | 年-月-日 时:分:秒,如:2024-4-8 16:17:40 |
time | 时:分:秒,如:16:17:40 |
year | 年,如:2024 |
datetime保存时间的范围: 1000-01-01 00:00:00
到 9999-12-31 23:59:59
timestamp保存时间的范围: 1970-01-01 00:00:01
到 2038-01-19 03:14:07
展示当前数据库所有表
show tables;
描述表结构
desc 表名;
查看表的创建语句
show create table 表名;
创建表
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
...
字段名n 数据类型 # 最后一个不需要逗号(,)
);
删除表
drop table 表名称;
drop table if exists 表名称;
修改表、列
# 修改表名
alter table 表名 rename to 新的表名;
# 增加一列
alter table 表名 add 列名 数据类型;
# 修改列数据类型
alter table 表名 modify 列名 新数据类型;
# 修改列名和数据类型
alter table 表名 change 列名 新列名 新数据类型;
# 删除列
alter table 表名 drop 列名;
小结:
命令 | 作用 |
---|---|
show tables; | 查看当前数据库中所有表 |
desc 表名; | 查看表结构 |
show create table 表名; | 查看表的创建语句 |
alter table 表名 rename to 新的表名; | 修改表名 |
alter table 表名 add 列名 类型; | 添加字段 |
alter table 表名 modify 列名 类型及约束; | 修改字段数据类型 |
alter table 表名 change 原名 新名 类型及约束; | 修改字段名和数据类型 |
alter table 表名 drop 列名; | 删除字段 |
drop table 表名; | 删除表 |
6. DML
6.1 添加数据
添加指定列数据
insert into 表名(列名1,列名2...) values(值1,值2...);
添加全部列数据
insert into 表名 values(值1,值2...);
批量添加指定列数据</