1 单表数据的插入 insert into
1.1 插入: 整条/部分数据的插入 SQL语法:
insert into tab_name(column_list) values(value_list);
/* column_list字段列表; value_list 数值列表; 列表数值以逗号(,)隔开 */
/* column_list 可选参数 */
1
2
3
① 完整插入时,column_list全字段 +value_list对应全数据; 示例:
insert into bookclass(c_id, c_name, parent_id) values(1, '计算机', 0);
1
② 部分插入时,column_list部分列 +value_list对应数值; (未填写的系统自动默认填充)示例:
insert into readerinfo(card_id, name, tel) values('210210199901011111', '张飞' ,'13566661111');
1
③ 省略column_list时,value_list需全数据; 缺省数据以null代替,系统自动转化 null/default; 示例:
insert into readerinfo values('210210199901011111', '张飞', null, null,'13566661111', null);
1
1.2 插入: 多条数据的插入 SQL语法:
insert into tab_name(column_list) values(value_list_1), ..., (value_list_n);
1
插入多条数据时,指定多个 value_list数值列表,并以(,)逗号隔开, 示例:
insert into bookclass(c_id,c_name,parent_id)
values(3,'编程语言',1), (4,'数据库',1), (5,'儿科学',2); /* 逗号(,)隔开 各value_list数值列表*/
1
2
1.3 插入: select查询结果,SQL语法:
insert into tab_name(column_list) select(column_list2) from tab_name2 where(condition);
1
从 tab_name2表以condition条件查询 column_list2数据; 把结果以column_list列 插入tab_name表, 如:
insert into bookclass select * from bookclass2 where id>5;
/* 从bookclass2表的id>5的所有数据, 插入bookclass表 */
1
2
2 单表数据的更新 update 语法:
update tab_name set expresstion where(condition);
1
① expresstion是column=value表达式; 多个表达式时,以逗号(,)隔开;
② where指定更新行; 缺省 where(condition),则 更新所有行
SELECT price FROM bookinfo WHERE book_name = 'Java编程思想';
/* 查出price价格 */
UPDATE readerinfo SET balance = balance - price * 0.05
WHERE card_id = '210210199901011111';
/* 余额balance - 单价price*0.05 即得到理想结果 */
1
2
3
4
5
3 单表数据的删除 delete 语法:
delete from tab_name where(condition);
1
where指定删除行; 缺省 where(condition),则 删除所有行
注意:在MySQL Workbench中删除时,可能会遇到保护状态而报错; 需要更改 references设置
4 单表数据的查询 select
select [distinct] column_list from tab_name where condition
group by group_columns [having condition2]
order by column_1 [desc column_2 desc]
limit [position_num,] rows_num;
1
2
3
4
select 查询; group by 分组; order by 排序; limit 限量显示
4.1 查询select 语法:
select [distinct] columns from tab_name where(condition);
1
① column_list 列表; 星号(*)通配符,查询所有列;
② distinct 可选: 去重复记录;
③ from tab_name 可选: 查询范围/方向;
④ where(condition) 可选: 查询条件; 注意 is [not] null的使用
示例代码:
select class_name from bookclass;
/* 查询单列: 查询bookinfo表,显示class_name */
select class_id, class_name from bookclass;
/* 查询多列: 查询bookinfo表,显示class_id, class_name两列 */
select press from bookinfo;
/* 查询bookinfo表,显示press */
select distinct press from bookinfo;
/* 查询bookinfo表,显示press去重复后数据 */
1
2
3
4
5
6
7
8
9
4.2 分组 group by 语法:
group by group_columns [having condition];
1
① group by 常与聚合函数 MAX()/ MIN()/ SUM()/ AVG()/ COUNT()联合使用;
② [having condition]可选: 过滤分组条件; 示例代码:
select count(*) from readerinfo where sex='男';
/* 查询bookinfo表,显示count(*)的'男'读者数据 */
select sex, count(*) from readerinfo group by sex;
/* 查询bookinfo表,显示sex,count(*); 以sex分组 */
select sex from readerinfo group by sex having count(sex)>2;
/* 查询bookinfo表,显示sex; 并以sex分组,筛选sex数量>2的组 */
1
2
3
4
5
6
4.3 排序: 单列 order by
order by column [desc]; /* 单列排序 */
order by column [desc] column_2 [desc]; /* 多列排序 */
1
2
省略desc降序, 即默认asc升序; 示例代码:
select * from bookinfo order by price;
/* 查询bookinfo表,显示所有列,以price的asc升序(默认) */
select * from bookinfo order by price,store;
/* 查询bookinfo表,显示所有列,以price的asc升序(默认);同价时,再以store的asc升序 */
select * from bookinfo order by price,store desc;
/* 查询bookinfo表,显示所有列,以price的asc升序(默认);同价时,再以store的desc降序 */
1
2
3
4
5
6
7
4.4 限量显示: limit
limit [position_num,] rows_num; /* 语法1 */
limit rows_num offset position_num; /* 语法2 */
1
2
rows_num 显示行数; position_num起始位置(默认0,可选参); 示例代码:
select * from bookinfo limit 3;
/* 查询bookinfo表,显示所有列; 限3行 */
select * from bookinfo limit 1,3;
/* 查询bookinfo表,显示所有列; 序1起,显示3行 */
select * from bookinfo limit 3 offset 1