官术网_书友最值得收藏!

2.1.3 常用的SQL語法(上篇)

本節圍繞數據庫經典的四個字:增、刪、改和查進行介紹。下面主要介紹在做數據清洗和Java Web底層業務表管理過程中常用的操作。

導入數據以后,在test數據庫中有一張默認表input,它共有6列,列名稱分別為id、mid、sex、age、degree和create_ymd,相應的數據如圖2-7所示。

圖2-7 input表的前6行數據

為了進行接下來的測試,創建一張同結構的備份表input_base供學習時使用。代碼如下。

      CREATE TABLE IF NOT EXISTS input_base(
       id bigint(20) NOT NULL AUTO_INCREMENT ,
       mid BIGINT(20) COMMENT ’用戶id',
       sex varchar(50) COMMENT ’性別’,
       age int(10) COMMENT ’年齡’,
       degree varchar(50) COMMENT ’學位’,
       create_ymd varchar(50) ,
       PRIMARY KEY (id),
       INDEX mid_index(mid)
      );

注:這里以id為自增主鍵,mid為索引,而主鍵和索引基本都是標配,除了方便管理,還能增加提升效率。

1.增

增,顧名思義就是插入數據,可以細分為全表插入數據、具體列插入數據,插入數據源可以為第三方表,也可以是簡單的初始化語句。

1)從input查詢數據并將數據插入到input_base中

(1)插入所有列(可以省略寫列名的操作)

      insert into input_base select * from input

(2)插入部分列(未插入的列,值為NULL)

      insert into input_base (id, mid, sex) select id, mid, sex from input

2)從初始化語句插入到input_base中

(1)插入所有列(可以省略寫列名操作)

      INSERT  INTO  input_base    VALUES  ('0', '120', ' 男 ', '45', ' 本科
  ', '2016-12-19');
      INSERT  INTO  input_base    VALUES  ('0', '130', ' 女 ', '35', ' 初中
  ', '2016-12-19');
      INSERT  INTO  input_base   VALUES  ('0', '140', ' 男 ', '20', ' 博士后
  ', '2016-12-19');

(2)插入部分列(未插入的列,值為NULL)

      INSERT INTO input_base (id, MID, sex)    VALUES ('0', '128485', ’男’);
      INSERT INTO input_base (id, MID, age)    VALUES ('0', '128495', '35');
      INSERT INTO input_base (id, MID, degree)  VALUES ('0', '128505', ’博士
  后’);

2.刪

刪,也是圍繞數據而言的,可以細分為DROP、TRUNCATE和DELETE,具體的理解如下。

· 相同點

? 它們都能刪除表中的數據。

? DROP、TRUNCATE都是DDL語句(數據定義語言Data Definition Language),執行后會自動提交。

· 差異性

? 功能:TRUNCATE和DELETE只刪除數據,不刪除表的結構,而DROP還會刪除表結構和相關的依賴(索引等)。

? 效率:DROP效率 > TRUNCATE效率 > DELETE效率。

? 安全性:在沒有備份前,小心使用DROP和TRUNCATE。如果涉及事務處理,最好采用DELETE。

? 適用性:場景1,想刪除部分數據,使用DELETE...WHERE...結構;場景2,想刪除表,使用DROP來操作;場景3,想保留表結構,刪除所有數據,使用TRUNCATE來操作;

? 效果性:DELETE不影響表所占用的extent,高水線(high watermark)保持原位置不動;DROP將表所占用的空間全部釋放;TRUNCATE將空間釋放到minextents個extent。

使用DROP來刪表,代碼如下。

      DROP TABLE input_base;

使用DELETE來刪除部分數據,代碼如下。

      DELETE FROM input_base WHERE sex=’男’;

使用TRUNCATE來清空表數據,代碼如下。

      TRUNCATE TABLE  input_base;

3.改

改,是使用最為頻繁的操作,如在表結構上的修改、在數據上的修改,以及在數據類型上的修改等,具體使用說明如下。

1)對表結構的修改

· 新增列

? 首位。

? 末尾。

? 指定位置。

      ALTER TABLE input_base ADD uuid  varchar(50)COMMENT’唯一標識’first;
      ALTER TABLE input_base ADD num  int(10) COMMENT ’文章數量’;
      ALTER TABLE input_base ADD amount  INT(20) COMMENT ’總額’AFTER mid;

· 刪除列

      ALTER TABLE input_base  DROP update_ymd;

說明:刪除input_base表中的update_ymd列。

2)對數據的修改

      UPDATE input_base SET num = 5  WHERE sex="女";

說明:將性別是女的數據中num(文章數量)的值更新為5。

3)對數據類型的修改

      ALTER TABLE input_base MODIFY  COLUMN degree VARCHAR(100)
      ALTER TABLE input_base CHANGE degree degree VARCHAR(100);

4)對字段名的修改

      ALTER TABLE input_base CHANGE degrees degree VARCHAR(100);

說明:將degree的數據類型由VARCHAR(50)修改為VARCHAR(100)。而MODIFY與CHANGE的差異性主要體現在寫法的簡潔性與應用場景上。

4.查

對于查,比較常見的操作主要細分為對表結構、全表數據,特定列數據的查詢,具體的使用說明如下。

(1)查詢表結構:DESC input_base,如圖2-8所示。

圖2-8 查詢表結構

(2)全表查詢(取前10條數據)。

      SELECT * FROM input_base LIMIT 10;

(3)特定列查詢。

      SELECT id, mid, sex  FROM input_base LIMIT 10;

(4)條件查詢。

      SELECT id, mid, sex FROM input_base  WHERE sex="女" LIMIT 10;
主站蜘蛛池模板: 特克斯县| 钟祥市| 玛纳斯县| 晴隆县| 西藏| 兴山县| 镇江市| 剑阁县| 宽城| 诸暨市| 珠海市| 彰化市| 吴江市| 驻马店市| 聂荣县| 蓝田县| 安平县| 社会| 庐江县| 顺平县| 雷波县| 竹北市| 远安县| 恭城| 水富县| 丰宁| 射阳县| 潍坊市| 拉孜县| 灵台县| 封丘县| 开阳县| 玉龙| 资溪县| 井陉县| 广平县| 台南市| 新闻| 乐安县| 北辰区| 永宁县|