SQL
SQL 是用于访问和处理数据库的标准的计算机语言。
SQL 是什么:
- SQL 指结构化查询语言 // SQL 对大小写不敏感!
- SQL 使我们有能力访问数据库
- SQL 是一种 ANSI 的标准计算机语言 // ANSI,美国国家标准化组织
SQL 是一种标准
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
RDBMS
RDBMS 指的是关系型数据库管理系统。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表(tables)的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
SQL DML 和 DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
数据库的三种语句:
DDL语句(数据库定义语句)
1. 创建表:
CREATE TABLE t_fruits(id INTEGER, name TEXT, price INTEGER, place TEXT)
CREATE TABLE IF NOT EXISTS t_fruits(id INTEGER, name TEXT, price INTEGER, place TEXT)
CREATE TABLE IF NOT EXISTS t_animal(id INTEGER PRIMARY KEY, name TEXT NOT NULL, price INTEGER DEFAULT 60, place TEXT)
CREATE TABLE IF NOT EXISTS t_fruits(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, price INTEGER DEFAULT 2.8, place TEXT)
2. 删除表:
DROP TABLE t_fruits
DROP TABLE IF EXISTS t_fruits
3. 修改表:
修改表名: ALTER TABLE t_fruits RENAME TO t_flowers
新增属性: ALTER TABLE t_fruits ADD COLUMN weight TEXT
DML语句(数据库操作语句)
1. 插入数据:
INSERT INTO t_fruits(id, name, price) VALUES (3, '小苹果', 3.8)
2. 跟新数据:
UPDATE t_fruits SET id=0, name='香蕉', price=6.8
UPDATE t_fruits SET id=price WHERE name='苹果'
UPDATE t_fruits SET price=15 WHERE id>20 AND place='江南水乡'
3. 删除数据:
DELETE FROM t_fruits
DELETE FROM t_fruits WHERE id=5; ==> DELETE FROM t_fruits WHERE id IS 5
DQL语句(数据查询语句)
1.查询:
SELECT name FROM t_fruits
SELECT * FROM t_fruits
1.1 方法:
SELECT COUNT(*) FROM t_fruits // 查询所有字段
SELECT COUNT(name) FROM t_fruits // 查询字段 name != NULL 的数量
SELECT AVG(price) FROM t_fruits // 查询price的平均值
SELECT MAX(price) FROM t_fruits // 查询price 的最大值
SELECT MIN(price) FROM t_fruits // 查询price 的最小值
SELECT * FROM t_fruits ORDER BY price // 查询所有字段, 并进行排序(默认升序: ASC)
SELECT * FROM t_fruits ORDER BY price DESC // 倒序排序
SELECT * FROM t_fruits ORDER BY price DESC, id // 根据两个字段,两种不同的排序方式进排序
1.2 分页:
SELECT name FROM t_fruits LIMIT 3, 8 // 跳过前3条, 查询接下来的8条
SELECT name FROM t_fruits LIMIT 3 // 查询前三条
SELECT name FROM t_fruits LIMIT 5(n-1), 5 // 如果我没要以5条为一页, 进行查询可以这样设置
多表查询:
1.
SELECT *
FROM t_student AS ts, // 表以及属性可以通过AS 来取别名
t_teacher tt // 且表取别名时可以省略AS, 但是属性不能
WHERE ts.teacherId=tt.id
2.
SELECT COUNT(*) AS counts // 属性取别名时不能省略AS
FROM t_student ts,
t_teacher tt
WHERE ts.teacherId=tt.id // ts 与 tt 两个表通过teacherId 与id 关联起来
3. 左连接: 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
SELECT NAME AS counts // 属性取别名时不能省略AS
FROM t_student ts,
LEFT JOIN t_teacher tt
ON ts.teacherId=tt.id // ts 与 tt 两个表通过teacherId 与id 关联起来
4. 右连接: 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
SELECT NAME AS counts
FROM t_student ts,
RIGHT JOIN t_teacher tt
ON ts.teacherId=tt.id
参考 W3School: http://www.w3school.com.cn/sql/sql_syntax.asp