目录
1.新增
语法:insert into table_name [(column[,column]……)] values(value_list)[,(value_list)]...
指定的列名,和values中的值要一一对应,列名和表中的列表也是匹配的。
insert into goods(goods_id,goods_name,unitprice,category,provider)values
(4,'鸡米花',5,'食品','王源');
当不指定列名时,values中的值与表中的所有的列要一一对应。
insert into goods values(5,'黑椒鸡块',9,'食品','王俊凯');
一次可以写入多行数据,每条数据用逗号隔开。
insert into goods(goods_id,goods_name,unitprice,category,provider)values
(6,'泡面',5,'食品','王鹤棣'),
(7,'橙汁',8,'饮料','王鹤棣');
一次写入多行数据比一次写入一条数据效率更高。
2.查询
2.1全列查询
语法:select[distinct]{*|{column[,column]……}from table_name
[where……]
[order by column[asc|desc],……]
[limit……];
*表示所有列
select *from goods;
2.2指定列查询
语法:SELECT [DISTINCT]{*|{column[,column]……}FORM table_name;
select goods_id,goods_name from goods;
指定列的顺序和表中实际的排序没有关系
2.3查询字段为表达式
结果并不是一个真实的列名,而是一个计算的结果
select goods_id,goods_name,10 from goods;
列对应的值与指定值做运算
select goods_id,goods_name,unitprice+10 from goods;
列与列之间的计算
select id,name,chinese+math+english from exam_result;
一行数据中,列于列之间的运算,最终生成的是一个临时表,列名就是查询的表达式。
为列名指定别名(可以省略,但建议写上)
select id,name,chinese+math+english as'总分' from exam_result;
去重:DISTINCT
select distinct math from exam_result;
每一个字段都相同才可以去重
select distinct id,math from exam_result;
2.4排序
ASC升序(从小到大)
DESC降序(从大到小)
默认为ASC
语法:SELECT……FROM table_name ORDER BY column [ASC|DESC],[…];
select * from exam_result ORDER BY chinese desc;
select * from exam_result order by english asc;
1.NULL在MySQL中比任何数值都小
2.NULL与别的值进行比较,都会返回FALSE ,0
3.NULL就是NULL,不是0
4.NULL与任何值运算都会返回NULL
使用表达式及别名排序
select id,name,chinese+math+english from exam_result
order by chinese+math+english asc;
select id,name,chinese+math+english as total from exam_result order by total asc;
可以对多个字段进行排序,排序优先级随书写顺序
select id,name,chinese,math,english from exam_result order by
chinese asc,math desc,english desc;
每个被排序字段都可以指定排序规则,多个字段之间用逗号隔开;
2.4条件查询WHERE
_表示任意一个字符
select * from exam_result where name like '孙_';
%表示任意多个任意字符
select * from exam_result where name like '孙%';
逻辑运算符