SQL分类

  1. 1. 一、SQL分类
    1. 1.1. 1.1 DDL语句
    2. 1.2. 1.2 DQL语句
      1. 1.2.1. 1.2.1 列别名
      2. 1.2.2. 1.2.2 消除重复行
      3. 1.2.3. 1.2.3 比较操作符
      4. 1.2.4. 1.2.4 特殊比较运算符
      5. 1.2.5. 1.2.5 运算符的优先级
      6. 1.2.6. 1.2.6 ORDER BY子句
    3. 1.3. 1.3 DML

一、SQL分类

  DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create、drop、alter等。

  DML(Data Manipulation Languages)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。

  DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,主要的语句关键字包括grant、revoke等。

​ DQL:数据查询语言。select……

1.1 DDL语句

  DDL是数据定于语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改等操作的语言。它和DML语言的最大区别是DML只是对表内部数据操作,而不涉及表的定义,结构的修改,更不会涉及其他对象。DDL语句更多的由数据库管理员(DBA)使用,开发人员一般很少使用。

1.2 DQL语句

语法:

1
2
SELECT  [DISTINCT]{*| column| expression [alias],...}
FROM table;
1.2.1 列别名
  • 列别名 用来重新命名列的显示标题 如果SELECT语句中包含计算列,通常使用列别名来重新定义列标题。

  • 使用列别名的方法

  • 方式1:列名 列别名

方式2:列名 AS 列别名

  • 以下三种情况列别名两侧需要添加双引号
    列别名中包含有空格
    列别名中要求区分大小写(ORACLE中)
    列别名中包含有特殊字符
  • 列别名使用

例如:

1
2
SELECT ename AS name, sal salary
FROM emp;

查询员工年薪,并给新的列起别名yearSal(不会改变原来的表数据)

1
select ename, 12*sal+comm as 'yearSal' from emp;

(as 可以省略)

1.2.2 消除重复行
  • 重复行 以下查询的结果默认输出所有行,其中包含了重复行
1
2
SELECT deptno
FROM emp;
  • 消除重复行 在SELECT字句中使用关键字DISTINCT可消除重复行。
1
2
SELECT DISTINCT deptno
FROM emp;
1.2.3 比较操作符

​ (不等于符号是 ‘<>’)

  • 比较字符型数据
1
2
3
SELECT ename, job, deptno
FROM emp
WHERE job='CLERK';
  • 字符型数据作为被比较的值时,必须用单引号引起来

  • 字符型数值区分大小写(MySQL不区分,Oracle区分)

  • 比较日期型数据

1
2
3
SELECT ename, hiredate, deptno
FROM emp
WHERE hiredate > '1985-01-01';
  • 日期型数值作为被比较的值时,必须用单引号引起来。
1.2.4 特殊比较运算符
运算符 含义
BETWEEN…AND… 判断要比较的值是否在某个范围内。
IN( 集合列表) 判断要比较的值是否和集合列表中的任何一个值相等。
LIKE 判断要比较的值是否满足部分匹配
IS NUL 判断要比较的值是否为空值NULL
  • BETWEEN..AND..

  • 使用BETWEEN .. AND.. 运算符来判断要比较的值是否在某个范围内。

查询薪水在1000-1500(包含1000、1500)范围内的员工的姓名跟薪水

1
2
3
SELECT    ename, sal
FROM emp
WHERE sal BETWEEN 1000 AND 1500;
  • IN运算符

  • 使用IN运算符判断要比较的值是否和集合列表中的任何一个值相等。

1
2
3
SELECT    empno, ename, sal, mgr
FROM emp
WHERE mgr IN (7902, 7566, 7788);
  • LIKE运算符

  • 使用LIKE运算符判断要比较的值是否满足部分匹配,也叫模糊查询。模糊查询中两个通配符:

  • % 代表零或任意更多的字符

    _ 代表一个字符

查询S开头的名字:

1
2
3
SELECT    ename
FROM emp
WHERE ename LIKE 'S%';

MySQL中ESCAPE关键字:

ESCAPE 关键字的主要作用就是指定一个字符替代转义字符“\”的作用。
1
2
3
SELECT    ename,job
FROM emp
WHERE job LIKE 'MAN@_%' ESCAPE '@';

转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。

1.2.5 运算符的优先级
  • 括号’()’优先于其他操作符。
优先级 运算分类 运算符举例
1 算术运算符 *, , +, -
2 比较运算符 =, <>, <, >, <=, >=
3 特殊比较运算符 BETWEEN..AND.. ,IN,LIKE,IS NULL
4 逻辑非 NOT
5 逻辑与 AND
6 逻辑或 OR
1.2.6 ORDER BY子句
  • 使用ORDER BY子句能对查询结果集进行排序,语法结构如下:
1
2
3
4
SELECT  [DISTINCT] { *| 列名 | 表达式 [别名][,...] }
FROM 表名
[WHERE 条件]
[ORDER BY {列名| 表达式| 列别名| 列序号} [ASC| DESC],…];
  • 其中:

    • 可以按照列名、表达式、列别名、结果集的列序号排序
    • ASC: 升序(默认值), DESC: 降序
    • ORDER BY 子句必须写在SELECT语句的最后

1.3 DML

一些基础操作在Mysql练习-01