1、查找全部列
SELECT * from users;
结果是查看表的全部列。
2、查找部分列
<pre name="code" class="sql">SELECT id, username from users;
结果是先列出id列,再列出username列,也可以写为:
SELECT users.id , users.username FROM users;
这样可以比较清楚的分辨是那个表下的哪个字段。
3、命别名
SELECT id AS uid , username AS uname FROM users;
4、加where的条件查询
同前插入删除等操作,不再演示
5、分组 group by
1)全部记录分组
SELECT id , username FROM users GROUP BY sex;
(此为操作结果)
(此为全部的记录)
2)只对部分记录分组
SELECT age,sex FROM users GROUP BY sex HAVING age > 19;
HAVING 后的条件要么在前面select后出现,如上例;要么是闭合函数max,min,count ,sum,avg等等,如下:
SELECT age,sex FROM users GROUP BY id HAVING count(id) > 2;
此语句结果为空,count(id)> 2的意思是,一组内有超过两个id数,但很明显按id分组,每组只有一个id。
6、对查询结果排序 order by
在实际操作时为验证一些功能,我的数据表又insert了一些记录,现在的全部记录为:
(可以看到查找后显示的顺序为我们插入的顺序)
SELECT * FROM users ORDER BY id DESC;
(DESC 意为降序,ASC为升序,默认ASC)
注:可同时order by多个字段,如果第一的字段有相同的,则按第二的字段拍,以此类推。
7、限制查询结果返回的数量。LIMIT
SELECT * from users ORDER BY id DESC LIMIT 2,2;
(先按id降序排列,然后选排列后的第三第四条记录显示,不是id为3和4的显示)
8、insert - select语句,可以将查找的结果存到指定的数据表。
首先,我们创建一个新的数据表:
CREATE TABLE user_test(
id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20)
);
此时,该数据表内无记录。现在,我们做如下操作
INSERT user_test(username) SELECT username FROM users WHERE age >= 20;
操作为:吧users表里 age>=20 的记录插入到了user_test表中。现在user_test表如下: