SQL复习(w3school)笔记
SQL基础
1.SQL对大小写不敏感
2.DML(数据操作语言)与DDL(数据定义语言)
a) DML
- SELECT
- UPDATE
- DELETE
- INSERT INTO
b) DDL
- CREATE DATABASE
- ALTER DATABASE
- CREATE TABLE
- ALTER TABLE
- DROP TABLE
- CREATE INDEX
- DROP INDEX
3.DISTINCT:去除重复值
a) SELECT DISTINCT 列名 FROM 表名
4.WHERE子句
a) 值得注意的运算符 BETWEEN, LIKE
b) 文本值使用单引号,数值不用
5.ORDER BY字句
a) DESC 降序
b) ASC 升序
6.INSERT INTO语句
a) 语法
- INSERT INTO table_name VALUES (val1, val2 ...)
- INSERT INTO table_name(column1, column2...) VALUES (val1, val2 ...)
7.UPDATE语句
a) 语法: UPDATE 表名 SET 列名=新值 WHERE 列名=某值
8.DELETE语句
a) 语法:DELETE FROM 表名 WHERE 列名=值
b) 删除所有行 DELETE FROM table_name
SQL高级
1.TOP字句(MySQL为Limit)
a) 返回记录的条目数(对于有大量数据的表来说,非常有用)
- SELECT TOP number|percent column_name(s) FROM table_name
- SELECT column_name(s) FROM table_name LIMIT number
2.通配符
a) % 替代一个或多个字符
b) _替代一个字符
c) [charlist]字符列中的任何单一字符
d) [^charlist]或[!charlist]不在字符列中的任何单一字符
3.IN操作符
a) 允许我们在WHERE子句中规定多个值
b) SELECT column_name(s) FROM table_name WHERE column_name IN (val1, val2...)
4.BETWEEN操作符
a) 选取介于两个值之间的数据范围
5.Alias(别名)
a) 表别名 SELECT column_name(s) FROM table_name AS alias_name
b) 列别名 SELECT column_names AS alias_name FROM table_name
6.JOIN
a) 用于根据两个或多个表中的列之间的关系,从这些表中查询数据
b) 几种SQL JOIN
- JOIN:表中至少一个匹配,则返回行
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有行
- FULL JOIN:只要其中一个表中存在匹配,就返回行
7.INNER JOIN(与JOIN相同)
a) SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name = table_name2.column_name
8.LEFT JOIN
a) SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name = table_name2.column_name
b) 左表所有行会被列出
9.RIGHT JOIN
a) SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name = table_name2.column_name
b) 右表所有行会被列出
10.FULL JOIN
a) SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name = table_name2.column_name
b) 只要存在匹配就会返回行
11.UNION操作符
a) 用于合并两个或多个SELECT语句的结果集(必须用相同数量的列,列必须拥有相似的数据类型,且列的顺序必须相同)
b) SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
c) UNION ALL 会列出重复值
12.SELECT INTO
a) 从一个表中选取数据,然后插入另一个表中
b) 常用于创建表的备份复件或者用于对记录进行存档
c) SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename
13.CREATE DATABASE database_name
14.CREATE TABLE
a) CREATE TABLE 表名
(
列名1 数据类型,
列名2 数据类型,
……
)
15.约束Constraints
a) NOT NULL 不接受NULL值
b) UNIQUE 唯一(可以有多个UNIQUE约束)
c) PRIMARY KEY(主键) 仅有一个
d) FOREIGN KEY
- 一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEY
- 用于预防破坏表之间连接的动作
- 防止非法数据插入外键列,因为它必须是它只想的那个表中的值之一
e) CHECK 用于限制列中的值得范围
f) DEFAULT 用于向列中插入默认值
16.CREATE INDEX 在表中创建索引
a) 索引:在不读取整个表的情况下,使数据库应用程序可以更快地查找数据
b) 更新含有索引的表,更费时,所以合理的做法是静静在常被搜索的列(及表)上面创建索引
c) CREATE INDEX index_name ON table_name(column_name)
d) 唯一索引(两个列不能拥有相同索引值)CREATE UNIQUE INDEX index_name ON table_name(column_name)
17.DROP 删除索引、表和数据库
18.TRUNCATE TABLE 仅删除表内容不删除表
19.AUTO INCREMENT
20.VIEW(视图) 基于SQL语句的结果集的可视化的表
21.Date函数
a) MySQL Date函数
- NOW() 返回当前日期和时间
- CURDATE() 返回当前的日期
- CURTIME() 返回当前的时间
- DATE() 提起日期或日期/时间表达式的日期部分
- EXTRACT() 返回日期/时间的单独部分
- DATE_ADD() 给日期添加指定的时间间隔
- DATE_SUB() 从日期减去指定的时间间隔
- DATEDIFF() 返回两个日期之间的天数
- DATE_FORMAT() 用不同格式显示日期/时间
b) SQL Server Date函数
- GETDATE() 返回当前日期和时间
- DATEPART() 返回日期/时间的单独部分
- DATEADD() 在日期中添加或减去指定的时间间隔
- DATEDIFF() 返回两个日期之间的时间
- CONVERT() 用不同的格式显示日期/时间
c) MySql Date数据类型
- DATE YYYY-MM-DD
- DATETIME YYYY-MM-DD HH:MM:SS
- TIMESTAMP YYYY-MM-DD HH:MM:SS
- YEAR YYYY/YY
- SQL Server Date数据类型
- DATE YYYY-MM-DD
- DATETIME YYYY-MM-DD HH:MM:SS
- SMALLDATETIME YYYY-MM-DD HH:MM:SS
- TIMESTAMP 唯一的数字
d) 如果您希望使查询简单且更易维护,那么请不要在日期中使用时间部分!
22.NULL值
a) 测试NULL值
- IS NULL
- IS NOT NULL
23.NULL函数
a) MySQL用 IFNULL 和 COALESCE函数
24.数据类型http://www.w3school.com.cn/sql/sql_datatypes.asp
25.SQL服务器-RDBMS