1 SELECT语句
SELECT语句是从表中检索一个或多个数据列
为了使用SELECT检索表数据,必须至少给出两条信息
1.想要选择什么
2.从什么地方选择
1.1 检索单个列
我们从做简单的SQL SELECT语句开始介绍,输出单个列的语法为SELECT 列名称 FROM 表名称;
此语句如下所示:
mysql> SELECT Author_name FROM author_information;
+-----------------+
| Author_name |
+-----------------+
| 极限剑术 |
| 秃头程序员 |
| 野兽先辈 |
| 大美妞 |
| 张三 |
+-----------------+
5 rows in set (0.00 sec)
上述语句利用SELECT语句从表author _information中检索Author _name的列,然后输出了五行数据
1.2 检索多个列
检索多个列则需要将列名以","来分割,输出多个列的语法为SELECT 列名称,列名称,列名称... FROM 表名;
请看如下所示
mysql> SELECT Author_name,Author_sex,Author_age From author_information;
+-----------------+------------+------------+
| Author_name | Author_sex | Author_age |
+-----------------+------------+------------+
| 极限剑术 | 男 | 22 |
| 秃头程序员 | 男 | 35 |
| 野兽先辈 | 男 | 24 |
| 大美妞 | 女 | 24 |
| 张三 | 男 | 25 |
+-----------------+------------+------------+
5 rows in set (0.00 sec)
上述语句利用SELECT语句从表author _ information中检索 Author_ name,Author _ sex和Author _ age三个列,输出五行数据
1.3 检索所有列
在上一篇文章讲过,使用*
可以将表格中的所有列都检索出来,语法为SELECT * FROM 表名
,如下所示
mysql> SELECT * FROM author_information;
+-----------------+------------+------------+-------------------+--------------+------------+
| Author_name | Author_sex | Author_age | Author_occupation | Author_hobby | Author_key |
+-----------------+------------+------------+-------------------+--------------+------------+
| 极限剑术 | 男 | 22 | 学生 | 睡觉 | 10001 |
| 秃头程序员 | 男 | 35 | 程序员 | 吃饭 | 10002 |
| 野兽先辈 | 男 | 24 | 学生 | 吼叫 | 10003 |
| 大美妞 | 女 | 24 | 模特 | 化妆 | 10004 |
| 张三 | 男 | 25 | 逃犯 | 犯罪 | 10005 |
+-----------------+------------+------------+-------------------+--------------+------------+
5 rows in set (0.00 sec)
使用通配符 除非是你确实需要表中的每个列,否则最好不要使用*通配符,虽然通配符非常的省事,但是检索出不需要的列会大大降低检索效率和应用程序的性能
1.4 检索不同的行
如果我使用SELECT 列名 FROM 表名;
检索出来的值应该是所有的年龄,但是我想看有多少中不同的年龄呢,这时,我们就可以使用DISTINCT
关键字,请看下面例子
mysql> SELECT Author_age FROM author_information;
+------------+
| Author_age |
+------------+
| 22 |
| 35 |
| 24 |
| 24 |
| 25 |
+------------+
5 rows in set (0.11 sec)
mysql> SELECT DISTINCT Author_age FROM author_information;
+------------+
| Author_age |
+------------+
| 22 |
| 35 |
| 24 |
| 25 |
+------------+
4 rows in set (0.00 sec)
从结果上来看第一个查询中有5个结果,而第二个查询中有4个结果,这是因为年龄中的24有重复的,使用DISTINCT
关键字之后会把重复的行合并成一行
不能部分使用
DISTINCT
DISTINCT
关键字应用与所有列而不仅仅是前置的列.如果给出SELECT DISTINCT Author_age,Author_name FROM author_information;
除非指定的两个列都不同,否则所有行都会被检索出来
1.5 限制语句
SELECT语句可以指定返回一行或者是前几行,使用LIMIT
子句可以打到效果,请看下面的例子
mysql> SELECT Author_age
-> FROM author_information
-> LIMIT 3;
+------------+
| Author_age |
+------------+
| 22 |
| 35 |
| 24 |
+------------+
3 rows in set (0.00 sec)
加上LIMIT之后就只返回了前3行的数据,而且LIMIT子句可以指定从第几行开始,显示几行,看下列例子
mysql> SELECT Author_age
-> FROM author_information
-> LIMIT 3,2;
+------------+
| Author_age |
+------------+
| 24 |
| 25 |
+------------+
2 rows in set (0.00 sec)
这个效果就是从第4行开始开始显示后两行数据
值得注意的是,数据库中的行数是从第0行开始的,所以代码中写的3在实际意义中应该是第四行