MySQL-宋红康-(课P14-P15)-基本查询语句(Select)

b站视频:

14-最基本的SELECT...FROM结构_哔哩哔哩_bilibili

8.4 基本查询(Select)语句

数据table: emp员工表创建如下

# 员工表
CREATE TABLE EMP
(
    EMPNO    INT PRIMARY KEY, -- 员工编号
    ENAME    VARCHAR(10),     -- 员工名称
    JOB      VARCHAR(9),      -- 工作
    MGR      DOUBLE,          -- 直属领导编号
    HIREDATE DATE,            -- 入职时间
    SAL      DOUBLE,          -- 工资
    COMM     DOUBLE,          -- 奖金
    DEPTNO   INT,             -- 部门号
    FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO)
);


INSERT INTO EMP
VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20);
INSERT INTO EMP
VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);
INSERT INTO EMP
VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);
INSERT INTO EMP
VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20);
INSERT INTO EMP
VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);
INSERT INTO EMP
VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30);
INSERT INTO EMP
VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10);
INSERT INTO EMP
VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1987-07-13', 3000, NULL, 20);
INSERT INTO EMP
VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10);
INSERT INTO EMP
VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30);
INSERT INTO EMP
VALUES (7876, 'ADAMS', 'CLERK', 7788, '1987-07-13', 1100, NULL, 20);
INSERT INTO EMP
VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30);
INSERT INTO EMP
VALUES (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20);
INSERT INTO EMP
VALUES (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10);

8.4.1 select...from

最基本的select语句:

SELECT 标识选择哪些列

FROM 标识从哪个表中选择

MySQL-宋红康-(课P14-P15)-基本查询语句(Select)_第1张图片

实例1:

select 1+1,3*2;

结果:

实例2:

dual 伪表

select 1+1,3*2 
from dual;

结果:

8.4.2 列的别名

语法:AS 别名

说明:

(1)可以给字段取别名、可以给表名取别名

(2)AS 可以省略

(3)如果给字段取别名,如果别名中包含特殊符号,例如“空格”等,建议给别名加上双引号

(4)如果是给表名取别名,那么不能加双引号或单引号,也不能有特殊符号,例如“空格”等

(5)建议别名简短,见名知意

示例:

# 查询员工姓名以及工作
select ENAME as "员工姓名",
       JOB as "工作"
from emp;

8.4.3 去除重复行

默认情况下,查询会返回全部行,包括重复行

# 查询员工表的部门编号

select DEPTNO

from emp;

结果:

出来所有的部门编号

MySQL-宋红康-(课P14-P15)-基本查询语句(Select)_第2张图片

# 查询员工表的部门编号
select distinct DEPTNO 
from emp;

结果:

MySQL-宋红康-(课P14-P15)-基本查询语句(Select)_第3张图片

这里有两点需要注意:

  1. Distinct 需要放到所有列名的前面,如果写成select ename, distinct deptno from emp;会报错

MySQL-宋红康-(课P14-P15)-基本查询语句(Select)_第4张图片

  1. distinct其实是会对后面所有的列名的组合进行去重。你能看到最后的结果是12条,因为这12条部门id不同,都有sal这个属性值。如果你想要都有哪些不同的部分(DEPTNO),只需要写DISTINCT DEPTNO即可,后面不需要再加上其他的列名了。

select distinct DEPTNO, 
                SAL 
from emp;

结果:

MySQL-宋红康-(课P14-P15)-基本查询语句(Select)_第5张图片

练习:牛客网-SQL 39

8.4.4 空值参与运算

所有运算符或列值遇到null值,运算的结果都为 null

这里你一定要注意,在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长 度是空。而且,在 MySQL 里面,空值是占用空间的

NULL不等同于0,'','null';

8.4.5 着重号

我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法名冲突。如果真的相同,请在SQL语句中使用一对``(着重号)引起来 例如 mysql> SELECT * FROM ORDER;

8.4.6 显示表结构

使用DESCRIBE 或 DESC 命令,表示表结构。

# 显示了表中字段的详细信息
desc emp;

结果:

MySQL-宋红康-(课P14-P15)-基本查询语句(Select)_第6张图片

8.4.7 总结

(1)如果SELECT后面是*,那么表示查询所有字段

(2)SELECT后面的查询列表,可以是表中的字段,常量值,表达式,函数

(3)查询的结果是一个虚拟的表

(4)select语句,可以包含5种子句:依次是where、 group by、having、 order by、limit必须照这个顺序。

你可能感兴趣的:(MySQL,sql,数据库,mysql)