目录
1.新增数据
2.查询数据
一般查询
去重查询
排序查询
关于NULL
条件查询
分页查询
1.新增数据
语法:insert into 表名[(字段1,字段2...)] values (值,值....);
插入一条新数据行,前面指定的列,要与后面values中的值要一一对应。
注意:
-
字符串类型的值用英文的单引号记录 '
-
注意 要保持全过程都是英文符号,可以通过符号之间的距离来判断是否是英文符号
现在,我们可以创建一个 student表 来帮助理解;
select * from student;的作用是查询表中的所有数据,这在后面的全列查询里会提到。
现在,student表为空,这时候我们就可以往里面新增数据。
比如,我想放进去(1,张三),对应的语句就应该为:
一般形式
insert into student(id, name) values (1,'张三');
注意:
-
注意添加表名
简写形式
可以省略插入什么类型,根据表中的顺序直接插入数据即可
指定列插入
像student表中,就有id,name两列,那么我们可以选择只插入其中一列。
因为name存储类型为varchar,在不给name数据时,默认为null。
多行插入
实际就是在 values 后面多加几个括号。
2.查询数据
一般查询
全列查询
语法:
select * from 表名;
像是查询student表中的所有数据
现在将student表换为 exam表,对exam表进行全列查询,这个表可以自己创建一份,然后通过新增数据来实现。
指定列查询
我们可以通过 指定查询的列 来实现指定列查询,实际上就是把 * 换成想要查询的列。
select [列名,列名...] from 表名;
比如要查询 exam表中的 id,name,math列,演示及查询结果如下:
列与列之间也可以参与运算
这样看着第三列的列头名不是很舒服,我们可以把这个重命名,如下有三种方式
- select id,name,chinese+math+english as 总分 from exam;
- select id,name,chinese+math+english 总分 from exam;
- select id,name,chinese+math+english as '总分' from exam;
三种方式有些细微的区别,这里我就选第一种做个演示
去重查询
语法:
select distinct 列名 from 表名;
只查询exam表中的math列
可以看到,其中有11行,并且其中有两个98和80,这时候我们可以通过去重查询去除其中一个98和80。
可以看到这次查询的结果是有9行,并且没有重复的数。去重后,重复记录只保留一条。
注意:在查询结果中,每一列相同的MYSQL才认为他们是重复数据。
举个例子说,如果是从id,math列来进行去重查询,那么结果会有多少行?
11行,因为查询的id列并没有重复的内容,只有math里面有重复内容是无法进行去重的。
排序查询
排序规则:
- 升序 ASC
- 降序 DESC
语法:
select 列名 from 表名 order by 列名 [ASC | DESC];
默认为升序,也就是ASC。
还是以exam表为例,先对数学成绩进行升序查询;
可以看到这两种方式均可(是否省略 asc)。
在对英语成绩进行降序查询;
这里会看到其中有 -12 和 NULL,目的是为了来说明 NULL相关项。
在数值比较时,NULL 视为比任何数据都小。
在排序查询的时候,我们也可以通过别名进行查询
关于NULL
MYSQL中的NULL比较特殊
- 不论和什么值进行比较,返回值都为NULL
- NULL始终被判定为FALSE
- NULL在MYSQL就是NULL,不是0或者其他内容
条件查询
根据一些指定条件,返回符合条件的记录。
语法:
select 列名 from 表名 where 列名/表达式 运算符 条件;
例如:
查询数学成绩 < 70 的同学;
查询数学成绩 > 语文成绩的同学;
查询语文成绩 > 80 且 英语成绩 > 80 的同学;
查询语文成绩 > 80 或者 数学成绩 > 90 的同学;
其中, 如果and和or同时出现,并且没有括号来进行优先级表示,那么and的优先级是要高于or。
查询语文成绩在80到90之间的同学;
这里也可通过or方法进行查询,此处就不演示了。
查询数学成绩是58或者59,或者98的同学;
分页查询
语法:
select ... from 表名 [where] [order by] LIMIT n;
n代表要查询记录的条数,即要查询n条记录。
例如,以id升序的表中查询前2条记录;
还有一种方式,是从第几个往后查几个记录;
语法:
select ... from 表名 [where] [order by] LIMIT s,n;
s,n代表着从s条开始,筛选n条。
下面这种形式更加明确,意思和第二种方式一样
select ... from 表名 [where] [order by] LIMIT n offset s;
offset 代表偏移量。
例如,以id升序的表中查询第一条后的2条记录;
这次的分享到这里就结束了,后面我会尽快把下部分给写出了,感谢支持 。