国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片

MySQL 備忘清單

本備忘單旨在快速理解 MySQL 所涉及的主要概念,提供了最常用的SQL語句,供您參考。

入門

介紹

MySQL 為關(guān)系型數(shù)據(jù)庫(Relational Database Management System),一個關(guān)系型數(shù)據(jù)庫由一個或數(shù)個表格組成,如下所示的一個表格


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

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

登錄MySQL

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

常用的

數(shù)據(jù)庫 Database

:-:-
CREATE DATABASE db ;創(chuàng)建數(shù)據(jù)庫
SHOW DATABASES;列出數(shù)據(jù)庫
USE db;切換到數(shù)據(jù)庫
CONNECT db ;切換到數(shù)據(jù)庫
DROP DATABASE db;刪除數(shù)據(jù)庫

表 Table

:-:-
SHOW TABLES;列出當(dāng)前數(shù)據(jù)庫的表
SHOW FIELDS FROM t;表的列表字段
DESC t;顯示表格結(jié)構(gòu)
SHOW CREATE TABLEt;顯示創(chuàng)建表sql
TRUNCATE TABLEt;刪除表中的所有數(shù)據(jù)
DROP TABLEt;刪除表格

Proccess

:-:-
show processlist;列出進(jìn)程
kill pid;殺死進(jìn)程

查看 MySQL 信息

# 顯示當(dāng)前mysql的version的各種信息
mysql> status;
# 顯示當(dāng)前mysql的version信息
mysql> select version(); 
# 查看 MySQL 端口號
mysql> show global variables like 'port';

退出MySQL會話

mysql> exit 

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

備份

創(chuàng)建備份

mysqldump -u user -p db_name > db.sql

導(dǎo)出不帶架構(gòu)的數(shù)據(jù)庫

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

恢復(fù)備份

mysql -u user -p db_name < db.sql

MySQL 示例

管理表格

創(chuàng)建一個包含三列的新表

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

從數(shù)據(jù)庫中刪除表

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重命名為t2

ALTER TABLE t1 RENAME TO t2;

將列c1重命名為c2

ALTER TABLE t1 RENAME c1 TO c2 ;

將列c1的數(shù)據(jù)類型改為datatype

ALTER TABLE t1 MODIFY c1 datatype;

刪除表中的所有數(shù)據(jù)

TRUNCATE TABLE t;

從表中查詢數(shù)據(jù)

從表中查詢列c1、c2中的數(shù)據(jù)

SELECT c1, c2 FROM t

查詢表中的所有行和列

SELECT * FROM t

查詢數(shù)據(jù)并使用條件篩選行

SELECT c1, c2 FROM t
WHERE condition

查詢表中的不同行

SELECT DISTINCT c1 FROM t
WHERE condition

按升序或降序?qū)Y(jié)果集排序

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

跳過行的偏移并返回下n行

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

使用聚合函數(shù)對行進(jìn)行分組

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

使用HAVING子句篩選組

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

從多個表查詢

內(nèi)部連接 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

執(zhí)行完全外部連接

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

生成表中行的笛卡爾積

SELECT c1, c2 
FROM t1
CROSS JOIN t2

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

SELECT c1, c2 
FROM t1, t2

使用INNER Join子句將t1連接到自身

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

使用SQL運(yùn)算符,合并兩個查詢中的行

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

返回兩個查詢的交集

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

從另一個結(jié)果集中減去一個結(jié)果集

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

檢查表中的值是否為NULL

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

使用 SQL 約束

將c1和c2設(shè)置為主鍵

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

將c2列設(shè)置為外鍵

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

使c1和c2中的值唯一

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

確保c1>0和c1>=c2中的值

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

c2列中的設(shè)置值不為NULL

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

修改數(shù)據(jù)

在表格中插入一行

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;

更新列c1中所有行的新值

UPDATE t
SET c1 = new_value;

更新列c1、c2中與條件匹配的值

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

刪除表中的所有數(shù)據(jù)

DELETE FROM t;

刪除表中的行子集

DELETE FROM t
WHERE condition;

管理視圖

創(chuàng)建由c1和c2組成的新視圖

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

使用選中選項(xiàng)創(chuàng)建新視圖

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

創(chuàng)建遞歸視圖

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

創(chuàng)建臨時視圖

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

刪除視圖

DROP VIEW view_name;

管理觸發(fā)器

創(chuàng)建或修改觸發(fā)器

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

WHEN

:-:-
BEFORE在事件發(fā)生前調(diào)用
AFTER事件發(fā)生后調(diào)用

EVENT

:-:-
INSERT為INSERT調(diào)用
UPDATE調(diào)用UPDATE
DELETE調(diào)用DELETE

TRIGGER_TYPE

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

管理索引

在t表的c1和c2上創(chuàng)建索引

CREATE INDEX idx_name 
ON t(c1,c2);

在t表的c3、c4上創(chuàng)建唯一索引

CREATE UNIQUE INDEX idx_name
ON t(c3,c4)

刪除索引

DROP INDEX idx_name;

MySQL 數(shù)據(jù)類型

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

另見