美文网首页
3.SQL 语法

3.SQL 语法

作者: d9e7e8498548 | 来源:发表于2020-03-01 10:22 被阅读0次
  • 语法规则
    • SQL语句总是以关键字开始。
    • SQL语句以分号结尾。
    • SQL不区分大小写,意味着update与UPDATE相同
  • WHERE 中的运算符
运算符 描述
= 等于
<> 不等于。某些版本的SQL,可能写成!=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 为列指定多个可能的值
  • INSERT INTO
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • 空值
SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

SELECT column_names
FROM table_name
WHERE column_name IS NULL;
  • UPDATE
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • DELETE
DELETE FROM table_name
WHERE condition;
  • LIKE运算符
    • % 百分号表示零个,一个或多个字符
    • _ 下划线表示单个字符
  • 通用数据类型
数据类型 描述
CHARACTER(n) 字符/字符串。固定长度 n。
VARCHAR(n) 或CHARACTER VARYING(n) 字符/字符串。可变长度。最大长度 n。
BINARY(n) 二进制串。固定长度 n。
BOOLEAN 存储 TRUE 或 FALSE 值
VARBINARY(n) 或 BINARY VARYING(n) 二进制串。可变长度。最大长度 n。
INTEGER(p) 整数值(没有小数点)。精度 p。
SMALLINT 整数值(没有小数点)。精度 5。
INTEGER 整数值(没有小数点)。精度 10。
BIGINT 整数值(没有小数点)。精度 19。
DECIMAL(p,s) 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数小数点后有 2 位数的数字。
NUMERIC(p,s) 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同)
FLOAT(p) 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。
REAL 近似数值,尾数精度 7。
FLOAT 近似数值,尾数精度 16。
DOUBLE PRECISION 近似数值,尾数精度 16。
DATE 存储年、月、日的值。
TIME 存储小时、分、秒的值。
TIMESTAMP 存储年、月、日、小时、分、秒的值。
INTERVAL 由一些整数字段组成,代表一段时间,取决于区间的类型。
ARRAY 元素的固定长度的有序集合
MULTISET 元素的可变长度的无序集合
XML 存储 XML 数据
  • HAVING 子句
    HAVING 子句可指定过滤条件,从而控制查询结果中哪些组可以出现在最终结果里面。
    WHERE 子句对被选择的列施加条件,而 HAVING 子句则对 GROUP BY 子句所产生的组施加条件。
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
  • JOIN
    • 内连接(INNER JOIN):当两个表中都存在匹配时,才返回行。
    • 左连接(LEFT JOIN):返回左表中的所有行,即使右表中没有匹配的行。
    • 右连接(RIGHT JOIN):返回右表中的所有行,即使左表中没有匹配的行。
    • 全连接(FULL JOIN):只要某一个表存在匹配,就返回行。
    • 笛卡尔连接(CARTESIAN JOIN):返回两个或者更多的表中记录集的笛卡尔积。
SELECT table1.column1, table2.column2... 
FROM table1
INNER JOIN  table2
ON table1.common_field = table2.common_field 
  • UNION
    • UNION 子句/运算符用于将两个或者更多的 SELECT 语句的运算结果组合起来
    • 每个 SELECT 语句必须有相同数量的选中列、相同数量的列表达式、相同的数据类型,并且它们出现的次序要一致,不过长度不一定要相同
    • UNION ALL 运算符用于将两个 SELECT 语句的结果组合在一起,重复行也包含在内。
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
  • CREATE TABLE
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
  1. column_name 参数规定表中列的名称。
  2. data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
  3. size 参数规定表中列的最大长度。
  • ALTER TABLE
ALTER TABLE table_name
ADD column_name datatype

ALTER TABLE table_name
DROP COLUMN column_name

ALTER TABLE table_name
MODIFY/ALTER COLUMN column_name datatype
  • SQL约束
  • NOT NULL 约束:保证列中数据不能有 NULL 值
    NOT NULL 约束强制列不接受 NULL 值。
    NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
    NIQUE 约束唯一标识数据库表中的每条记录。

  • DEFAULT 约束:提供该列数据未指定时所采用的默认值

  • UNIQUE 约束:保证列中的所有数据各不相同
    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
    PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
    每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

  • 主键约束:唯一标识数据表中的行/记录
    PRIMARY KEY 约束唯一标识数据库表中的每条记录。
    主键必须包含唯一的值。
    主键列不能包含 NULL 值。
    每个表都应该有一个主键,并且每个表只能有一个主键。

  • 外键约束:唯一标识其他表中的一条行/记录
    一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
    FOREIGN KEY 约束用于预防破坏表之间连接的行为。
    FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

  • CHECK 约束:此约束保证列中的所有值满足某一条件
    CHECK 约束用于限制列中的值的范围。
    如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
    如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。

  • 索引:用于在数据库中快速创建或检索数据

