亚洲成A人片在线观看网站_成年网站免费视频A在线双飞_日日日日做夜夜夜夜无码_久久夜色撩人精品国产小说

MySQL 備忘清單

本備忘單(dan)旨(zhi)在快速理解 所涉及(ji)的主要(yao)概念,提(ti)供(gong)了最常(chang)用(yong)的SQL語句(ju),供(gong)您參考(kao)。

入門

介紹

MySQL 為關(guan)(guan)系(xi)(xi)型數據(ju)庫(ku)(ku)(Relational Database Management System),一個(ge)關(guan)(guan)系(xi)(xi)型數據(ju)庫(ku)(ku)由一個(ge)或數個(ge)表(biao)格組成(cheng),如下所(suo)示的一個(ge)表(biao)格


    name ▼ 鍵            ▼ 列(col)
┌┈┈┈┈┬┈┈┈┈┈┈┈┈┬┈┈┈┈┈┈┬┈┈┈┈┈┈┈┐
id ┆ name   ┆ uid  ┆ level ┆  ? 表頭header
├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
1 ┆ mysql  ┆ 03├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
2 ┆ redis  ┆ 121     ┆  ? 行 row
└┈┈┈┈┴┈┈┈┈┈┈┈┈┴┈┈┈┈┈┈┴┈┈┈┈┈┈┈┘
    redis ▲ 值

  • 表頭(header) 每一列的名稱
  • 列(col) 具有相同數據類型的數據的集合
  • 行(row) 每一行用來描述某個人/物的具體信息
  • 值(value) 行的具體信息,每個值與該列數據類型相同
  • 鍵(key) 用來識別某個特定的人/物的方法,有唯一性

登錄MySQL

# 默(mo)認用戶名<root>,-p 是密碼(ma),
# ??參(can)數后面不(bu)需要空格
mysql -h 127.0.0.1 -u <用戶名> -p<密碼>
mysql -D 數據庫名 -h 主機名 -u 用戶名 -p
mysql -h <host> -P <端口號> -u <user> -p [db_name]
mysql -h <host> -u <user> -p [db_name]

常用的

數據庫 Database

:-:-
CREATE DATABASE db ;創建數據庫
SHOW DATABASES;列出數據庫
USE db;切換到數據庫
CONNECT db ;切換到數據庫
DROP DATABASE db;刪除數據庫

表 Table

:-:-
SHOW TABLES;列出當前數據庫的表
SHOW FIELDS FROM t;表的列表字段
DESC t;顯示表格結構
SHOW CREATE TABLEt;顯示創建表sql
TRUNCATE TABLEt;刪除表中的所有數據
DROP TABLEt;刪除表格

Proccess

:-:-
show processlist;列出進程
kill pid;殺死進程

查看 MySQL 信息

# 顯示(shi)當前(qian)mysql的version的各種(zhong)信息
mysql> status;
# 顯示當(dang)前(qian)mysql的version信息
mysql> select version(); 
# 查看(kan) MySQL 端口號
mysql> show global variables like 'port';

退出MySQL會話

mysql> exit 

退出 quit;\q; 一樣的效果

備份

創建備份

mysqldump -u user -p db_name > db.sql

導出不帶架(jia)構的數據庫(ku)

mysqldump -u user -p db_name --no-data=true --add-drop-table=false > db.sql

恢復備份

mysql -u user -p db_name < db.sql

MySQL 示例

管理表格

創建一個包含三列的新表

CREATE TABLE t (
    id    INT,
    name  VARCHAR DEFAULT NOT NULL,
    price INT DEFAULT 0
    PRIMARY KEY(id)
);

從數據庫中刪除表

DROP TABLE t ;

向表中添加新列

ALTER TABLE t ADD column;

從表中刪除列c

ALTER TABLE t DROP COLUMN c ;

添加約束

ALTER TABLE t ADD constraint;

刪除約束

ALTER TABLE t DROP constraint;

將表從t1重(zhong)命名為t2

ALTER TABLE t1 RENAME TO t2;

將列c1重命名為c2

ALTER TABLE t1 RENAME c1 TO c2 ;

將列c1的數(shu)據類型改(gai)為(wei)datatype

ALTER TABLE t1 MODIFY c1 datatype;

刪除表中的所有數據

TRUNCATE TABLE t;

從表中查詢數據

從(cong)表中查詢列(lie)c1、c2中的數據

SELECT c1, c2 FROM t

查詢表中的所有行和列

SELECT * FROM t

查(cha)詢(xun)數據并使(shi)用條件篩選行

SELECT c1, c2 FROM t
WHERE condition

查詢表中的不同行

SELECT DISTINCT c1 FROM t
WHERE condition

按升序或降序對結果(guo)集排序

SELECT c1, c2 FROM t
ORDER BY c1 ASC [DESC]

跳過行(xing)的偏移并返回下n行(xing)

SELECT c1, c2 FROM t
ORDER BY c1 
LIMIT n OFFSET offset

使用(yong)聚合函數對行進行分組

SELECT c1, aggregate(c2)
FROM t
GROUP BY c1

使用HAVING子句篩(shai)選組

SELECT c1, aggregate(c2)
FROM t
GROUP BY c1
HAVING condition

從多個表查詢

內部連接 t1 和 t2

SELECT c1, c2 
FROM t1
INNER JOIN t2 ON condition

左連接t1和t1

SELECT c1, c2 
FROM t1
LEFT JOIN t2 ON condition

右連接t1和t2

SELECT c1, c2 
FROM t1
RIGHT JOIN t2 ON condition

執行完全外部連接

SELECT c1, c2 
FROM t1
FULL OUTER JOIN t2 ON condition

生成表(biao)中行(xing)的笛卡爾積

SELECT c1, c2 
FROM t1
CROSS JOIN t2

