首页 > 代码库 > SQL

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

 

SQL