理解CRUD:
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写
新增(Create) :
单行数据+全列插入:
注意:只可以就行单行插入,并且必须是全列的,否则就失败了。
单行数据,全列插入语法形式:
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
创建一个学生表:
1. create table student (id int, name varchar(20), 2. chinese dicimal(3,1), 3. math dicimal(3,1), 4. english dicimal(3,1));
进行单行插入:
insert into student values(1,'张三',88,99,67);
多行数据+指定列插入:
这个就是说我们可以一次插入多行,每一行的列不做要求,可以随便插入。
语法形式:
1. insert into 表(字段1, ..., 字段N) values 2. (value1, ...), 3. (value2, ...), 4. (value3, ...);
例如:
insert into student (id, name, chinese) values (2,'李四',86),(3,'王五',67);
或者:
insert into student (id,name,chinese,math,english) values (4,'张飞',82,64,97);
这些都是可以的,但是需要注意的是,values前面括号里面的数据必须和后面的数据相匹配,否则就会出现错误。
查询(Retrieve):
全列查询:
语法形式:
select * from 表
上述例子中就用到了全列查询:
select * from student;
全列查询是把整个表中的所有数据都遍历了一边,这种用法在数据量比较大的时候不建议使用,MySQL数据库是基于客户端-服务器类型的,当我们发送指令的时候,服务器来接收指令,并给予服务。我们所需要的数据是存储在硬盘中的,所以服务器需要在硬盘中读取我们需要的数据,并加以解析,当全部都查询的时候,会增加数据传输时间和网络开销 。
所以一般我们查询的时候要指定查询的列等内容,尽量避免全列查询(当然,我们这里数据量非常非常小,就影响不是很大)。
指定列查询:
语法形式:
select 字段1,字段2... from 表
select id,name,chinese from student;
查询字段为表达式:
语法格式:
select 字段1+100,字段2+字段3 from 表
表达式不包含字段:
select name,chinese,10 from student;
表达式包含1个字段:
select name,chinese,chinese+10 from student;
表达式包含多个字段:
select name,chinese+math+english from student;
方便起见,可以加个别名:
select name,chinese+math+english as total from student;
去重操作:
顾名思义,就是去除字段中重复的数据
语法形式:
select distinct 字段 from 表
比如:我们看一下这个学生表里面的数据:
select *from student;
可以看到李四和孙六的语文成绩都是86,我们这里进行一下去重:
select distinct chinese from student;
可以看到只有一个86了,这就达到了去重的目的。需要我们注意的是,所有的查询操作仅仅是查询出一个临时的表供你查看,并没有改变存在服务器硬盘中的数据。
排序:
语法形式:
select 字段....from 表 order by 排序字段
注意:NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
1. -- ASC 为升序(从小到大) 2. -- DESC 为降序(从大到小) 3. -- 默认为 ASC
比如说我们按照语文从小到大排序:
select name,chinese from student order by chinese;
或者我们想降序:
select name,chinese from student order by chinese desc;
我们也可以按照表达式别名等等进行排序,无非就是在查询的基础上加以改动即可。
select name,chinese+math+english as total from student order by total;
也可以对多个字段进行一个排序:
如语文升序,数学降序
select *from student order by chinese,math desc;
排序是有优先级的,排序优先级随书写顺序。