目录
一、MySQL简介
1.MySQL 的主要特点包括
2.MySQL 的主要用途包括:
二、MySQL 基础命令
1. 基本操作
1.1 进入
1.2 选择数据库
1.3 修改密码
1.4 所有命令后面都要加 “;”
2. 创建
2.1 创建数据库
2.2 创建数据表
2.3 常见字段
3. 修改/更新
3.1 添加表字段
3.2 删除表字段
3.3 修改表名
3.4 修改表选项
3.5 修改表字段类型
3.6 修改表字段位置
3.7 更新数据
4. 删除
4.1 删除数据库
4.2 删除表
4.3 删除索引
4.4 删除用户
4.5 删除数据
5. 插入
5.1 插入数据
5.2 从一个表中选择数据并插入到另一个表中
6. 查看
6.1 查看数据库
6.2 查看告警
6.3 查看创建的数据库
6.4 查看表
6.5 查看表中含有 `new` 的数据表
6.6 查看单个表的详细字段内容
7. 通配符
8. 查询
8.1 查询表中的所有数据
8.2 查询指定字段
8.3 查询带有条件的数据
8.4 查询排序后的数据
8.5 获取 ASCII 值
8.6 二进制转换
8.7 获取时间
9. 条件的运用方式
9.1 WHERE 子句
9.2 GROUP BY 子句
10. 赋权
10.1 显示权限
10.2 创建用户
10.3 赋权
一、MySQL简介
MySQL 是一种开源的关系型数据库管理系统(RDBMS),由 Oracle Corporation 开发和维护。它使用结构化查询语言(SQL)进行数据库管理和操作。MySQL 是最流行的数据库系统之一,尤其适用于 Web 应用程序和小型到中型企业的数据库需求。
1.MySQL 的主要特点包括
- 开源:MySQL 是开源软件,用户可以自由下载、使用和修改源代码。
- 跨平台:支持多种操作系统,包括 Windows、Linux 和 macOS。
- 高性能:MySQL 具有高效的查询处理能力,适用于处理大量的数据。
- 可扩展性:支持从小型应用到大型企业级应用的各种规模,能够处理大规模的数据和高并发的请求。
- 高可靠性:提供数据备份和恢复功能,支持高可用性配置,如主从复制和集群。
- 易于管理:提供多种管理工具,如 MySQL Workbench,用于简化数据库设计和管理。
2.MySQL 的主要用途包括:
- Web 应用程序:MySQL 是许多网站和 Web 应用程序的数据库后台,如 WordPress、Drupal 和 Joomla。
- 电子商务:用于存储和管理在线商店的数据,如产品信息、客户数据和订单记录。
- 数据仓库:用于存储和分析大量的数据,支持报表和数据挖掘。
- 企业应用:用于存储和管理企业内部的业务数据,如财务、库存和员工信息。
- 移动应用:作为移动应用的后端数据库存储数据。
二、MySQL 基础命令
常用命令:
mysql -uroot -pxxx;
show databases;
show tables;
create database xxx;
create table xxx;
select * from 表名;
1. 基本操作
1.1 进入
mysql -uroot -pxxx;
xxx为密码
1.2 选择数据库
要使用某个数据库才可以进行创建表等操作。
use 数据库名;
1.3 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
1.4 所有命令后面都要加 “;”
2. 创建
2.1 创建数据库
create database mydb;
create database if not exists mydb;
2.2 创建数据表
需要先进入数据库才能创建表。
use mydb;
例子,创建users表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name CHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
age INT,
balance DECIMAL(10,2),
birthdate DATE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE,
profile TEXT,
avatar BLOB
);
2.3 常见字段
- 主键(PRIMARY KEY):用于唯一标识表中的每一行,通常设置为自增,每张表必须要有一个主键。
- char:定长字符串,长度为固定值。
- varchar:变长字符串,长度为可变值。
- INT:整数类型,通常用于存储整型数值。
- date:用于存储日期值。
- datetime:用于存储日期和时间值。
- BOOLEAN:用于存储布尔值(TRUE 或 FALSE)。
- TEXT:用于存储大文本数据。
- BLOB:用于存储二进制大对象(例如图像、文件等)。
- zerofill:数字位不够的补零,0填充。
- float、double:不建议使用,第7位后四舍五入。使用定点数 decimal(10,2),设置这个列的精度为10位,其中包括小数点后两位,这个可以设置高精度38位。
3. 修改/更新
3.1 添加表字段
alter table 表名 add 列名 列定义 [first|after 列名];
alter table goods add quantity int after price;
3.2 删除表字段
alter table 表名 drop column 列名;
alter table goods drop column description;
3.3 修改表名
alter table 旧表名 rename 新表名;
alter table old to new;
rename table old to new;
3.4 修改表选项
alter table 表名 表选项 [=] 值;
alter table old charset = utf-8;
3.5 修改表字段类型
alter table 表名 modify 列名 新类型;
alter table goods modify price decimal(10,2);
3.6 修改表字段位置
alter table 表名 modify column 列名 列定义 first|after 列名;
alter table goods modify column name varchar(50) after id;
3.7 更新数据
update 表名 set 列名=新值 [where 条件];
update goods set price=5899 where id=2;
4. 删除
4.1 删除数据库
drop database 数据库名;
drop database if exists 数据库名;
4.2 删除表
drop table 表名;
drop table if exists 表名;
4.3 删除索引
drop index 索引名 on 表名;
drop index idx_name on goods;
4.4 删除用户
drop user 'username'@'host';
4.5 删除数据
delete from 数据表名 where 条件;
delete from goods where id=1;
5. 插入
5.1 插入数据
insert into 表名 values (1, '张三'), (2, '李四');
insert into 表名 (id, name) values (1, '张三'), (2, '李四');
int不要引号,其他需要加引号。
当插入全部字段时,可以不需要相应字段,但需要一一对应,其他情况需要指定字段。
5.2 从一个表中选择数据并插入到另一个表中
INSERT INTO 目标表 (列1, 列2, 列3, ...)
SELECT 源表列1, 源表列2, 源表列3, ...
FROM 源表
WHERE 条件;
INSERT INTO users_backup (id, name)
SELECT id, name
FROM users
WHERE age > 18;
6. 查看
6.1 查看数据库
show databases;
6.2 查看告警
show warnings;
6.3 查看创建的数据库
show create database 数据库名;
6.4 查看表
show tables;
6.5 查看表中含有 `new` 的数据表
show tables like '%new%';
6.6 查看单个表的详细字段内容
desc 表名;
SHOW COLUMNS FROM 表名;
7. 通配符
%:表示零个或多个字符
_:表示一个单个字符
8. 查询
8.1 查询表中的所有数据
select * from 表名;
select * from 表名\G; -- 与上面相比,展示的方法不同
8.2 查询指定字段
select id, name from goods;
8.3 查询带有条件的数据
SELECT 列名 FROM 表名 WHERE 条件;
SELECT * FROM goods WHERE price > 100;
SELECT id, name FROM users WHERE age BETWEEN 18 AND 30;
8.4 查询排序后的数据
SELECT 列名 FROM 表名 ORDER BY 列名 [ASC|DESC];
SELECT * FROM goods ORDER BY price DESC;
SELECT id, name FROM users ORDER BY age ASC;
8.5 获取 ASCII 值
select ASCII("A");
8.6 二进制转换
select bin(65), length(bin(65));
8.7 获取时间
select now(); -- 获取当前日期时间
SELECT CURDATE(); -- 获取当前日期
SELECT CURTIME(); -- 获取当前时间
9. 条件的运用方式
9.1 WHERE 子句
用于筛选行,只返回符合特定条件的行。通常在查询中用来过滤数据,根据特定条件选择符合条件的行。
SELECT * FROM users WHERE age > 18;
9.2 GROUP BY 子句
用于对结果集进行分组,通常与聚合函数(例如 `COUNT()`、`SUM()`、`AVG()` 等)一起使用,以计算每个组的汇总值。
SELECT user_id, COUNT(*) FROM orders GROUP BY user_id;
10. 赋权
10.1 显示权限
show grants;
10.2 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
10.3 赋权
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';