约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

SQL语句快速参考

SQL语句 语法
AND / OR SELECT column_name(s)
FROM table_name
WHERE condition
AND/OR condition
ALTER TABLE ALTER TABLE table_name
ADD column_name datatype
or
ALTER TABLE table_name
DROP COLUMN column_name
AS (alias) SELECT column_name AS column_alias
FROM table_name
or
SELECT column_name
FROM table_name AS table_alias
BETWEEN SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2
CREATE DATABASE CREATE DATABASE database_name
CREATE TABLE CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
...
)
CREATE INDEX CREATE INDEX index_name
ON table_name (column_name)
or
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE VIEW CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
DELETE DELETE FROM table_name
WHERE some_column=some_value
or
DELETE FROM table_name
(Note: Deletes the entire table!!)
DELETE * FROM table_name
(Note: Deletes the entire table!!)
DROP DATABASE DROP DATABASE database_name
DROP INDEX DROP INDEX table_name.index_name (SQL Server)
DROP INDEX index_name ON table_name (MS Access)
DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL)
DROP TABLE DROP TABLE table_name
GROUP BY SELECT column_name,aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING SELECT column_name,aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
IN SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,..)
INSERT INTO INSERT INTO table_name
VALUES (value1, value2, value3,....)
or
INSERT INTO table_name(column1, column2, column3,...)
VALUES (value1, value2, value3,....)
INNER JOIN SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LEFT JOIN SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
RIGHT JOIN SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
FULL JOIN SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LIKE SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
ORDER BY SELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC
DESC]
SELECT SELECT column_name(s)
FROM table_name
SELECT * SELECT *
FROM table_name
SELECT DISTINCT SELECT DISTINCT column_name(s)
FROM table_name
SELECT INTO SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_table_name
or
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_table_name
SELECT TOP SELECT TOP number/percent column_name(s)
FROM table_name
TRUNCATE TABLE TRUNCATE TABLE table_name
UNION SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
UNION ALL SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
UPDATE UPDATE table_name
SET column1=value, column2=value,...
WHERE some_column=some_value
WHERE SELECT column_name(s)
FROM table_name
WHERE column_name operator value

参考资源

SQL教程_w3cschool

相关文章

  • 3.SQL 语法

    语法规则SQL语句总是以关键字开始。SQL语句以分号结尾。SQL不区分大小写,意味着update与UPDATE相同...

  • MySQL语法

    语法规范:1.关键字与函数名称全部大写2.数据库名称,表名称,字段名称全部小写3.SQL语句必须以分号结尾打开:n...

  • 3.sql技巧

    1.占位符 半角符“_”代表占位符,表示需要多少个位置 2.分组获取最优 这里有一张这样的数据表,需求是根据err...

  • 数据库设计E-R图及数据表和脚本代码

    1.商超E-R图 2.数据表 3.SQL Sever脚本代码

  • 从0开始搭建springboot+mysql57+navacat

    1.java环境 2.maven环境 3.sql安装 4.navacat安装 5.编辑工具

  • mysql 基本操作

    Python中创建GUID / UUID,序列号 1. 建表 2. 插入数据 3.sql语句清空表数据 数据表的清...

  • 3.SQL之数据操纵(DML)

    DML--数据操纵语言 谓词:insert update delete 添加数据 给指定列添加数据 给全部列添加...

  • 6.MySQL架构详解

    目录:1.MySQL架构详解2.MyISAM和InnoDB的比较3.SQL查询语句执行路径4.优化查询缓存 1.M...

  • 安全测试种类

    1.xss攻击:反射型:如果存储型dom型 2.csrf攻击: 3.sql注入:严格格式校验+预编译; 4.暴力破...

  • 安卓手机造测试数据

    1.安卓手机找到数据库存储路径,使用navicat打开 2.使用navicat打开数据库 3.sql编写测试数据 ...

网友评论

      本文标题:3.SQL 语法

      本文链接:https://www.haomeiwen.com/subject/feovlqtx.html