1. 程式人生 > >資料庫系統原理之SQL(三)

資料庫系統原理之SQL(三)

資料庫系統原理之SQL(三)


1. SQL的組成

1. 資料查詢
2. 資料定義
3. 資料操作
4. 資料控制

2. 資料定義語言

  1. CREATE建立資料庫或資料庫物件

    1. 建立資料庫

      ~~~
      CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARSET SET utf8 [DEFAULT] COLLATE utf8_general_ci
      ~~~
    2. 建立表

       ~~~
       #建立表並設定主鍵和索引
       CREATE TABLE table_name (id int not null AUTO_INCREMENT,name char(50) not null default "",age int null,PRIMARY KEY(id),INDEX index_age(age));
       ~~~
    3. 檢視資料庫

       ~~~
       #可以根據正則匹配或者where從句來獲取想看到的資料庫
       SHOW {DATABASES | SCHEMAS} [LIKE’pattern’ | WHERE expr]

      ~~~

  2. ALTER對資料庫或資料庫物件進行修改

    1. 修改資料庫

      ALTER DATABASE db_name DEFAULT CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci;
    2. 更新表

      1. 在表中新增一個欄位,並在原表的sex欄位之後

         ALTER TABLE table_name 
           ADD COLUMN city char(50) not null default "" after sex;
      2. 修改表中的列名或資料型別

        #修改表table_name中的欄位c_name為name,並設定欄位型別
        ALTER TABLE table_name 
         CHANGE COLUMN c_name name char(50) not null default "";
      3. 修改或刪除指定列的預設值

        ALTER TABLE table_name
          ALTER COLUMN [drop default | set default "" ] 
      4. 只修改指定列的資料型別,不會干涉它的列名

           #first 將此列設為表的第一列
           ALTER TABLE table_name
          MODIFY COLUMN name char(25) not null first;
      5. 刪除表中多餘的欄位

        ALTER TABLE table_name
          DROP COLUMN name;
      6. 為表重新命名

        ALTER TABLE table_name
          RENAME TO back_table_name;
        RENAME TABLE table_name TO back_name;
  3. DROP刪除資料庫或資料庫物件

    1. 刪除資料庫

      DROP{DATABASE|SCHEMA}[IF EXISTS]db_name
    2. 刪除表

      DROP TABLE [IF EXISTS] table_name [,table_name2]
  4. 查看錶

    SHOW [FULL] COLUMNS {FROM | IN} tbl_name[{FROM | IN} db_name]
      [LIKE’pattern’ | WHERE expr]
    {DESCRIBE | DESC} tbl_name [col_name | wild]

3. 資料操縱語言

  1. SELECT從表中或檢視中檢索資料(查)
  2. INSERT將資料插入插入到表或檢視中(增)
  3. UPDATE修改表或檢視中的資料(改)
  4. DELETE刪除表或檢視中的資料(刪)

4. 資料控制語言

  1. GRANT授予許可權
  2. REVOKE收回許可權

5. 索引定義

​ 索引是提高資料檔案訪問效率的有效方法

  1. 弊端:
  • 索引是以檔案的形式儲存的,如果有大量的索引,索引檔案可能比資料檔案更快達到最大的檔案尺寸;
  • 索引在提高查詢速度的同時,會降低更新表的速度。
  1. 索引型別

    1. 普通索引(INDEX或KEY)
    2. 唯一性索引(UNIQUE)
    3. 主鍵(PRIMARY KEY)
  2. 建立索引(CREATE INDEX不能建立主鍵索引)

    #在table_name表上的column欄位上建立唯一索引index_name,可設定長度和升序降序
    CREATE [UNIQUE] INDEX index_name ON table_name (column [(length)][ASC | DESC])
    #為表table_name新增索引index_name
    ALTER TABLE table_name ADD INDEX index_name(name);
  3. 檢視索引

    SHOW {INDEX | INDEXES | KEYS} {FROM | IN} table_name [{FROM | IN} db_name] [WHERE expr]
  4. 刪除索引

    DROP INDEX index_name ON table_name
    ALTER TABLE table_name DROP PRIMARY KEY,DROP INDEX index_name;

6. MySQL內建函式

<
函式 描述 示例
CURDATE() 返回當前日期 SELECT CURDATE()---- 2018-09-19
ABS(X) 返回X的絕對值 select ABS(-5) ---返回5
AVG(expression) 返回表示式的平均值 返回一個班年齡的平均值---SELECT AVG(age) from class
COUNT(expression) 返回記錄數量 返回A表中的資料量---SELECT COUNT(*) from A
MAX(expression) 返回欄位中的最大值 返回一個班中最大的年齡---SELECT MAX(age) from class
MIN(expression) 返回欄位中的最小值 返回一個班中最小的年齡---SELECT MIN(age) from class
SUM(expression) 返回指定欄位的總和 返回一個班的分數總和---SELECT SUM(fraction) from class