写程序要学编程语言,操作数据库要学SQL语句,SQL语句有很多,比如创建数据库,删除数据库,创建表,删除表,修改表等等,但也许你工作中最需要的是「查询」,也就是SQL语句中最经典的Select,Select语句表示要从表中查询出符合一定条件的所有记录。
写SQL语句有点类似于军训中的队列训练,对程序员来说是基础中的基础,以前我们曾经讲过天天鼓捣数据,你知道数据库长啥样吗?,相信你知道「表」是什么样子,假设存在下面一张表,假设表名叫做Staff,我们来写写Select查询语句。
上一节说过Select语句的作用是查询,也就是在此表中根据条件筛选出记录,那先设置不用任何条件的语句:
Select * from Staff
*表示所有记录,也即翻译为从Staff表中挑出所有记录,所以最后结果为(查询除了所有记录):
下面,我们开始设置条件,比如:查询所有性别为female的记录,那要用到where子句,where在英文中可以表示条件,你脑中可以翻译为「当」,SQL语句如下:
Select * from Staff Where sex = ‘female’
翻译为白话为,选出Staff表中所有性别sex为female的记录,结果如下:
当然,where就可以加上很多限制条件了,比如:
Select * from Staff Where sex = ‘female’ AND age > '18'
那结果显而易见了,只有3和5两条记录会被筛选出来。
我们刚才做的条件都是指定某一个字段的条件,都是非常肯定的条件,比如大于18或者性别,可不可以做一些模糊匹配呢?当然可以
Select * from Staff Where name like ‘%g’
筛选出来的是3和5,这条语句的意思是name这个字段以字母g结尾的记录,这里%是一个通配符,可以通配任何字段,比如要筛选出中国有多少人姓「江」,那就可以「江%」来进行通配。
那可不可以对筛选出来的结果进行排序呢?
Select * from Staff ORDER BY cup DESC
是以cup字段进行降序排序,ORDER BY是排序的关键字,DESC表示降序排序,如果此处是ASC,则表示是升序排序,那查询出来的结果是什么样子呢,请看下图:
也许在这个案例中,升序排序的结果会更好一些:)
为啥写的都是Select * 呢,不可以有别的么?必须可以有啊,「*」相当于所有的列都筛选出来,如果选择一个列名或者说字段名,筛选出的记录里面就只包含这个字段了,例如:
Select name,age from Staff ORDER BY cup DESC
那结果如下,会仅仅列出名字和年龄:
下面我们看看SQL语句中的函数如何使用,函数的作用主要用于计算,下面的max就是计算age当中的最大值:
Select max(age) AS MaxAge from Staff
上面主要介绍了Select语句中的条件查询,多条件查询,模糊查询,排序,以及SQL函数的使用。SQL语句博大精深,它是和数据库打交道的唯一方法,我只是介绍了最浅显的一小部分。
如果你要深入的学习SQL语言的知识,你应该从两个大的角度挖掘,第一个是对表的增删改,第二个是查,「查(select)」是变化种类最多,最灵活,也是最核心的,在查询上面可以匹配任意的SQL函数、条件、排序、运算符、子句、索引、联合查询、别名等等。
如果你真的要学习,我劝你还是别买书了,就看看这个网站就好:http://www.w3school.com.cn/sql/
联系客服