• 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

  • 相关阅读:
    日志配置
    Mybaties核心配置文件
    配置3
    写了两个数据获得方式----费劲周折
    applicationContext
    配置2
    Django-缓存的配置
    RabbitMQ的工作模式
    centos下保留python2安装python3
    python位运算
  • 原文地址:https://www.cnblogs.com/skjr/p/5827980.html
Copyright © 2020-2023  润新知