02. SELECT的基本使用


一、基础的SELECT语句

  • 最基本的SELECT语句:
    • SELECT 字段1,字段2,... FROM 表名;
    • *:表中的所有的字段(或列)
    • DUAL:表示伪表
  • 列的别名:
    • SELECT 字段名 [as] "别名" from 表名;
    • 列的别名,尽量使用双引号(""),而且不建议省略as
  • 去除重复行:DISTINCT
    • SELECT DISTINCT 字段名 FROM 表名;
    • DISTINCT只能放在需要查询的字段前
  • 空值参与运算:结果一定为null
    • 空值:null,不等同于0,'','null'
    • 如何用0来代替null:SELECT IFNULL(字段名,0) FROM 表名;
  • 着重号:`
    • SELECT 字段名 FROM 表名;
    • 如果自定义的字段名、表名与关键字、保留字、数据库系统或常用方法冲突,请在SQL语句中使用`(着重号)引起来
  • 查询常数
    • SELECT 常数,字段名 FROM 表名;
  • 显示表的结构:DESCRIBE或DESC
    • DESCRIBE 表名;
    • DESC 表名;
    • 显示表中字段的详细信息
  • 过滤数据:WHERE
    • SELECT 字段名 FROM 表名 WHERE 过滤条件;
    • WHERE子句声明在FROM的后面

example

-- 基础的SELECT的使用
SELECT * FROM employees;
SELECT employee_id,last_name,salary FROM employees;

-- 列的别名
SELECT employee_id emp_id,last_name AS lname,department_id "dept_id" FROM employees;

-- 去除重复行
SELECT DISTINCT department_id FROM employees;

-- 空值参与运算:结果为null
SELECT employee_id,salary AS "月工资",salary*(1+commission_pct)*12 AS "年工资",commission_pct FROM employees;
SELECT employee_id,salary AS "月工资",salary*(1+IFNULL(commission_pct,0))*12 AS "年工资",commission_pct FROM employees;

-- 着重号
SELECT * FROM `order`;

-- 查询常熟
SELECT 'Statice' AS "company",employee_id,last_name FROM employees;

-- 显示表的结构:显示表中字段的详细信息
DESCRIBE employees;
DESC departments;

-- 过滤数据:where
-- 查询90号部门的员工信息
SELECT * FROM employees WHERE department_id = 90;

练习题

-- 1.查询员工12个月的工资总和,并起别名为ANNUAL SALARY 
SELECT employee_id,last_name,salary*12*(1+IFNULL(commission_pct,0)) AS "ANNUAL SALARY" FROM employees;

-- 2.查询employees表中去除重复的job_id以后的数据 
SELECT DISTINCT job_id FROM employees;

-- 3.查询工资大于12000的员工姓名和工资 
SELECT last_name,salary FROM employees WHERE salary>12000;

-- 4.查询员工号为176的员工的姓名和部门号 
SELECT  last_name,department_id FROM employees WHERE employee_id=176;

-- 5.显示表 departments 的结构,并查询其中的全部数据
DESC departments;
SELECT * FROM departments;