- 显示出表employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT
SELECT CONCAT(`first_name`,',',`last_name`,',',`job_id`,',',IFNULL(commission_pct,0)) AS out_put FROM employees;
- 查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序。
LENGTH(emali)
length(): 单位是字节,utf8编码下,一个汉字三个字节,一个数字或字母一个字节。gbk编码下,一个汉字两个字节,一个数字或字母一个字节。
SELECT * from employees where email LIKE "%e%" ORDER BY LENGTH(email) DESC, department_id ASC
- SELECT CONCAT(last_name,' earns ',salary,' monthly but wants ',salary*3) AS
- 'Dream Salary'
- FROM employees
- 将员工的姓名按首字母排序,并写出姓名的长度(length)
SELECT CONCAT(last_name,first_name) '姓名',LENGTH(CONCAT(first_name,last_name)) '姓名的长度' FROM employees ORDER BY ASCII(last_name),LENGTH(CONCAT(first_name,last_name)) DESC #先按形式排序(默认排序方式为升序排序),再按姓名长度降序排序
SELECT last_name,job_id, CASE job_id WHEN 'AD_PRES' THEN 'A' WHEN 'ST_MAN' THEN 'B' WHEN 'IT_PROG' THEN 'C' WHEN 'SA_REP' THEN 'D' WHEN 'ST_CLERK' THEN 'E' END as Grade from employees
六
SELECT MAX(salary),MIN(salary),SUM(salary),AVG(salary),job_id FROM employees GROUP BY job_id ORDER BY job_id ASC
- 查询编号>3的女神的男朋友的信息,如果有则列出详细,如果没有则用null填充
(由题目可看处,外连接中把beuaty当作主表,可以实现没有则用null填充)
SELECT be.name,bo.* FROM beauty be LEFT JOIN boys bo ON be.`boyfriend_id`=bo.`id` WHERE be.id>3我本来想用 USING来实现等值连接,但是using只能指定数据表里的 同名字段 进行等值连接,而这两张表没有连接两张表的同名字段,所以不能使用using。
- 查询哪个城市没有部门
- locations表的信息
- departments表的信息
查询思路:
我们可以看到city字段只在locations表里面,但是部门id只在departments表里面,所以要用到多表查询,两张表有相同字段location_id,即可用它连接两张表。
要查询哪个城市没有部门,就要筛选department_id为NULL的城市,用where限定
select city from departments d RIGHT JOIN locations l on d.location_id=l.location_id where d.department_id is NULL