引入
SQL作为一种语言,肯定不仅仅有之前提到的创建、插入、查找、提取等功能,它势必存在一些“看起来像是编程语言的功能”
今天我们就一起来看看SQL的进阶操作有哪些吧
1.order by语句排序
和python这类高级编程语言一样,SQL的排序也不需要自己从底层的算法写起。不用管什么冒泡排序还是快速排序,我们只需要会用order by就可以了——语法如下
select 字段名 from 表名 order by 字段1,字段2,... asc|desc;
其中asc表示升序排序,desc反之,是降序排序。
字段1,字段2,...表示的是我们需要按照什么字段为关键字段排序。默认先按字段1排序,在字段1一样的情况下按字段2排序……以此类推
比如上面的例子是我们需要提取员工的姓名和薪资这两列,但是我们希望提取的信息按照员工的薪资升序排序,于是我们加上order by
并且设定字段1为salary,就成功输出了我们想要的信息,如图。
在没有加asc或desc的情况下,是默认按照升序排列的
2.update语句更新数据
前面我们介绍了insert语句用于插入数据到指定的表里。那么如果我们想在已经有的表里把数据修改一下呢?。update就是实现这个功能的。
语法:
update 表名 set 字段1=值1,字段2=值2,... [where子句];
中括号中的where子句是可以省略的。在我们需要对特定记录进行更新的时候添加where子句指定条件,否则默认更新所有数据。
上面的例子中,我们发现赵六的员工号和经历编号都未填写,此时我们希望对其进行更新。将deptno=2,manager=4参数传入,我们就成功更新了数据。再次查询发现结果是我们需要的。
3.delete语句删除记录
这个无需多解释了,顾名思义就是把数据从表中移除。为什么把它放到进阶操作里呢?因为删除是个严肃的事,一个疏忽可能造成严重的后果。 把它放到进阶操作来勉励自己要把这个简单的东西当作复杂的语句来认真对待。
语法很简单:
delete from 表名 [where 子句];
这里的where子句和上面一样,是选择性输入的。如果不输入,表中所有数据都会被删掉
所以我才说必须要注意吧~
4.index索引访问
使用索引可以提高计算机运行效率、提高访问数据的速度。
创建索引的语句如下:
create index 索引名 on 表名(字段1,字段2,...)
使用索引查找时SQL语法和直接查找是一样的。不过SQL会自动使用索引提高访问数据的速度。
5.view视图
利用这个语句可以提取多个数据组建一个新的可视化表。这个视图中的字段可以是来自多个数据库的。视图语法为:
create view 视图名 as select语句;
我们直接来看一个例子。我们选取员工的名字和薪资创建了一个视图。可以直接用select来查询视图。
我们修改了张三的薪资,然后重新查找,发现原表中的数据也已经被修改了。说明视图是可以用来更新原数据的
6.null值
代表遗漏的未知数据。他的作用是一个占位符,用以代替未知或不合适的数据
需要特别注意的是,null的判断不是用=或者<>,而是is null或者is not null
7.字段和表的别名
SQL中允许我们赋予表名或字段名临时的别名,别名只在当前该句SQL语句中有效,但其可以加强语句的可读性。
当字段名字过长、语句涉及多个表(表中有相同字段名)的时候,我们往往就会赋予表或者字段别名。用法如下:
select 字段名 [as] 别名 from 表名 [as] 别名;
as可选择性输入
如图,我们在上面的操作中就是将name赋予了“姓名”的别名,salary赋予“工资”的别名,输出的就是如图中显示的别名。