- 輕松學大數據挖掘:算法、場景與數據產品
- 汪榕
- 1301字
- 2019-12-04 19:10:02
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;
- GitHub Essentials
- 公有云容器化指南:騰訊云TKE實戰與應用
- Java Data Science Cookbook
- 企業大數據系統構建實戰:技術、架構、實施與應用
- Access 2007數據庫應用上機指導與練習
- 分布式數據庫系統:大數據時代新型數據庫技術(第3版)
- iOS and OS X Network Programming Cookbook
- 跟老男孩學Linux運維:MySQL入門與提高實踐
- Starling Game Development Essentials
- 大數據治理與安全:從理論到開源實踐
- Hadoop大數據開發案例教程與項目實戰(在線實驗+在線自測)
- Hadoop集群與安全
- 大數據數學基礎(Python語言描述)
- 數據迷霧:洞察數據的價值與內涵
- Learn Selenium