SQL学习笔记

Posted by Xiaoxi on February 22, 2016

SQL学习


SQL简介

  • SQL是结构化查询语言
  • SQL使我们有能力访问数据库
  • SQL可以对数据库做更改

RDBMS

  • RDBMS指的是关系型数据库管理系统
  • 它是SQL的基础,也是所有现代数据库的基础,常见的有MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。

语法

备注:

大小写不敏感

依据具体的数据库,来区分是否需要分号。

1. SELECT 从表中按一定条件选取数据

eg:

SELECT LastName FROM Persons

从Persons表中选取LastNmae列数据

2. UPDATE 更新数据库表中的数据

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

3. DELETE 从数据表中删除数据

DELETE FROM 表名称 WHERE 列名称 = 值

4. INSERT INTO 向数据表中插入数据

语法:

INSERT INTO 表名称 VALUES (值1, 值2,….)

我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,….)

5. CREATE DATABASE 创建新数据库
6. ALTER DATABASE 修改数据库
7. CREATE TABLE 创建新表
8. ALTER TABLE 变更(改变)数据库表
9. DROP TABLE 删除表
10. DROP INDEX 删除索引
11. DINSTINCT 列出不同的值
12. WHERE 字句用于规定选择的标准

常见语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 (这里的值需要注意,有字符串值和数值的区别,区别在于是否添加单引号!)

13. AND和OR运算符,用于基于一个以上的条件对记录进行过滤
14. ORDER BY 语句用于对结果集进行排序(顺序)

若加上DESC,则为逆序。ASC表示正序(默认可忽略)。可通过逗号,进行多项排序。

比如:

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
15. TOP字句 用于规定返回的纪录的数目

依据规则,筛选出TOP Number纪录。(但并非所有的数据库系统都支持TOP字句)

  • SQL Server 的语法:
    SELECT TOP number|percent column_name(s)
    FROM table_name
    
  • MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的

MySQL 语法

SELECT column_name(s)
FROM table_name
LIMIT number

例子

SELECT *
FROM Persons
LIMIT 5
  • Oracle 语法
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

例子

SELECT *
FROM Persons
WHERE ROWNUM <= 5
SELECT TOP 2 * FROM Persons
SELECT TOP 50 PERCENT * FROM Persons
16. LIKE操作符用于在WHERE字句中搜索列中指定模式

语法:

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

SELECT * FROM Persons WHERE City LIKE ‘%g’

上面用于筛选以g结尾的城市,其他用法以此类推。

image

17.IN 操作符允许我吗在WHERE字句中规定多个值。

SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…)

18.BETWEEN

在WHERE字句中使用,会选取介于两个值之间的数据。(这些值可以为数值,字符串或者日期) SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2

19. Alias(别名)

表的 SQL Alias 语法 ` SELECT column_name(s) FROM table_name AS alias_name ` 列的 SQL Alias 语法 ` SELECT column_name AS alias_name FROM table_name `

20. join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据
  • JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行
  • INNER JOIN:在表中存在至少一个匹配时,INNER JOIN关键字返回行。(与JOIN一样)
21.UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

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

UNION ALL。
SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

22.数据类型

image

23. SQL约束

约束用于限制加入表的数据类型

  • NOT NULL 强制列不接受NULL值,强制字段始终包含值。
  • UNIQUE 约束唯一标识数据库表中的每条纪录
  • PRIMARY KEY 拥有自动定义的UNIQUE约束,主键必须包含唯一的值,主键列不能包含NULL值。
  • FOREIGN KEY 外键 约束用于预防破坏表之间连接的动作,也能防止非法数据插入外键列。
  • CHECK 约束列中的值范围
  • DEFAULT 约束用于向列中插入默认值
24.INDEX 用于在表中创建索引

在不读取整个表的情况下,索引使数据库应用程序可以更快的查找数据

25.DROP 删除索引、表和数据库
26.ALTER TABLE 用于在已有的表中添加、修改或删除列。
SQL ALTER TABLE 语法
如需在表中添加列,请使用下列语法:
ALTER TABLE table_name
ADD column_name datatype
要删除表中的列,请使用下列语法:
ALTER TABLE table_name 
DROP COLUMN column_name
注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。
要改变表中列的数据类型,请使用下列语法:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
27.Auto-increment 会在新记录插入表中时生成一个唯一的数字。
28.数据类型

image

image

image

image

image

image

image

image

29. GROUP BY 用于结合合计函数,根据一个或多个列多结果集进行分组

结合!是关键!!!

30. HAVING字句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。 SQL 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

参考:

http://www.w3school.com.cn/sql/