1.新增
1.1全部插入
insert into 表名 values(值, 值....);
这里的值要和列的个数和类型相匹配
使用'或者"来表示字符串
1.2指定列插入
insert into 表名(列名, 列名...) values(值,值...);
剩余的列会填入默认值
1.3一次插入多行
insert into 表名 values(值,值...),(值,值...)...;
一次插入多行记录,相比一次插入一行,分多次插入要快不少.
1.4插入datetime类型
可以用一个固定格式的字符串。来表示时间日期
mysql> create table shijian(id int, birthday datetime);
Query OK, 0 rows affected (0.04 sec)mysql> insert into shijian values(18, '2004-10-04 12:00:00');
Query OK, 1 row affected (0.00 sec)
如果想填写的日期就是当前时刻,可以使用now()函数
mysql>insert into shijian values(12, now());
2.查询
2.1全列查询
select * from 表名;
把表中所有行和列都查询出来
mysql> select * from shijian;
+------+---------------------+
| id | birthday |
+------+---------------------+
| 18 | 2004-10-04 12:00:00 |
| 12 | 2024-11-13 08:13:05 |
+------+---------------------+
2 rows in set (0.01 sec)
这种查询有危险,因为查询东西太多,可能导致网络带宽爆满
2.2指定列查询
select 列名,列名... from 表名;
mysql> select birthday from shijian;
+---------------------+
| birthday |
+---------------------+
| 2004-10-04 12:00:00 |
| 2024-11-13 08:13:05 |
+---------------------+
2.3查询字段为表达式
作用:一边查询,一边进行计算,在查询的时候,写列名构成的表达式,把这一行中的所有行都带入到表达式中参与运算
例1:想查询所有同学,语文成绩都-10分的表
原表:
查询:
列2:
注意:这个操作并不会修改数据库服务器上的原始数据,如果再次普通查询,显示的还是原来的结果
2.4别名
用途:查询字段为表达式的时候有时候表达式比较复杂,很难看懂是什么意思,这个时候就可以设置一个别名解释一下
查询的时候给 列/表达式 指定别名.(给表也能指定别名)
select 表达式 as 别名 from 表名;
2.5去重
操作:distinct 修饰某个列/ 多个列
值相同的行,只会保留一个
- distinct修饰一个列
- distinct修饰多个列
为什么这里有多个98.0?没有完成去重吗?
因为这里的name不相同,需要distinct修饰的列都相同的情况下才会去重
2.6查询进行排序
select 列名 from 表名 order by 列名 asc/desc;
指定某个列来进行排序
asc表示升序排序,desc表示降序排序,如果省略就是升序排序
排序针对临时数据,不改变数据库原有数据
列如:按照数学成绩进行排序
注意:oder by指定的列,如果你select的时候没有把这一列查出来,也不影响排序
列入:按语文成绩排序,但是没有选择查看语文成绩
order by还可以根据表达式来进行排序
列入:通过总成绩来进行排序
还可以使用别名
指定多个列来排序,order by后面可以写多个列。 使用,分割
含义:先按照数学成绩排,如果数学成绩一样,则按照语文成绩排
使用desc:按数学降序排序,如果数学成绩相同,则按语文成绩升序排序
2.7条件查询:where
指定具体的条件,按照条件针对数据进行筛选
select 列名 from 表名 where 条件;
这个语句会遍历这个表的每一行记录,把每一行的数据分别带入到条件中,如果条件成立,这个记录就会被放入结果集合中
比较运算符:
like一般和通配符连用,通配符:就是一些特殊字符,能够表示特定的含义
%:代指任意个任意字符
_:代指一个任意字符
逻辑运算符:
查询英语不合格的同学(<)
查询语文成绩好于英语成绩的同学(>)
查询总成绩低于200的同学
注意:条件查询不能使用别名
查询语文成绩和英语成绩都大于80的同学(and)
查询语文成绩在82到90分之间的同学(btween and)
查询姓孙的同学(like)
这里的百分号意思是孙的后面可以是任意个任意字符都满足
查询名字以孙结尾的同学:
查询名字包含孙的同学
这里的模糊查询的功能是有限的
在计算机中,进行模糊匹配字符串的还有"正则表达式"这样的方式来实现
空值null查询
注意:null与任何运算符运算都=null
所以无法用=来查询null
此时需要使用<=>
2.8分页查询 LIMIT
前面说了使用select * 这种方式查询比较危险
limit可以限制这次查询最多能查出来多少个结果
limit表示这次查询查出几个记录
offset是偏移量,也就是从第几个记录开始查询