執行交叉連接的另一(yi)種方法

SELECT c1, c2 
FROM t1, t2

使用INNER Join子句將t1連接到(dao)自身(shen)

SELECT c1, c2
FROM t1 A
INNER JOIN t1 B ON condition

使用SQL運算符,合并兩個(ge)查(cha)詢中的行(xing)

SELECT c1, c2 FROM t1
UNION [ALL]
SELECT c1, c2 FROM t2

返回兩個查詢的交集

SELECT c1, c2 FROM t1
INTERSECT
SELECT c1, c2 FROM t2

從另一(yi)個(ge)結果集中減去一(yi)個(ge)結果集

SELECT c1, c2 FROM t1
MINUS
SELECT c1, c2 FROM t2

使用模式匹配%查詢行_

SELECT c1, c2 FROM t1
WHERE c1 [NOT] LIKE pattern

查詢列表中的行

SELECT c1, c2 FROM t
WHERE c1 [NOT] IN value_list

查詢兩個值之間的行

SELECT c1, c2 FROM t
WHERE  c1 BETWEEN low AND high

檢查表中的值(zhi)是否(fou)為(wei)NULL

SELECT c1, c2 FROM t
WHERE  c1 IS [NOT] NULL

使用 SQL 約束

將c1和c2設置為主(zhu)鍵(jian)

CREATE TABLE t(
    c1 INT, c2 INT, c3 VARCHAR,
    PRIMARY KEY (c1,c2)
);

將c2列設置為外鍵

CREATE TABLE t1(
    c1 INT PRIMARY KEY,  
    c2 INT,
    FOREIGN KEY (c2) REFERENCES t2(c2)
);

使c1和c2中的(de)值唯一(yi)

CREATE TABLE t(
    c1 INT, c1 INT,
    UNIQUE(c2,c3)
);

確保c1>0和c1>=c2中(zhong)的值

CREATE TABLE t(
  c1 INT, c2 INT,
  CHECK(c1> 0 AND c1 >= c2)
);

c2列中的設(she)置(zhi)值(zhi)不為NULL

CREATE TABLE t(
     c1 INT PRIMARY KEY,
     c2 VARCHAR NOT NULL
);

修改數據

在表格中插入一行

INSERT INTO t(column_list)
VALUES(value_list);

在表格中插入多行

INSERT INTO t(column_list)
VALUES (value_list), 
       (value_list),;

將行從t2插入t1

INSERT INTO t1(column_list)
SELECT column_list
FROM t2;

更(geng)新列c1中所有行的新值

UPDATE t
SET c1 = new_value;

更新(xin)列c1、c2中與(yu)條件匹配的(de)值

UPDATE t
SET c1 = new_value, 
        c2 = new_value
WHERE condition;

刪除表中的所有數據

DELETE FROM t;

刪除表中的行子集

DELETE FROM t
WHERE condition;

管理視圖

創建由(you)c1和c2組成的新(xin)視圖

CREATE VIEW v(c1,c2) 
AS
SELECT c1, c2
FROM t;

使(shi)用(yong)選中選項創建(jian)新視(shi)圖

CREATE VIEW v(c1,c2) 
AS
SELECT c1, c2
FROM t;
WITH [CASCADED | LOCAL] CHECK OPTION;

創建遞歸視圖

CREATE RECURSIVE VIEW v 
AS
select-statement -- anchor part
UNION [ALL]
select-statement; -- recursive part

創建臨時視圖

CREATE TEMPORARY VIEW v 
AS
SELECT c1, c2
FROM t;

刪除視圖

DROP VIEW view_name;

管理觸發器

創建或修改觸發器

CREATE OR MODIFY TRIGGER trigger_name
WHEN EVENT
ON table_name TRIGGER_TYPE
EXECUTE stored_procedure;

WHEN

:-:-
BEFORE在事件發生前調用
AFTER事件發生后調用

EVENT

:-:-
INSERT為INSERT調用
UPDATE調用UPDATE
DELETE調用DELETE

TRIGGER_TYPE

:-:-
FOR EACH ROW-
FOR EACH STATEMENT-

管理索引

在t表(biao)的c1和c2上創(chuang)建索引

CREATE INDEX idx_name 
ON t(c1,c2);

在t表的c3、c4上創建唯一索(suo)引(yin)

CREATE UNIQUE INDEX idx_name
ON t(c3,c4)

刪除索引

DROP INDEX idx_name;

MySQL 數據類型

Strings

--
CHARString (0 - 255)
VARCHARString (0 - 255)
TINYTEXTString (0 - 255)
TEXTString (0 - 65535)
BLOBString (0 - 65535)
MEDIUMTEXTString (0 - 16777215)
MEDIUMBLOBString (0 - 16777215)
LONGTEXTString (0 - 429496-7295)
LONGBLOBString (0 - 429496-7295)
ENUMOne of preset options
SETSelection of preset options

Date & time

Data TypeFormat
DATEyyyy-MM-dd
TIMEhh:mm:ss
DATETIMEyyyy-MM-dd hh:mm:ss
TIMESTAMPyyyy-MM-dd hh:mm:ss
YEARyyyy

Numeric

--
TINYINT xInteger (-128 to 127)
SMALLINT xInteger (-32768 to 32767)
MEDIUMINT xInteger (-8388608 to 8388607)
INT xInteger (-2147-483648 to 214748-3647)
BIGINT xInteger (-9223-372-036-854-775808 to 922337-203-685-477-5807)
FLOATDecimal (precise to 23 digits)
DOUBLEDecimal (24 to 53 digits)
DECIMAL"-DOU-BLE-" stored as string

另見

  • (w3school.com.cn)
  • (1keydata.com)
  • (jaywcjlove.github.io)