MySQL
文章目录
一、SQL
1.1 SQL的分类
-
DDL(Data Definition Language)
用于定义数据库对象(数据库、表、列等)
-
DML(Data manipulation Language)
用于对数据库中表的记录进行更新
-
DQL(Data Query Language)
用于查询数据库中表的记录
-
DCL(Data Control Language)
用于定义数据库的访问权限和安全级别 以及 创建用户
对数据库操作的分类:CRUD
- C create 创建
- R retrieve 查询
- U update 修改
- D delete
1.2 DDL
数据库
-
创建数据库
CREATE DATABASE db1 CHARACTER SET utf8 -- 指定字符集 ;
-
切换数据库
USE db1;
-
查询当前正在使用的数据库
SELECT DATABASE();
-
查询MySQL中有那些数据库
SHOW databases;
系统数据库 说明 information_schema 信息数据库,记录其他数据库的信息 mysql mysql的核心数据库,保存了用户和权限 performance_schema 保存性能相关数据,监控mysql的性能 sys 记录了DBA所需要的信息,更方便的让DBA快速了解数据库的运行情况 -
修改数据库字符集
ALTER DATABASE db1 CHARACTER SET utf8;
-
查询当前数据库的基本信息
SHOW CREATE DATABASE db1;
-
删除数据库
DROP DATABASE db1;
常见的数据类型
-
int
-
double
-
varchar
-
date (只有年月日)
-
datetime
-
char
varchar 和 char 的区别
- varchar 是可变长度的
- char 是固定长度的,不管字符串多长,都使用固定的长度存储
- 保存固定长度的数据,用char类型,如,银行密码
数据表
-
创建数据表
CREATE TABLE table_name ( columns_name data_type , ... )
-
复制表结构
CREATE TABLE new_table_name LIKE old_table_name;
-
查看表结构
DESC table_name;
-
查看当前数据库中所有的数据表名
SHOW TABLES;
-
查看创建表的SQL
SHOW CREATE TABLE table_name;
-
表的删除
DROP TABLE table_name; -- 从数据库中删除表 DROP TABLE IF EXISTS table_name; -- 如果存在才删除
-
表的修改
- 表名
- 表的字符集
- 表中的列(数据类型,名称,长度)
- 添加列
- 删除列
RENAME TABLE old_table_name TO new_table_name; ALTER TABLE table_name CHARACTER SET character_set_name; ALTER TABLE table_name ADD column_name data_type(length); -- 修改表中列的类型或者长度 ALTER TABLE table_name MODIFY column_name data_type; -- 修改列的名称 ALTER TABLE table_name CHANGE column_name new_clumn_name new_date_tyep(length); -- 删除列 ALTER TABLE table_name DROP column_name;
1.3 DML
-
插入数据
INSERT INTO table_name (column_name, column_name, ...) VALUES (data, data, ...);
插入全部字段的数据时,可以不写字段名列表
插入 varchar 或者 char 类型的数据时,要用单引号(或者双引号)
插入空值,可以忽略不写,或者写null
-
修改数据
UPDATE table_name SET column_name = value; -- 根据条件筛选,修改数据 UPDATE table_name SET column_name = value WHERE which_column_name = what_value; -- 根据条件筛选,修改多列数据 UPDATE table_name SET column_name = value, column2_name = value2 WHERE which_column_name = what_value;
-
删除数据
-- 删除表中所有数据 (逐条删除,效率低) DELETE FROM table; -- 删除整张表,再创建一个同样表结构的同名表 (效率高) TRUNCATE TABLE table_name; -- 删除特定的数据 DELETE FROM table WHERE condition;
1.4 DQL
查询操作不会对数据表中的数据进行修改
简单查询
-
查询表中所有数据
SELECT * FROM table_name;
-
查询所有数据,只显示特定的列
SELECT column1_name, column2_name FROM table_name;
-
查询特定列的数据,将输出的表头内的字段名修改成自定义字段名
SELECT column_name AS new_name1, column2_name AS new_name2 FROM table_name;
AS 可以省略
-
查询结果去重
SELECT column_name DISTINCT FROM table_name;
-
查询结果中int类型的字段,可以直接加减运算
SELECT column_name + 1000 AS column_name FROM table_name;
条件查询
实现原理:先取出数据,满足条件的返回
运算符 | 说明 |
---|---|
> < >= <= <> != | 大小比较 |
BETWEEN … AND … | 区间 |
IN | 集合包含 |
LIKE ‘%keyword%’ | 模糊查询 |
IS NULL | 是否为 NULL |
AND && | 多个条件同时成立 |
OR || | 多个条件 任意成立 |
NOT | 取反 |
模糊查询中:
_ 表示一个占位符
% 表示任意个占位符
IS NULL 取反逻辑是 IS NOT NULL
排序查询
-
单列排序
SELECT * FROM table_name ORDER BY column_name ASC/DESC;
-
组合排序
SELECT * FROM table_name ORDER BY column_name ASC/DESC, column2_name ASC/DESC;
二次排序
聚合函数
将一列数据作为整体,进行纵向的计算
常用的聚合函数 | 说明 |
---|---|
count() | 统计记录数量 |
sum() | 求和 |
max() | |
min() | |
avg() | 平均值 |
-
注意 count() 进行统计时,会忽略空值行
-
语法格式