1. 程式人生 > >2.偏頭痛楊的mysql教學系列之SQL篇

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多為運維人員去操作, 因此不再展開。