creat 新增
INSERT 新增语句
INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ... -- value_list: value [, value] ...INTO 可以省略,写上可读性更好
表
create table users ( id bigint, name varchar(20) comment '用户名' );
三种插入方式
单行全列插入
insert into users values (1, '张三'); insert into users values (2, '李四');不写列名,值的数量、顺序必须和表定义的列完全一致
单行指定列插入
insert into users(id, name) values (3, '王五');括号里写明要插入哪些列,值和指定的列一一对应、顺序匹配
多行指定列插入
insert into users(id, name) values (4, '赵六'), (5, '钱七');一条 SQL 写多组 (值),逗号隔开,一次性插入多条
查询验证:
select * from users;
总结
- 全列插入:省略列列表,值要和表所有列对齐
- 指定列插入:只给部分字段赋值,值和写出来的列对齐
- 多行插入:一条 INSERT 多个 (value_list),减少数据库交互,
性能优于多次单行insert- 字符串类型的值,要用单引号包裹;数字不需要引号
-- 创建users表 create table users ( id bigint, name varchar(20) comment '姓名' ); -- 单行全列插入 insert into users values (1, '张三'); insert into users values (2, '李四'); select * from users; -- 单行指定列插入 , 写id name, 值跟指定列匹配 insert into users(id, name) values (3, '王五'); -- 多行指定列插入 insert into users(id, name) values (4, '赵六'), (5, '钱七');
Retrieve检索
SELECT 检索语句
语法
SELECT [DISTINCT] select_expr [, select_expr ...] [FROM table_references] [WHERE where_condition] [GROUP BY {col_name | expr}, ...] [HAVING where_condition] [ORDER BY {col_name | expr} [ASC | DESC], ... ] [LIMIT {[offset,] row_count | row_count OFFSET offset}]
执行顺序:
FROM→WHERE→GROUP BY→HAVING→SELECT(DISTINCT)→ORDER BY→LIMIT常用 Select 查询示例
-- 创建学生成绩表 CREATE TABLE exam ( id BIGINT, name VARCHAR(20) COMMENT '同学姓名', chinese FLOAT COMMENT '语文成绩', math FLOAT COMMENT '数学成绩', english FLOAT COMMENT '英语成绩' ); -- 插入测试数据 INSERT INTO exam (id, name, chinese, math, english) VALUES (1, '唐三藏', 67, 98, 56), (2, '孙悟空', 87, 78, 77), (3, '猪悟能', 88, 98, 90), (4, '曹孟德', 82, 84, 67), (5, '刘玄德', 55, 85, 45), (6, '孙权', 70, 73, 78), (7, '宋公明', 75, 65, 30);(1)查询全部列
SELECT * FROM exam;(2)查询指定列(姓名、语文、数学)
SELECT name, chinese, math FROM exam;(3)DISTINCT 去重(示例:查询不重复的数学分数)
SELECT DISTINCT math FROM exam;(4)WHERE 条件过滤
-- 查询语文大于80分的学生 SELECT * FROM exam WHERE chinese > 80;(5)计算总分、别名
AS
SELECT name, chinese + math + english AS total_score FROM exam;(6)ORDER BY 排序
-- 按总分降序排序 SELECT name, chinese + math + english AS total_score FROM exam ORDER BY total_score DESC;(7)LIMIT 分页
-- 从第0条开始,取3条(前3条数据) SELECT * FROM exam LIMIT 0,3;(8)GROUP BY + HAVING 分组过滤
-- 按数学成绩分组,只展示分组后平均分大于85的组 SELECT math, AVG(chinese) avg_chinese FROM exam GROUP BY math HAVING avg_chinese > 85;WHERE 和 HAVING 核心区别
(1)WHERE:分组之前 筛原始行,不能写AVG、SUM、COUNT这类聚合函数
(2)HAVING:分组统计完之后筛分组结果,可以使用聚合函数








