目录
1.表的其他操作
1.1创建一个表
1.2对于表的排序
1.3修改某一列的名字
1.4使用表达式
1.5删除列的重复项
1.6多个列进行排序
2.条件查询
2.1条件查询语句
2.2比较运算符
2.3条件查询展示
2.4条件查询的先后问题
2.5逻辑运算符使用
2.6模糊查询匹配
2.7对于null的处理
2.8两个方式的区别说明
3.分页查询
3.1limit的使用
3.2offset的说明
4.对于数据的修改update
4.1一次修改一列
4.2一次修改多列
4.3找出总分最低三位同学
4.4截断现象
1.表的其他操作
1.1创建一个表
我们可以一行一行的插入,也可以一次性进行多行的插入,都是可以的;
首先,按照之前的这个数据的插入的这个sql语句写出来一个表,我创建的这个表里面包含了这个名字和id以及这个相关的学科的成绩;
comment表示的对于我们创建的表的列的注释,别人写的时候我们要能够认出来;
1.2对于表的排序
这个里面需要加上order by这个东西,后面需要指出来我们是使用升序还是降序对于这个表的某一列进行操作,asc表示的就是进行升序排列,这个也是默认的排列的方式,desc表示的就是降序排列;
下面的这个是我自己按照english这一列进行的默认的升序排列;
1.3修改某一列的名字
我们的下面的这个就是把biology这个列的名字修改为history的名称,但是这个修改只是临时的,实际上这个真实的数据库的这个表里面的数据是不变的,这个我们看到的这个只是临时的修改;
1.4使用表达式
我们把每一个学科的成绩进行相加,求解出来一个综合的成绩,把这个名字定义为总分,打印显示出来;
1.5删除列的重复项
就是某两个同学的这门课程的成绩分数是一样的,这个时候我们需要加上这个distinct这个单词表示只显示出来一个(两个相同分数只显示出来一个);
下面的这个表里面对于biology这个学科,有两个学生的成绩都是93分,因此我们可以使用这个distinct这个单词把这个93只保留一个;
1.6多个列进行排序
我们这个order by进行升序的时候,如果我们的这个biology这门课程的分数是一样的,这个时候我们会再次根据这个chinese分数进行排序,这两个参数的前后关系决定我们先去看谁;
2.条件查询
2.1条件查询语句
select 列名 from 表名 where 条件;
2.2比较运算符
null=null的时候,这个返回值就是一个null,因此我们的这个<=>这个就可以解决这个问题,两个都是null的时候可以返回这个1,这个<=>解决了这个=的问题;
like这个表示的是模糊匹配,就是我们不知道筛选什么,但是我们已经有了明确的标准;
2.3条件查询展示
查询语文成绩好于英语成绩的情况:
2.4条件查询的先后问题
下面的这个我们本来是想要先进行这个数据的重命名,就是把这个相加之后的结果命名为total,然后在这个where进行条件查询的时候,使用这个total进行这个条件判断,但是这个时候会报错,这个主要原因就是我们的where进行条件查询的时候,我们的这个total还没有定义,这个主要就是一个执行的先后顺序问题;
2.5逻辑运算符使用
下面的这个就是使用的or表示左右两边的这个判断条件只需要满足一个就可以了;
between and表示我们的这个数值的大小位于这个区间就会被打印输出,这个区间两边都是闭区间,临界值也是符合条件的;
下面的这个是使用的in 判断我们的数学成绩是不是在我们列举的这几个数据里面,如果有符合条件的,就会被打印输出;
2.6模糊查询匹配
上面介绍运算符的时候,提了一下这个like是模糊匹配,下面的这个就是让我们知道like是如何实现模糊匹配的,这个like实际上主要是和我们的通配符一起使用的,这个通配符主要就是_和我们的%
其中这个_表示的就是一个字符(任意的字符),多个_连续使用表示的就是多个字符(多个任意字符),其中这个5的威力就比较强大,可以代替任何的任意长度的字符,下面的这个就是具体的使用
我们的这个孙%表示的就是姓孙的所有的name都会被显示出来相关的信息:
2.7对于null的处理
我们的这个=无法对于这个null进行有效的处理,因此这个时候我们需要使用这个<=>进行判断,进而对于这个null进行处理;
2.8两个方式的区别说明
下面的就是我们的两个方式都可以实现相同的效果,但是我们的这个<=>可以针对于两个列进行操作,但是这个is进行判断的话就是只能判断一个列,这个就是两个方式的一个差别;
3.分页查询
3.1limit的使用
limit表示的就是显示数据的行数,limit 3表示的就是显示出来三行数据;
在我们的这个表里面,例如我们想要选出来最后三名同学,这个时候我们排序之后就可以使用这个limit对于显示的内容进行限制即可;
3.2offset的说明
offset表示的就是偏移量,以某一个位置为基准,进行偏移;
我们打印最前面的三个数据相当于这个时候的offset就是0,打印中间的三个数据的时候,这个offset就是3,打印最后的三个数据(当然这个地方没有三个哈),这个offset就是6,我们的这个limit3表示从我们的这个偏移的这个起始位置开始计数;
例如这个offset 3就是从偏移量为3的位置,就是我们的第四个数据位置开始计数,打印三个,因此这个显示的结果就是第4,5,6个数据;
4.对于数据的修改update
4.1一次修改一列
首先这个update需要跟上我们的操作的这个表的名字,set表示的就是设置的意思,表示的是我们要对于这个什么内容进行设置,这个设置的对象就是根据我们的这个where进行查询得到的,对于这个符合where条件的进行设置;
4.2一次修改多列
下面的这个就是对于这个数据库里面的这个表的多列内容进行修改,这个多列的内容之间需要有一个逗号,否则就会出现下面的这个问题;
4.3找出总分最低三位同学
我们可以在原来的这个数据的基础上面直接操作,这个时候就会报错,因为我们找的这个总分是大于100的,例如是128.0这个时候的这个求和结果不符合我们的decimal(3,1)这个数据类型,一次这个时候就会报错;
这个decimal(3,1)的意思就是我们的这个所有的位数就是三位,包括整数部分和小数部分,但是这个128.0就是四位,因此这个就会报错;
我们的做法就是使用上面的这个update对于这个里面的math进行-30的操作(其实都可以,只要这个求和之后不大于100就行,这样就不会出现不符合数据类型的报错);
使用这个update的时候就按照三门成绩的和进行排序,然后使用这个select* from这个指令,把这个升序(默认就是)结果以limit 3的形式打印出来就可以了;
4.4截断现象
我们没有指定的时候,就是这个表里面的每一行的chinese都会除以2,但是因为我们的这个数据都是整数,因此这个没有出现截断现象,如果我们的这个数据有45.5这样的情况;
我们的这个45.5/2之后就是一个两位小数,这个时候也是不满足我们的这个decimal(3,1)定义的,这个3上面已经说了,就是3个有效数字,这个1表示的是小数数位,只可以有一位,但是这个45.5/2之后就有两位,这个就会发生截断;