终于有时间继续玩阿里的数据挖掘比赛,第二赛季限定工具,不得不先重拾一下数据库。以下笔记总结自网络教程。
SQL简介
SQL指结构化查询语言 SQL是一种ANSI的标准计算机语言,存在不同的版本,但不同版本都支持一些共同的关键词。
SQL 语法
一个数据库通常包含一个或多个表。 SQL 对大小写不敏感
某些数据库系统要求在每条 SQL 命令的末端使用分号
SQL DML 和 DDL
把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)
查询和更新指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
SQL 中最重要的 DDL 语句:
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
SELECT 语句
SELECT column_name1,column_name2 FROM table_name
SELECT * FROM table_name
SELECT DISTINCT 语句
关键词 DISTINCT 用于返回唯一不同的值。
SELECT DISTINCT column_name FROM table_name
WHERE 子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
AND & OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
SELECT * FROM table_name WHERE column_name1='XXX' AND column_name2='XXX'
SELECT * FROM table_name WHERE (column_name1='XXX' OR column_name2='XXX') AND column_name3='XXX'
ORDER BY 子句
ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照升序对记录进行排序,如果希望按照降序对记录进行排序,可以使用 DESC 关键字。
SELECT column_name1, column_name2 FROM table_name ORDER BY column_name1 [DESC]
INSERT INTO 语句
INSERT INTO 语句用于向表格中插入新的行
INSERT INTO 表名称 VALUES (值1, 值2,....)
也可以只在指定列插入数据,没插入数据的列留空:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
UPDATE 语句
Update 语句用于修改表中的数据。
UPDATE 表名称 SET 列名称1 = 新值1,列名称2 = 新值2 WHERE 列名称 = 某值
DELETE 语句
DELETE 语句用于删除表中的行
DELETE FROM 表名称 WHERE 列名称 = 值
TOP 子句
TOP 子句用于规定要返回的记录的数目。
SQL Server 的语法:
SELECT TOP number|percent column_name(s) FROM table_name
MySQL 语法
SELECT column_name(s) FROM table_name LIMIT number
LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
举例:
SELECT * FROM Persons
WHERE City LIKE 'N%' ―― "%" 可用于定义通配符(模式中缺少的字母)
通配符
% 替代一个或多个字符
_ 仅替代一个字符
IN 操作符
IN 操作符允许我们在 WHERE 子句中规定多个值。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
BETWEEN 操作符
在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
JOIN
join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
SELECT table1.column1, table1.column2, table2.column
FROM table1 INNER JOIN table2
ON table1.column = table2.column
除了 INNER JOIN(内连接),我们还可以使用其他几种连接。下面列出了可以使用的 JOIN 类型,以及它们之间的差异。
JOIN: 如果表中有至少一个匹配,则返回行(INNER JOIN 与 JOIN 是相同的。)
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
UNION 和 UNION ALL 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL:
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
按列拼接两条select语句的结果
SELECT INTO 语句
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
或者只把希望的列插入新表:
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
CREATE DATABASE 语句
CREATE DATABASE database_name
CREATE TABLE 语句
CREATE TABLE 语句用于创建数据库中的表。
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:
integer(size)
int(