2.偏頭痛楊的mysql教學系列之SQL篇
前戲
SQL就是資料庫能看懂的語言,我們人類用SQL來跟資料庫進行互動。 SQL語句可謂是mysql的知識體系中的重中之重了,使用場景非常多。 無論是建庫建表,增刪改查操作,檢視一些實時狀態等都少不了SQL語句。 我們可以利用SQL語句來對資料庫進行有效的操作,來告訴資料庫我們想幹什麼。 並且SQL並不是mysql所獨有的,像oracle、sqlserver等資料庫也可以使用SQL, 但只不過各個廠商有一些實現細節不一樣而已。 查詢語句是SQL的一個重要分支,但因為篇幅過長,因此我單拎出來一篇文章講查詢語句。
什麼是SQL語句
SQL語句的全稱是Structured Query Language,結構化查詢語句, 用來操作和檢索關係資料庫的標準語言,標準的SQL語句可以操作任何關係型資料庫。
注意:SQL語句雖然是大小寫均可,但強烈建議SQL關鍵字使用大寫,其餘小寫。
一些基本SQL: show databases;檢視共多少個數據庫 drop database;資料庫名; 刪除資料庫 drop database if exists 庫名;建庫(判斷是否存在) create database;資料庫名; 建立資料庫 use 資料庫名;進入資料庫 show tables;檢視當前資料庫有多少張表 desc 表名;檢視指定表的表結構
SQL語句型別
語句名稱 | 英文 | 描述 |
---|---|---|
DQL語句 | Data Query Language | 查詢語句,主要由select完成; |
DML語句 | Data Manipulation Language | 資料操作語言,insert,update,delete; |
DDL語句 | Data Definition Language | 資料定義語言,用於操作資料庫物件,create,alter,drop,truncate。truncate相當於先刪除指定的資料表,然後再重建該資料表。效能比delete好,會重置自動增長計數器。; |
DCL語句 | Data Control Language | 資料控制語言,grant,revoke。為資料庫使用者授權以及回收授權。 |
DTL語句 | Data Transaction Language | 事務控制語句,commit,rollback,savepoint。 |
DDL語句
create/drop/alter關鍵字後面可以接不同的資料物件, 例如:create table、create index、create view。
新建表
CREATE TABLE t_user(
user_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY COMMENT '使用者ID主鍵',
user_name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '使用者名稱稱' UNIQUE KEY,
user_age INT(2) COMMENT '使用者年齡',
create_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立日期'
) COMMENT='使用者表';
#利用子查詢建表,資料一樣,結構一樣。
CREATE TABLE t_user_info AS SELECT * FROM t_user;
修改&刪除表
修改表結構包括增加列,修改列,刪除列,重新命名列,加索引,加約束等等操作。
#增加列
ALTER TABLE t_user ADD is_student TINYINT(2) NOT NULL DEFAULT 0 COMMENT '是否學生';
#修改列
ALTER TABLE t_user MODIFY is_student TINYINT(2) NOT NULL DEFAULT 1 COMMENT '是否學生嗎';
#刪除列
ALTER TABLE t_user DROP is_student;
#修改表名(mysql特有)
ALTER TABLE t_user RENAME TO t_user_info;
#修改列名(mysql特有)
ALTER TABLE t_user_info CHANGE user_age user_old int(3);
刪表
DROP TABLE t_user_info;
DML語句
DML語句主要操作資料表裡的資料,其中包括新增、修改、刪除資料。
#新增
INSERT INTO t_user (user_name,user_age) VALUES ("alex","18");
#帶子查詢的新增,可以一次新增多條資料
INSERT INTO t_user(user_name,user_age) SELECT user_name,user_age FROM t_user_info;
#同時新增多條資料
INSERT INTO t_user (user_name,user_age) VALUES ("alex1","33"),("alex2","44");
#修改
UPDATE t_user SET user_age = 20 WHERE user_name = 'alex';
UPDATE t_user SET user_age = user_age*10 WHERE user_name = 'alex';
UPDATE t_user SET user_age = 20,user_name='freak' WHERE user_name = 'alex';
UPDATE t_user SET user_age = 20;
#刪除
DELETE FROM t_user WHERE user_age = 20;
DELETE FROM t_user;
總結
今天學到了一些SQL語句的寫法,需要自己在本機安裝mysql, 對這些新學到的知識轉化成實踐,切勿只停留在認知層面, 真正自己的去用SQL建庫,建表,對資料進行增刪改操作等。 關於DTL會在講事務的時候單獨拿出來,DCL多為運維人員去操作, 因此不再展開。