SQL回顾总结

整理自菜鸟教程

什么是SQL

SQL 指结构化查询语言,全称是 Structured Query Language,是用于访问和处理数据库的标准的计算机语言。

SQL能做什么

  • SQL 面向数据库执行查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插入新的记录
  • SQL 可更新数据库中的数据
  • SQL 可从数据库删除记录
  • SQL 可创建新数据库
  • SQL 可在数据库中创建新表
  • SQL 可在数据库中创建存储过程
  • SQL 可在数据库中创建视图
  • SQL 可以设置表、存储过程和视图的权限

SQL语法汇总

  • 选择数据库
use database;
  • 设置使用的字符集
set name utf8;
  • 读取表中信息
SELECT * FROM table;
  • 返回唯一不同的值
SELECT DISTINCT column_name FROM table;
  • 提取满足要求的记录
SELECT column_name,
FROM table
WHERE column_name operator value;

WHERE子句中的运算符

SQL回顾总结_第1张图片
WHERE子句中的运算符
  • 基于一个以上的条件对记录进行过滤
SELECT * FROM table
WHERE country='CN'
AND|OR alexa > 50;

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录

  • 对结果集进行排序。
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC; #默认升序,DESC降序
  • 向表中插入新记录
INSERT INTO table_name
VALUES (value1,value2,value3,...);#无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);#指定列名及被插入的值
  • 更新表中的记录
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
  • 删除表中的记录
DELETE FROM table_name
WHERE some_column=some_value;
  • 规定要返回的记录的数目
SELECT TOP number|percent column_name(s)
FROM table_name;#SQL Server / MS Access 语法
SELECT column_name(s)
FROM table_name
LIMIT number;#MySQL 语法
  • LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

SQL 通配符
通配符可用于替代字符串中的任何其他字符,常与LIKE一起使用

SQL回顾总结_第2张图片
通配符

MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

  • IN 操作符允许在 WHERE 子句中规定多个值
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
  • BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
  • 为表名称或列名称指定别名
SELECT column_name AS alias_name
FROM table_name;#列的 SQL 别名语法
SELECT column_name(s)
FROM table_name AS alias_name;#表的 SQL 别名语法
  • SQL JOIN 子句用于把来自两个或多个表的行结合起来(基于这些表之间的共同字段)

INNER JOIN:如果表中有至少一个匹配,则返回行

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

LEFT JOIN:关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

RIGHT JOIN:关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;

FULL JOIN:只要其中一个表中存在匹配,则返回行

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
    !注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
  • SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中
SELECT *
INTO newtable [IN externaldb]
FROM table1;
SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;
  • INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
INSERT INTO table2
SELECT * FROM table1;
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
  • CREATE DATABASE 语句用于创建数据库。
CREATE DATABASE dbname;
  • CREATE TABLE 语句用于创建数据库中的表。
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
  • SQL 约束用于规定表中的数据规则。
    如果存在违反约束的数据行为,行为会被约束终止。
    约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)
CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);

在 SQL 中,有如下约束:

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
    DEFAULT - 规定没有给列赋值时的默认值。
  • CREATE INDEX 语句用于在表中创建索引。
CREATE INDEX index_name
ON table_name (column_name)
  • DROP INDEX 语句用于删除表中的索引
ALTER TABLE table_name DROP INDEX index_name;
  • DROP TABLE 语句用于删除表
DROP TABLE table_name;
  • DROP DATABASE 语句用于删除数据库
DROP DATABASE database_name;
  • TRUNCATE TABLE 语句用于只删除表内的数据,但并不删除表本身
TRUNCATE TABLE table_name;
  • ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
ALTER TABLE table_name
ADD column_name datatype;#在表中添加列
ALTER TABLE table_name
DROP COLUMN column_name;#删除表中的列
ALTER TABLE table_name
ALTER COLUMN column_name;#修改表中的列
  • AUTO INCREMENT 字段会在新记录插入表中时生成一个唯一的数字,与SQL约束用法相似,在创建表时添加
ALTER TABLE Persons AUTO_INCREMENT=100;#设定起始值
  • SQL CREATE VIEW 语句用于创建视图
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;
  • SQL 更新视图
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;
  • SQL 撤销视图
DROP VIEW view_name;

SQL日期

SQL回顾总结_第3张图片
MySQL 中的内建日期函数

SQL Date 数据类型:


MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:

  • DATE - 格式:YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
  • YEAR - 格式:YYYY 或 YY

SQL 函数


SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

  • AVG() - 返回平均值
  • COUNT() - 返回行数
  • FIRST() - 返回第一个记录的值
  • LAST() - 返回最后一个记录的值
  • MAX() - 返回最大值
  • MIN() - 返回最小值
  • SUM() - 返回总和

SQL Scalar 函数基于输入值,返回一个单一的值。

  • UCASE() - 将某个字段转换为大写
  • LCASE() - 将某个字段转换为小写
  • MID() - 从某个文本字段提取字符
  • LEN() - 返回某个文本字段的长度
  • ROUND() - 对某个数值字段进行指定小数位数的四舍五入
  • NOW() - 返回当前的系统日期和时间
  • FORMAT() - 格式化某个字段的显示方式

你可能感兴趣的:(SQL回顾总结)