文章目录
- SELECT 语句
- WHERE 语句
- ORDER BY
- LIMIT 语句
- UPDATAE 语句
- DELETE 语句
- TRUNCATE
- 插入查询结果
- 聚合函数
- 本文内容主要是表数据查询的基本语法
库结构基础语法
表结构基础语法
SELECT 语句
- 全列查询
SELECT * FROM 表名;
生产情况下几乎不能用,会导致MySQL服务器崩溃
- 指定列查询
SELECT cloum1, cloum2, .... clounmn from 表名 ;
- 查询字段为表达式
SELECT cloum1+10, cloum2/2, cloum*2, .... from 表明 ;
前提是表达式合法
4.为查询结果指定别名
SELECT column_name AS alias_name FROM table_name;
column_name 可以为一个表达式
例如:
SELECT column_name1 + column_name2 AS alias_name FROM table_name;
- 查询结果去重
SELECT DISTINCT cloumn from 表名
WHERE 语句
假设一个名为users的表,这个表有 age、gender、name列属性:
- 比较运算符:
等于(=):用于比较两个值是否相等,例如:SELECT * FROM users WHERE username = 'john';
不等于(<>或!=):用于比较两个值是否不相等,例如:SELECT * FROM users WHERE age <> 18;
大于(>):用于比较左侧值是否大于右侧值,例如:SELECT * FROM users WHERE age > 18;
大于等于(>=):用于比较左侧值是否大于或等于右侧值,例如:SELECT * FROM users WHERE age >= 18;
小于(<):用于比较左侧值是否小于右侧值,例如:SELECT * FROM users WHERE age < 18;
小于等于(<=):用于比较左侧值是否小于或等于右侧值,例如:SELECT * FROM users WHERE age <= 18;
BETWEEN:用于比较一个值是否在两个值之间,例如:SELECT * FROM users WHERE age BETWEEN 18 AND 25;
IN:用于比较一个值是否在一组值之中,例如:SELECT * FROM users WHERE age IN (18, 20, 22);
LIKE:用于比较一个值是否匹配一个模式,例如:SELECT * FROM users WHERE name LIKE 'J%';
- 逻辑运算符:
AND:用于同时满足多个条件,例如:SELECT * FROM users WHERE age > 18 AND gender = 'male';
OR:用于满足多个条件中的任意一个,例如:SELECT * FROM users WHERE age > 18 OR gender = 'male';
NOT:用于否定一个条件,例如:SELECT * FROM users WHERE NOT age > 18;
ORDER BY
- 对查询结果按照指定列进行排序
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC];
ASC表示升序排序,DESC表示降序排序。如果不指定排序方式,默认为升序排序。
LIMIT 语句
从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死
UPDATAE 语句
# 基础
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
# 完整
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
例子:将employees表中age大于等于30的记录的salary列增加10%
UPDATE employees SET salary = salary * 1.1 WHERE age >= 30;
DELETE 语句
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]# 删除整表 一般生产环境没机会使用
DELETE FROM table_name ;
TRUNCATE
TRUNCATE TABLE table_name;1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事
物,所以无法回滚
3. 会重置 AUTO_INCREMENT 项
插入查询结果
INSERT INTO table_name (column1, column2, ...) SELECT column1, column2, ... FROM table_name WHERE condition;
其中,table_name是要插入数据的表名,column1、column2等是要插入数据的列名,SELECT子句用于查询要插入的数据,WHERE子句用于筛选要插入的数据。
聚合函数
假设有一个名为employees的表, 有salary、age列属性。
COUNT:用于计算指定列中的行数(不包括NULL值),例如:SELECT COUNT(*) FROM employees;
SUM:用于计算指定列中的数值总和,例如:SELECT SUM(salary) FROM employees;
AVG:用于计算指定列中的数值平均值,例如:SELECT AVG(age) FROM employees;
MAX:用于计算指定列中的最大值,例如:SELECT MAX(salary) FROM employees;
MIN:用于计算指定列中的最小值,例如:SELECT MIN(age) FROM employees;