前面介绍了数据库的一些基本操作,这里主要介绍对数据库的增删改查.使用下列操作时要注意已经选中了数据库,并且进行操作的表要确实存在.
1.给表中新增数据:insert into 表名 values (值,值,值,...);其中into可以省略,括号中的值的数量,类型,含义要注意与标头的结构匹配.
上图所示为向一个叫students的表中新增两条数据,第二次新增时省略了into依旧插入成功,但为了代码的可读性,每次新增时不要省略into.要注意插入的数据类型和顺序与表头相匹配,否则会报错.
2.指定列插入:insert into 表名 (列名,列名,...) values (值,值,值,...);
这里的列名就不需要和表头信息一致,顺序也没有要求,但是要确保写的列名是存在的.
3.一次性插入多行:insert into 表名 values (值,值,值,...),(值,值,值,...);可以一次插入多条信息,比多次插入一条信息更加高效.当然,也可以使用 insert into 表名 (列,列,列,...) values (值,值,值,...),(值,值,值,...);插入多条指定行.
4.特别的插入日期时需要按照下列书写方法书写.
4.全列查询 select*from 表名;能够查询出表中所有列所有行
全列查询:select * from 表名 虽然能够显示表中的所有行列信息,但是使用该操作时服务器就会进行大量的IO操作,同时把得到的结果通过网络返回,触发大量的网络IO操作.硬盘,网卡,同一时刻能够处理的数据量是有限的,进行了select*就可能把硬盘/网卡的带宽给吃满了.此时其他普通用户针对数据库进行的操作,就可能卡住了.
5.指定列查询 select 列名,列名,列名,...from 表名;可以查询指定列的信息.
6.表达式查询:查询的结果不仅仅是列,而是可以把列带到表达式中进行计算.为了方便展示,先创建一个成绩表如下.
查询的时候把列带入进行计算:
需要注意的是,上述的表达式查询,只是针对服务器响应得到的临时结果进行了计算,不影响硬盘上存储的数据本体,硬盘上存储的仍然是插入的数据,未发生改变.
上述查询过程中,表达式相加的名字就成了临时表的表头,观察起来不太直观,因此可以给临时表的列起名字.
7.去重查询:select distinct 列名 from 表名;
这里发现最后两行有重复的成绩,可以进行去重查询.
发现两列中某一行有重复时,也可以使用 distinct 去除重复的.
8.带有排序的查询,只使用select进行排序默认是无序的,要想使查询的结果有序,需要使用 order by 语句,完整的语法如下: select 列名,列名,... from 表名 order by 列名/表达式 注意这里的排序默认是升序的,如果想要降序排列,需要在最后加上 desc 关键字.
以下是未排序的表的所有列所有行.
接下来按照语文成绩排序如下:
可以看出该排序是按照语文成绩升序排列的.接下来按照数学成绩降序排列
当然 order by 后面的表达式可以不是select选出的.
order by 也是可以指定多个列排序 : select 列名,列名,...from 表名 order by 列名 desc,列名 desc,...