通配符

用于代替字符串中的其他字符。

  • % :代替0个或多个字符
  • _ :代替一个字符
  • [charlist] :字符列中的任何单一字符
  • [^charlist][!charlist] :不在字符列中的任何单一字符

搜索不以A或B或N开头的人:

SELECT * FROM student
WHERE name LIKE '[!ABN]%';

LIKE

用于在where语句中搜索列的指定模式。

  • 搜索name为A开头的所有学生

    SELECT * FROM student
    WHERE name LIKE 'A%';
  • 选取 name 不包含模式 “pp” 的所有学生:

    SELECT * FROM student
    WHERE name NOT LIKE '%pp%';

IN

用于在where字句中规定多个值。

选取name为apple或banana的值:

SELECT * FROM student
WHERE name IN ('apple', 'banana');

BETWEEN

用于选取介于两个值之间的数据范围内的值。

  • 选取age在6到18的值:

    SELECT * FROM student
    WHERE age BETWEEN 6 AND 18;
  • 选取日期不在1997-01-20和1997-10-05范围的值

    SELECT * FROM student
    WHERE birthday NOT BETWEEN '1997-01-20' AND '1997-10-05';

注意:不同数据库中的边界处理可能不相同。

别名

用于为表名称或列名称指定别名。

SELECT name AS n, age AS a
FROM student;
  • 将多个列组合在一起输出

    SELECT name, CONCAT(age, ',', sex, ',', country) AS stu_info
    FROM student;
  • 超过一个表的查询

    SELECT s.name, s.age, t.name, t.assess
    FROM student AS s, teacher AS t
    WHERE s.teacher = t.name and s.country = 'CHINA';

JOIN

基于表之间的共同字段,把两个或多个表结合。

  • INNER JOIN: 表中至少有一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表中返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表存在匹配,则返回行

UNION

用于合并两个或多个SELECT语句的结果集,列的数量,数据类型,顺序必须相同。

SELECT age FROM student
UNION
SELECT age FROM teacher
ORDER BY age;

允许重复值使用UNION ALL。

SELECT INTO

从一个表中复制数据插入到一个新表中。

SELECT *
INTO studentBackUp
FROM student;

MySQL不支持

INSERT INTO SELECT

从一个表中复制数据插入到一个已存在的表中。

INSERT INTO studentBackUp
SELECT * FROM student;

CREATE DATABASE

用于创建数据库。

CREATE DATABASE mydatabase;

CREATE TABLE

用于创建表。

CREATE TABLE student
(
	Id int,
	Name varchar(255),
    Age int,
    Address varchar(255)
)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

SpringBoot使用@autowire注入为null的问题 上一篇
SQL基础 下一篇