SQL基础

#文件名啥的不分大小写

提取列

SELECT *

# 所有列

FROM 表名称

 

SELECT A,B,C

FROM 表名称

# 筛选出A、B、C列

 

SELECT DISTINCT 列名称

FROM 表名称

# 对列去重

 

提取行

 

SELECT *

 

FROM 表名称

WHERE 列名称 (筛选条件:=  !=  <=  >=  <  >) AND/OR (筛选条件)

# 可以在(列表名)前加NOT

 AND优先于OR

 

WHERE 列名称 IN/NOT IN ('A','B','C')

# 非字符串不用加''

 

WHERE 列名称 BETWEEN 1000 AND 3000

# 相当于:列名称>=1000 AND 列名称<=3000

 

WHERE 列名称 LIKE/NOT LIKE 'b%'

# %表示任意个数的字母

 _表示一个字母

 可以加在给出字母或单词前后,确定位置

 

WHERE 列名称 REGEXP '^field|mac'

# 表示以field开头或含有mac的内容

 开头加^表示以其后方单词为开头

 结尾加$表示以其前方单词为结尾

 中间加|表示OR

 

WHERE 列名称 REGEXP '[gim]e'

# 表示含有ge、ie、me的内容

 如果字母连续可以用[a-h]表示区间

 

WHERE 列名称 IS NULL/IS NOT NULL

# 选出空值的行

 

排序

 

SELECT 列名称,列名称,10 AS points

AS定义新的一列

 

FROM 表名称

ORDER BY 列表名

# 默认升序,加DESC变为降序,加ASC表示顺序,也可用123排序代替SELECT后方列表名

 

限制显示数量

 

SELECT *

FROM 表名称

LIMIT 偏移量,限制个数

# 偏移量:跳过n条数据

 

引入其他表格数据

 

INNER JOIN

SELECT *

FROM 表名称

JOIN 另一个表名称

  ON 表名称.列名称 = 另一个表名称.列名称

  AND 表名称.列名称 = 另一个表名称.列名称

# 两个表中同时包含某一列,SELECT后需要注明那张表格

 表名称后可以用" 某一字母"的形式简化表名称以简化代码

 ON:以给出的列名称为基准加入另一个表的信息

 如果表格在不同的数据库里可以用"数据库名称.表名称"的形式提取

 

SELECT *

FROM 表名称,(表名称

WHERE 表名称.列名称 = 表名称.列名称

# 如不加WHERE语句结果会出现笛卡尔积(第一张表中行数乘第二章表中行数)

 

SELECT *

FROM 表名称

JOIN 表名称

  USING (列名称,列名称)

# USING适用于两张表中列名称相同时,列名称需加括号

 

OUTER JOIN

SELECT *

FROM 表1

LEFT/RIGHT JOIN 表2

  ON 表1.列名称 = 表2.表名称

ORDER BY 列名称

LEFT:保留表1中所有内容  RIGHT:保留表2中所有内容

 为方便一般使用LEFT

 

NATURAL JOIN

SELECT *

FROM 表名称

NATURAL JOIN 表名称

# 系统自动连接两表

 

CROSS JOIN

SELECT *

FROM 表名称

CROSS JOIN 表名称,表名称

# 产生笛卡尔积(第一张表中行数乘第二章表中行数)

 

组合查询

 

SELECT 列名称

FROM 表名称

UNION

SELECT 列名称

FROM 表名称

# 将两个查询结果合并,两个查询的列数必须一致

 

表格中间按钮

 

界面:

Datetype:

    INT(n): 整数

    VARCHAR(n): 字符串(最大长度为n)

    CHAR(n): 字符串(固定长度n)

PK: 主键,最前端以黄色标出

NN: 非null的缩写,打钩则单元格必须有内容

AI: 自动增量,通常和主键一起选择,用于计数

Default/Expression: 当单元格没有内容时显示的内容

 

插入行

 

一行

INSERT INTO 表名称

VALUES (…,'…','…',…);

# …: 按顺序填入单元格

  DEFAULT: 为AI或Default中自动生成的值

 

INSERT INTO 表名称 (列名称,列名称)

VALUES (列内容,列内容);

 

多行

INSERT INTO 表名称 (列名称,列名称,列名称)

VALUES ('内容','内容','内容'),

     ('内容','内容','内容'),

     ('内容','内容','内容');

 

在多个表格插入相关信息

 

INSERT INTO 表1 (列名称,列名称,列名称)

VALUES (内容,内容,内容);

 

INSERT INTO 表2

VALUES

  (LAST_INSERT_ID(),内容,内容,内容),

  (LAST_INSERT_ID(),内容,内容,内容);

# 在表2中加入与表1添加内容相关的补充信息

 

创建新表格

 

CREAT TABLE 新表名称 AS

SELECT * FROM 表名称

# 创建该表格后默认不会勾选主键和AI

 在左侧右击新建的表格,点击Truncate Table...

 

复制黏贴

 

INSERT INTO 新表名称

SELECT *

FROM 表名称

WHERE 新表名称+删选条件

 

更新单元格

 

UPDATE 表名称

SET

  列名称 = 数值/公式,

  列名称 = 数值/公式;

WHERE 列名称+筛选条件

# 筛选条件可以用子查询的方式

 

删除数据

 

DELETE FROM 表名称

WHERE 列名称 = 

   (SELECT *

    FROM 表名称

    WHERE 列名称 = ...)

 

恢复数据库

 

顶部右击选择SQL script,选择create-datebases.sql,点右下角open,点小闪电重建所有数据库,刷新左列

posted @ 2020-04-21 22:22  醴酒微甜  阅读(141)  评论(0)    收藏  举报