一、表中数据操作
1.向表中插入数据
单行数据+全列插入:
insert into 表名 values(...);
多行数据+指定列插入:
insert into 表名(指定列...) values (...), (...);
2.查询表中数据
全列查询:
select * from exam_result;
通常情况下不推荐使用 * 进行全列查询,因为查询的列越多,意味着需要传输的数据量越大,可能会影响到索引的使用。
指定列查询:
select id, nam, english from exam_result;
查询字段为表达式:
select id, name, english+10 from exam_result;
别名:
select id, name, chinese + math + english as 总分 from exam_result;
去重:
select distinct math from exam_result;
排序:
select name, english from exam_result order by english;//(若在最后加desc则为降序)
1.没有order by子句的查询时,返回的顺序是未定义的,不要依赖这个顺序。
2.NULL数据排序,视为比任何值都小。
select name, chinese + english as total from exam_result order by total desc;
3.使用表达式及别名排序。
select name, math, english, chinese from exam_result order by math desc, english, chinese;//查询同学的各门成绩,按数学降序,英语升序、语文升序的方式显示
指定列查询时,给我们生成的知识一个临时表,是临时表示,其根据服务器的数据生成,也就是说,所有的查询操作,都不会影响服务器磁盘上的数据。
条件查询(where)
1. WHERE条件可以使用表达式,但不能使用别名。
2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
范围查询
between...and...
select name, chinese from exam_result where chinese between 80 and 90;
in
select name, math from exam_result where math in (58, 59, 98, 99);
模糊查询
select name from exam_result where name like '孙%';
NULL的查询:
select name, mail from student where mail is not null;
分页查询
有时候数据太多,分成多个页进行显示。
select 列名 from 表名 limit N; 查询前N条记录
select 列名 from 表名 limit N offset M; 从第M条记录开始,找N条。
修改
update 表名 set ...
update exam_result set math = 90 where name = '小米';
删除
delete from 表名 ...
delete from exam_result where name = '小明';