SELECT语句学习

要学习SELECT语句,首先我们需要建立数据库,在创建数据库并插入数据SQL约束中我们已经学习了数据库的创建或直接下载,因此我们这里直接跳过这个过程。假设我们已经下载了MySQL-04-01.sql 与MySQL-04-02.sql ,其中第一个用于创建数据库,第二个用于插入数据。

基本SELECT语句
SELECT语句基本格式为:
SELECT 要查询的列名 FROM 表名 WHERE 限制条件;
例如查看employee表的name和age:
SELECT name,age FROM employee;

数学符号条件
WHERE限制条件可使查询更精确,其限制条件可以有数学符号(=,<,>,>=,<=)
例如查询age大于25的结果:
SELECT name,age FROM employee WHERE age>25;
或者找一个名叫Jim的员工的name,age和phone:
SELECT name,age,phone FROM employee WHERE name='Jim'

“AND”与“OR”

//筛选出age小于25或age大于30
SELECT name,age FROM employee WHERE age<25 OR age>30;
//筛选出age大于25且age小于30
SELECT name,age FROM employee WHERE age>25 AND age<30;
//若需要包含25与30这两个数字,可以替换成age BETWEEN 25 AND 30
SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30;

“IN”和“NOT IN”
用于筛选“在”或“不在”某个范围内的结果:

//查询在dpt3和dpt4的人
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN('dpt3','dpt4');
//查询不在dpt1和dpt3的人
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt NOT IN('dpt1','dpt3');

通配符
LIKE模糊查询,与LIKE联用的还有通配符_和%,其中_代表一个未指定字符,而%代表不定个未指定字符,例如:

//只记得电话号码前四位1101,后两位忘记了,可用两个_通配符代替
SELECT name,age,phone FROM employee WHERE phone LIKE '1101__';
//只记得人名以J开头时用J%
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt NOT IN('dpt1','dpt3');

对结果排序
排序关键字ORDER BY,默认是升序排序,使用关键字ASC与DESC可以指定排序为升序或降序,按照salary降序排序语句为:

SELECT name,age,salary,phone FROM employee ORDER BY salary DESC; 

内置函数与计算
SQL有五个内置函数可以对SELECT的结果做操作,COUNT-计数,SUM-求和,AVG-求平均值,MAX-最大值,MIN-最小值。COUNT可用于任何数据类型,SUM和AVG只能对数字类数据类型做计算,MAX和MIN可用于数字、字符串或是日期时间数据类型,例如:

//AS关键词给值重命名
SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;

子查询
有时候需要处理多个表才能获得所需的信息。例如:想知道Jim员工所在部门做了几个工程。员工信息储存在employee表中,但工程信息储存在project表中。这种情况我们使用子查询:

SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BY of_dpt HAVING of_dpt IN (SELECT of_dpt FROM employee WHERE name='Jim');

HAVING关键字作用和WHERE一样,都是说明接下来要进行条件筛选操作,区别是HAVING用于对分组后的数据进行筛选。

连接查询
如果需要显示两个或者多个表中数据时必须使用连接(join)操作–将两个表或多个表当做一个新的表来操作:

SELECT id,name,people_num
FROM employee,department
WHERE employee.in_dpt=department.dpt_name
ORDER BY id;

其中id、name来自employee表,people_num来自department表。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值