标签:-- 笔记 查询 学习 索引 MySQL WHERE Id SELECT
目录
基础篇:
通用语法:
1.SQL语句以分号结尾 [^1]
2.MySQL数据库的SQL语句不区分大小写
3.单行注释:-- 或 # ;多行注释:/* */
基础操作:
DDL-数据库操作:
基本指令:
指令 |
作用 |
SHOW DATABASES |
查询所有数据库 |
SELECT DATABASE() |
查询当前数据库 |
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则] [^2] |
创建指定数据库 |
DROP DATABASE [IF EXISTS] 数据库名 |
删除指定数据库 |
USE 数据库名 |
切换到指定数据库 |
SHOW TABLES |
查询当前数据库中所有表 |
DESC 表名 |
查询表结构 |
SHOW CREATE TABLE 表名 |
查询指定表的建表语句 |
-- 表结构创建
CREATE TABLE 表名
(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
...
字段4 字段4类型[COMMENT 字段4注释]
)[COMMENT 表注释];
-- []中内容可忽略
数据类型:
数值类型:
类型 |
(无符号UNSIGNED)范围 |
描述 |
TINYINT |
[0,255] |
极短整数值 |
SMALLINT |
[0,65535] |
短整数值 |
MEDIUMINT |
[0,216-1] |
整数值 |
INT |
[0,232-1] |
整数值 |
BIGINT |
[0,264-1] |
长整数值 |
FLOAT |
- |
单精度浮点型 |
DOUBLE |
- |
双精度浮点型 |
DECIMAL |
取决于M(精度)和D(标度) |
小数值(精确定点数) |
字符串类型:
类型 |
描述 |
CHAR |
定长字符串 |
VARCHAR |
变长字符串 |
TINYBLOB |
不超于255字符的二进制数据 |
TINYTEXT |
短文本字符串 |
BLOB |
二进制形式的长文本数据 |
TEXT |
长文本数据 |
MEDIUMBLOB |
二进制形式的中等长文本数据 |
MEDIUMTEXT |
中等长文本数据 |
LONGBLOB |
二进制形式的极大文本数据 |
LONGTEXT |
极大文本数据 |
日期时间类型:
类型 |
格式 |
描述 |
DATE |
YYYY-MM-DD |
日期值 |
TIME |
HH:MM:SS |
时间值或持续时间 |
YEAR |
YYYY |
年份值 |
DATETIME |
YYYY-MM-DD HH:MM:SS |
混合日期和时间值 |
TIMESTAMP |
YYYY-MM-DD HH:MM:SS |
混合日期和时间值,时间戳 |
CREATE TABLE Emp
(
Id INT COMMENT '编号',
WorkNum VARCHAR(10) COMMENT '工号',
Name VARCHAR(10) COMMENT '姓名',
Gender CHAR(1) COMMENT '性别',
Age TINYINT UNSIGNED COMMENT '年龄',
Idcard CHAR(18) COMMENT '身份证号',
EntryDate DATE COMMENT '入职时间'
) COMMENT '员工表';
表结构修改:
指令 |
作用 |
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束] |
添加字段 |
ALTER TABLE 表名 MODIFY 字段名 数据类型(长度) |
修改字段数据类型 |
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束] |
修改字段名与字段类型 |
ALTER TABLE 表名 DROP 字段名 |
删除字段 |
ALTER TABLE 表名 RENAME TO 新表名 |
修改表名 |
DROP TABLE [IF EXISTS] 表名 |
删除表 |
TRUNCATE TABLE 表名 |
格式化表 |
-- 添加字段
ALTER TABLE Emp ADD NickName VARCHAR(10) COMMENT '昵称';
-- 修改字段
ALTER TABLE Emp CHANGE NickName UserName VARCHAR(30) COMMENT '用户名';
DML-增、删、改操作:
插入操作:
指令 |
作用 |
INSERT INTO 表名 (字段1,字段2...) VALUES (值1,值2...) |
为指定字段添加数据 |
INSERT INTO 表名 VALUES (值1,值2...) |
为所有字段添加数据 |
INSERT INTO 表名(字段1,字段2...) VALUES(值1,值2...),(值1,值2...),(值1,值2...) INSERT INTO 表名 VALUES(值1,值2...),(值1,值2...),(值1,值2...) |
为指定字段批量添加数据 为所有字段批量添加数据 |
-- 指定字段添加数据
INSERT INTO Employee(Id, Name, Gender, EntryDate) VALUES (1,'流苏','男','2024-10-14');
-- 所有字段添加数据
INSERT INTO Employee VALUES (1,'10086','流苏','男',18,'301772','2024-10-14');
-- 指定字段批量添加数据
INSERT INTO Employee(Id, Name, Gender, EntryDate) VALUES (1,'流苏','男','2024-10-14'),(2,'Tassel','男','2024-10-24');
-- 所有字段批量添加数据
INSERT INTO Employee VALUES (1,'10086','流苏','男',18,'301772','2024-10-14'),(2,'10085','Tassel','男',34,'301723','2024-12-14');
# 注意插入数据互不影响,对于字符串类型数据以及日期类型数据需要使用单引号引用
修改、删除操作:
指令 |
作用 |
UPDATE 表名 SET 字段1 = 值1,字段2 = 值2,... [WHERE 条件] |
修改数据 |
DELETE FROM 表名 [WHERE 条件] |
删除数据 |
-- 修改数据
UPDATE Employee SET Name = '张无忌',Gender = '女' WHERE Id = 1;
# 无 WHERE 条件,将修改表中所有对应数据
UPDATE Employee SET EntryDate = '2004-10-14';
-- 删除数据
DELETE FROM Employee WHERE Gender = '女';
# 删除表中所有数据
DELETE FROM Employee;
DQL-查询操作:
DQL-编写顺序:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
字段分组列表
HAVING
分组后条件查询
ORDER BY
排序字段列表
LIMIT
分页参数
基础查询:
指令 |
作用 |
SELECT 字段1,字段2,字段3... FROM 表名 |
查询指定字段 |
SELECT * FROM 表名 |
查询所有字段 |
SELECT 字段1 [AS 别名1],字段2 [AS 别名2]... FROM 表名 |
查询并设置别名 |
SELECT DISTINCT 字段列表 FROM 表名 |
对返回数据执行去重操作 |
-- 查询指定字段
SELECT Name,WorkNum,Age FROM Employee;
-- 查询所有字段
SELECT * FROM Employee;
-- 设置别名
SELECT EntryDate AS '入职日期' FROM Employee;
-- 对返回数据执行去重操作
SELECT DISTINCT EntryDate FROM Employee;
条件查询:
指令 |
作用 |
SELECT 字段列表 FROM 表名 WHERE 条件列表 |
条件查询 |
-- 条件查询
SELECT * FROM Employee WHERE Age <= 18;
SELECT * FROM Employee WHERE Age != 18;
SELECT * FROM Employee WHERE Age >= 18 && Age <= 40;
SELECT * FROM Employee WHERE Age BETWEEN 18 AND 40;
SELECT * FROM Employee WHERE Idcard IS NULL;
SELECT * FROM Employee WHERE Idcard IS NOT NULL;
SELECT * FROM Employee WHERE Age = 18 OR Age = 20 OR Age = 40;
SELECT * FROM Employee WHERE Age IN(18,20,40);
SELECT * FROM Employee WHERE Name LIKE '__'; # 查询Name长度为2的数据
SELECT * FROM Employee WHERE Name LIKE '%L'; # 查询Name末尾为L的数据
分组查询:
聚合函数:
函数 |
作用 |
count |
统计数量 |
max |
最大值 |
min |
最小值 |
avg |
平均值 |
sum |
求和 |
语法:
指令 |
作用 |
SELECT 聚合函数(字段列表) FROM 表名 |
调用聚合函数统计表信息 |
SELECT 字段列表 FROM 表名 [WHERE 条件列表] GROUP BY 分组字段名 [HAVING 分组后过滤条件] |
分组查询[^ 3] |
标签:--,
笔记,
查询,
学习,
索引,
MySQL,
WHERE,
Id,
SELECT
From: https://www.cnblogs.com/code-yiyi/p/18493757