MySQL學習

来源:https://www.cnblogs.com/apollospotatolikett/archive/2018/04/26/8955385.html
-Advertisement-
Play Games

MySQL學習 "— Java攻城獅學習路線 —" 入門: "1. 簡介" "2. 安裝" "3. 資料庫連接" "4. 資料庫操作" "5. 註釋" "6. 數據類型" "7. 數據表操作" "8. 數據操作" "9. 常用函數" "10. 導入導出數據" "11. 圖形化工具" "12. SQL ...


MySQL學習

— Java攻城獅學習路線 —

入門:

進階:


1. 簡介

MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體。

1.1 什麼是據庫?

資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。每個資料庫都有一個或多個不同的API用於創建,訪問,管理,搜索和複製所保存的數據。基於讀寫速度考慮,現在使用關係型資料庫管理系統(RDBMS)來存儲和管理大數據量。所謂的關係型資料庫,是建立在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的數據。其特點為:

  • 數據以表格的形式出現
  • 每行為各種記錄
  • 每列為記錄所對應的數據項
  • 許多的行和列組成一張表單
  • 若幹的表單組成資料庫

1.2 RDBMS 術語

  • 資料庫: 資料庫是一些關聯表的集合。
  • 數據表: 表是數據的矩陣。在一個資料庫中的表看起來像一個簡單的電子錶格。
  • : 一列(數據元素) 包含了相同的數據, 例如郵政編碼的數據。
  • :一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。
  • 冗餘:存儲兩倍數據,冗餘降低了性能,但提高了數據的安全性。
  • 主鍵:主鍵是唯一的。一個數據表中只能包含一個主鍵。你可以使用主鍵來查詢數據。
  • 外鍵:外鍵用於關聯兩個表。
  • 複合鍵:複合鍵(組合鍵)將多個列作為一個索引鍵,一般用於複合索引。
  • 索引:使用索引可快速訪問資料庫表中的特定信息。索引是對資料庫表中一列或多列的值進行排序的一種結構。類似於書籍的目錄。
  • 參照完整性: 參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證數據的一致性。

2. 安裝

MySQL下載地址:https://www.mysql.com/downloads/
相關安裝教程較為簡單,可自行查詢。

3. 資料庫連接

3.1 使用命令連接

Linux和Windows連接方式一樣,在命令行輸入:

[root@host]# mysql -uroot -p
Enter password:******

登錄後成功後輸出:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is XXXXXX to server version: 5.X.X

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

基本操作:

  • 查看幫助:
    • hlep;
    • \h
    • ?加上相關關鍵字
  • 取消當前命令執行:\c
  • 命令行結束符:
    • ;
    • \g
  • 退出系統:
    • exit
    • quit
    • \q

3.2 JDBC連接

利用Java API實現資料庫連接,詳情見JDBC相關資料。

4. 資料庫操作

4.1 創建資料庫

使用create關鍵詞創建資料庫,database和schema等效。

CREATE DATABASE dbname;
CREATE SCHEMA dbname;

指定編碼方式創建資料庫。

CREATE DATABASE [IF NOT EXISTS] dbname [DEFAULT] CHARACTER SET [=] utf-8;

4.2 查看資料庫

使用show關鍵字查看當前伺服器下全部資料庫。

SHOW DATABASE;
SHOW SCHEMA;

4.3 查看資料庫詳細信息

SHOW CREATE DATABASE dbname;

4.4 修改資料庫編碼方式

ALTER DATABASE dbname [DEFAULT] CHARACTER SET [=] utf-8;

註:[]表示可以省略

4.5 打開資料庫

USE dbname;

4.6 得到當前打開資料庫

SELECT DATABASE();
SELECT SCHEMA();

4.7 刪除資料庫

DROP DATABASE [IF EXISTS] dbname;

5. 註釋

兩種註釋方式。

# 這是一段註釋1
-- 這是一段註釋2

6. 數據類型

6.1 數值類型

類型 大小 範圍 用途
TINYINT 1 位元組 (-128,127) 小整數值
SMALLINT 2 位元組 (-32 768,32 767) 大整數值
MEDIUMINT 3 位元組 (-8 388 608,8 388 607) 大整數值
INT 4 位元組 (-2 147 483 648,2 147 483 647) 大整數值
BIGINT 8 位元組 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) 極大整數值
FLOAT 4 位元組 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 單精度浮點數值
DOUBLE 8 位元組 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 雙精度浮點數值
DECIMAL M,D決定 依賴於M和D的值 小數值

6.2 字元串類型

類型 大小 用途
CHAR 0-255位元組 定長字元串
VARCHAR 0-65535 位元組 變長字元串
TINYBLOB 0-255位元組 不超過 255 個字元的二進位字元串
TINYTEXT 0-255位元組 短文本字元串
BLOB 0-65 535位元組 二進位形式的長文本數據
TEXT 0-65 535位元組 長文本數據
MEDIUMBLOB 0-16 777 215位元組 二進位形式的中等長度文本數據
MEDIUMTEXT 0-16 777 215位元組 中等長度文本數據
LONGBLOB 0-4 294 967 295位元組 二進位形式的極大文本數據
LONGTEXT 0-4 294 967 295位元組 極大文本數據

6.3 日期和時間類型

類型 大小 格式 用途
DATE 3 位元組 YYYY-MM-DD 日期值
TIME 3 位元組 HH:MM:SS 時間值或持續時間
YEAR 1 位元組 YYYY 年份值
DATETIME 8 位元組 YYYY-MM-DD HH:MM:SS 混合日期和時間值
TIMESTAMP 4 位元組 YYYYMMDD HHMMSS 混合日期和時間值,時間戳

7. 數據表操作

數據表由行和列組成,每個數據表中至少有1列,行可以0,1或多行,表名必須唯一,且含義明確。

7.1 創建表

CREATE TABLE [IF NOT EXISTS] tblname(
    欄位名稱 欄位類型 [完整性約束條件],
    欄位名稱 欄位類型 [完整性約束條件],
    欄位名稱 欄位類型 [完整性約束條件],
    ...
)ENGINE=存儲引擎 CHARSET=編碼方式;

MySQL中在表創建時指定數據項的約束條件:

約束條件 作用
UNSIGNED 無符號
ZEROFILL 零填充
NOT NULL 非空
DEFAULT 預設值
PRIMARY KEY 主鍵,標識記錄唯一性,值不重覆且不為空
UNIQUE KEY 唯一性
AUTO_INCREMENT 自動增長,數值列,配合索引
FOREIGN KEY 外鍵約束
# 實例
CREATE TABLE IF NOT EXISTS `tbl`(
   `id` INT UNSIGNED AUTO_INCREMENT,
   `title` VARCHAR(100) NOT NULL,
   `author` VARCHAR(40) NOT NULL,
   `date` DATE,
   PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

7.2 查看表

SHOW [FULL] TABLES [[FROM/IN] dbname] [LIKE 'pattern' / WHERE expr]
#實例
SHOW TABLES;

7.2.1 查看指定數據表的詳細信息:

SHOW CREATE TABLE tlbname;

7.2.2 查看表結構:

DESC tblname;
DESCRIBE tblname;
SHOW COLUMNS FROM tblname;

7.4 刪除表

DROP TABLE [IF EXISTS] tblname;

7.5 表結構操作

7.5.1 添加欄位

ALTER TABLE tblname
ADD 欄位名稱 欄位屬性 [完整性約束條件]
[FIRST|AFTER 欄位名稱];

7.5.2 刪除欄位

ALTER TABLE tblname
DROP 欄位名稱;

7.5.3 添加預設值

ALTER TABLE tblname
ALTER 欄位名稱 SET DEFAULT 預設值;

7.5.4 刪除預設值

ALTER TABLE tblname
ALTER 欄位名稱 DROP DEFAULT;

7.5.5 修改欄位類型,屬性

ALTER TABLE tblname
MODIFY 欄位名稱 欄位類型 [欄位屬性] [FIRST|AFTER 欄位名稱];

7.5.6 修改欄位名稱、類型、屬性

ALTER TABLE tblname
CHANGE 原欄位名稱 新欄位名稱 欄位類型 欄位屬性
[FIRST|AFTER 欄位名稱];

7.5.7 添加主鍵

ALTER TABLE tblname
ADD PRIMARY KEY(欄位名稱);

7.5.8 刪除主鍵

ALTER TABLE tblname
DROP PRIMARY KEY;

7.5.9 添加唯一索引

# 1
ALTER TABLE tblname
ADD UNIQUE KEY indexname(欄位名稱);
# 2
ALTER TABLE tblname
ADD UNIQUE INDEX indexname(欄位名稱);

7.5.10 刪除唯一索引

ALTER TABLE tblname
DROP indexname;

7.5.11 修改數據表名稱

# 1
ALTER TABLE tblname
RENAME [TO|AS] newtblname;
# 2
RENAME TABLE tblname TO newtblname;

8. 數據操作

8.1 添加記錄

INSERT [INTO] tblname ( field1, field2,...fieldN )
VALUES ( value1, value2,...valueN );

8.1.1 不指定欄位名稱

INSERT tblname VALUES ( value1, value2,...valueN );

8.1.2 列出指定欄位

INSERT tblname ( field1, field2,...fieldN ) 
VALUES ( value1, value2,...valueN );

8.1.3 一次添加多條記錄

# 1
INSERT tblname ( field1, field2,...fieldN ) VALUES 
( value1, value2,...valueN ),
( value1, value2,...valueN ),
...
( value1, value2,...valueN );
# 2 
INSERT tblname SET field1 = value1, field2 = value2,...;
# 3
INSERT tblname [(field1, field2,...fieldN)] 
SELECT field1, field2,...fieldN
FROM tblname [WHERE 條件];

8.2 修改記錄

# 如果不添加條件,整個表中的記錄都會更新
UPDATE tblname SET field1 = value1, field2 = value2,... 
[WHERE 條件];

8.3 刪除記錄

# 如果不加入條件,所有記錄都會刪除,增長值不會改變
DELETE FROM tblname [WHERE 條件];
# 設置增長值為1
ALTER TABLE tblname AUTO_INCREMENT = 1;
# 徹底清空數據表
TRUNCATE [TABLE] tblname;

8.4 查詢記錄

SELECT 條件1,條件2... FROM tblname
[WHERE 條件]
[GROUP BY colname或position HAVING 二次篩選]
[ORDER BY colname,postion或expr [ASC|DESC]]
[LIMIT 限制結果集顯示條數];

8.4.1 查詢所有記錄

SELECT * FROM tblname;
SELECT * FROM dbname.tblname;

8.4.2 指定欄位查詢

SELECT 欄位名稱,... FROM tblname;

8.4.3 給欄位起別名

SELECT 欄位名稱,... [AS] 別名名稱,... FROM dbname.tblname;

8.4.4 給表起別名

SELECT 欄位名稱,... FROM tblname [AS] 別名;

8.4.5 WHERE條件篩選記錄

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND|OR] condition2.....
操作 符號
比較運算符 >, >=, <, ⇐, !=, <> ,<=>
指定範圍 [NOT] BETWEEN...AND...
指定集合 [NOT] IN (value,...)
邏輯運算符 AND, OR
匹配字元 [NOT] LIKE; % (任意長度字元); _ (任意一個字元)

8.4.6 GROUP BY分組

把值放到一個組中,結果只會顯示組中一條記錄

  • 配合GROUP_CONCAT()查看組中某個欄位的詳細信息
SELECT GROUP_CONCAT(username),age,sex,addr
FROM tblname
GROUP BY sex;
  • 配合聚合函數使用 COUNT()統計總數; SUM()求和; MAX()最大值; MIN()最小值; AVG()平均值
    註:COUNT(欄位名稱),不統計值為NULL記錄; COUNT(*)統計所有
SELECT sex, username, COUNT(*) FROM tblname
GROUP BY sex;
  • 配合WITH ROLLUP使用,在記錄末尾添加一條,為所有記錄總和
SELECT sex, username FROM tblname
GROUP BY sex
WITH ROLLUP;
  • HAVING字句對分組結果進行二次篩選
SELECT sex, username FROM tblname
GROUP BY sex
HAVING sex = '男';

8.4.7 ORDER BY排序

# 預設排序為升序 ASC,可指定降序 DESC
# 1.按照多個欄位排序
SELECT id, username, age
FROM tblname
ORDER BY age ASC, id ASC;
# 2.隨機排序
SELECT id, username, age
FROM tblname
ORDER BY RAND();

8.4.8 LIMIT 限制結果集展示條數

# 1.顯示前count條記錄
SELECT * FROM tblname
LIMIT count;
# 2. 從offset頁開始,顯示count條記錄
# offset從0開始編號
SELECT * FROM tblname
LIMIT offset, count;

8.5 多表查詢

8.5.1 笛卡爾積形式

# 列出所有可能連接
SELECT * FROM tblname1 CROSS JOIN tblname2;

8.5.2 內連接形式

# 查詢兩個表中符合連接條件的記錄
SELECT 欄位名稱,... FROM tblname1 
INNER JOIN tblname2
ON 連接條件;
# 例
SELECT e.id, e.username, e.age, d.depName 
FROM emp AS e 
INNER JOIN dep AS d
ON d.depID = d.id;

8.5.3 外連接形式

  • 左外連接
# 先顯示左表中的全部記錄,再去右表中查詢複合條件記錄,不符合以NULL代替
SELECT 欄位名稱,... FROM tblname1 
LEFT OUTER JOIN tblname2
ON 連接條件;
  • 右外連接
# 先顯示右表中的全部記錄,再去左表中查詢複合條件記錄,不符合以NULL代替
SELECT 欄位名稱,... FROM tblname1 
RIGHT OUTER JOIN tblname2
ON 連接條件;

8.6 外鍵約束

只有InnoDB支持外鍵,詳情查看存儲引擎相關資料。

8.6.1 創建外鍵

  • 建表時指定
# 先創建主表,子表的外鍵欄位類型和主表要相似
# 如果外鍵欄位沒有創建索引,會自動創建
# 子表外鍵關聯必須是父表的主鍵
[CONSTRAINT 外鍵名稱] FOREIGN KEY (欄位名稱) 
REFERENCES 主表 (欄位名稱);
  • 動態添加刪除外鍵
# 添加:要保證記錄合法
ALTER TABLE tblname 
ADD FOREIGN KEY (外鍵欄位)
REFERENCES 主表 (欄位名稱);
# 刪除
ALTER TABLE tblname 
DROP FOREIGN KEY (外鍵欄位);

8.6.2 外鍵約束

約束條件 作用
CASCADE 從父表刪除或更新,子表相同操作
SET NULL 從父表刪除或更新,設置子表外鍵列為NULL
NO ACTION/RESTRICT 拒絕對父表做更新或刪除
# 使用方法,設置時指定
# 刪除約束
ALTER TABLE tblname 
ADD FOREIGN KEY (外鍵欄位)
ON DELETE CASCADE;
# 更新約束
ALTER TABLE tblname 
ADD FOREIGN KEY (外鍵欄位)
ON UPDATE CASCADE;

8.7 特殊形式查詢

8.7.1 子查詢

SELECT 欄位名稱 FROM tblname
WHERE colname = (SELECT colname FROM tblname);
  • 由IN引發的子查詢
# 也可以使用NOT IN
SELECT * FROM emp
WHERE depId IN (SELECT id FROM dep);
  • 由比較運算符引出子查詢
SELECT id, username, score FROM stud
WHERE score >= (SELECT score FROM level WHERE id=1);
  • 由EXISTS引發的子查詢
SELECT * FROM emp WHERE EXISTS (
SELECT depName FROM dep WHERE id = 10);
  • 帶有ANY,SOME,ALL關鍵字的子查詢
運算符 ANY SOME ALL
">",">=" 最小值 最小值 最大值
"<", "<=" 最大值 最大值 最小值
"=" 任意值 任意值
"<>", "!=" 任意值
SELECT * FROM stu
WHERE score >= ANY(
SELECT score FROM level);
  • 其他方式
# INSERT ... SELECT
# CREATE ... SELECT
CREATE TABLE user(
    id INT UNSIGNED AUTO_INCREMENT KEY,
    username VARCHAR(20)
) SELECT id ,username FROM emp;
# 去掉欄位重覆值 DISTINCT
SELECT DISTINCT (username) FROM emp;

8.7.2 聯合查詢

# UNION 去掉重覆值
SELECT 欄位名稱,... FROM tblname1
UNION
SELECT 欄位名稱,... FROM tblname2
# UNION ALL 簡單合併
SELECT 欄位名稱,... FROM tblname1
UNION ALL
SELECT 欄位名稱,... FROM tblname2

8.7.3 自身連接查詢

可實現無極限分類。

9. 常用函數

9.1 數學函數

函數 作用 函數 作用
CEIL() 進一取整 ABS() 絕對值
FLOOR() 舍一取整 POWER() a^b
ROUND() 四捨五入 PI() 圓周率
TRUNCATE() 截取 RAND() 隨機數
MOD() 取餘 SIGN() 符號函數
EXP(a) e^a

9.2 字元串函數

函數 作用 函數 作用
CHAR_LENGTH() 得到字元串字元數 LENGTH() 得到字元串長度
CONCAT(str1,str2) 合併字元串 CONCAT_WS(separator, str1, str2) 已註定分隔符拼接字元串
UPPER()/UCASE() 轉大寫 LOWER()/LCASE() 轉小寫
REVERSE() 字元串反轉 LEFT(str,n) 返回前幾個字元
RIGHT() 返回後幾個字元 LPAD()/RPAD(str1,n,str2) 用字元串左/右填充到指定長度
TRIM()/LTRIM()/RTRIM() 去掉全部/左/右空格 REPEAT(str,n) 重覆指定次數
REPLACE(str,str1,str2) 替換字元串 SUBSTRING(str,n1,n2) 截取子串
STRCMP(str1,str2) 比較字元串

9.3 日期時間函數

函數 作用 函數 作用
CURDATE()/CURRENT_DATE() 返回當前日期 CURTIME()/CURRENT_TIME() 當前時間
NOW()/CURRENT_TIMESTAMP()/SYSDATE() 返回日期和時間 MONTH() 返回日期中月份
DAYNAME() 返回星期幾 DAYOFWEEK() 一周內第幾天
WEEK() 一年第幾個星期 YEAR() 返回年份
HOUR() 小時 MINUTE() 分鐘
SECOND() 秒數 DATEDIFF() 計算日期相差天數

9.4 其他函數

函數 作用 函數 作用
VERSION() 系統版本 CONNECTION_ID() 連接數
DATABASE()/SCHEMA() 打開資料庫 USER()/CURRENT_USER() 當前用戶
SYSTEM_USER()/SESSION_USER() 當前用戶 LAST_INSERT_ID() 上一個自增長id
MD5() 加密演算法 PASSWORD() 預設用戶加密演算法

10. 導入導出數據

10.1 導出數據

10.1.1 SELECT ... INTO OUTFILE

SELECT * FROM runoob_tbl 
INTO OUTFILE '/tmp/tables.txt';
# 生成一個文件,各值用逗號隔開
SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

10.1.2 mysqldump導出

mysqldump是mysql用於轉存儲資料庫的實用程式。它主要產生一個SQL腳本,其中包含從頭重新創建資料庫所必需的命令CREATE TABLE INSERT等。

# 1.命令欄導出
$ mysqldump -u root -p --no-create-info \
            --tab=/tmp DB tbl
password ******
# 2.導出表到指定文件
$ mysqldump -u root -p DB tbl > dump.txt
password ******
# 3.導出整個資料庫數據
$ mysqldump -u root -p DB > database_dump.txt
password ******
# 4.備份所有資料庫
$ mysqldump -u root -p --all-databases > database_dump.txt
password ******

10.2 導入數據

10.2.1 LOAD DATA

# 1.導入dump.txt 
LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
# 2.明確指出列的分隔符和尾行標記
LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
FIELDS TERMINATED BY ':'
LINES TERMINATED BY '\r\n';
# 3.指定列的順序
LOAD DATA LOCAL INFILE 'dump.txt' 
INTO TABLE mytbl (b, c, a);

10.2.2 mysqldump導入

# 1.導入dump.txt 
$ mysqlimport -u root -p --local database_name dump.txt
password *****
# 2.指定選項來設置指定格式
$ mysqlimport -u root -p --local --fields-terminated-by=":" \
   --lines-terminated-by="\r\n"  database_name dump.txt
password *****
# 3.使用 --columns 選項來設置列的順序
$ mysqlimport -u root -p --local --columns=b,c,a \
    database_name dump.txt
password *****

11. 圖形化工具

MySQL Workbench 下載: https://dev.mysql.com/downloads/workbench/

12. 快速參考

SQL 語句 語法
AND / OR SELECT column_name(s) FROM table_name WHERE condition AND/OR condition
ALTER TABLE ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name
AS (alias) SELECT column_name AS column_alias FROM table_name
SELECT column_name FROM table_name AS table_alias
BETWEEN SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
CREATE DATABASE CREATE DATABASE database_name
CREATE TABLE CREATE TABLE table_name(
column_name1 data_type,
column_name2 data_type,
column_name2 data_type,
...)
CREATE INDEX CREATE INDEX index_name ON table_name (column_name)
CREATE UNIQUE INDEX index_name ON table_name (column_name)
CREATE VIEW CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
DELETE DELETE FROM table_name WHERE some_column=some_value
DELETE FROM table_name
DELETE * FROM table_name
DROP DATABASE DROP DATABASE database_name
DROP INDEX DROP INDEX table_name.index_name (SQL Server)
DROP INDEX index_name ON table_name (MS Access)
DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL)
DROP TABLE DROP TABLE table_name
GROUP BY SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
IN SELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTO INSERT INTO table_nameVALUES (value1, value2, value3,....)
INSERT INTO table_name(column1, column2, column3,...)VALUES (value1, value2, value3,....)
INNER JOIN SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LEFT JOIN SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
RIGHT JOIN SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
FULL JOIN SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LIKE SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
ORDER BY SELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC/DESC]
SELECT SELECT column_name(s) FROM table_name
SELECT * SELECT * FROM table_name
SELECT DISTINCT SELECT DISTINCT column_name(s) FROM table_name
SELECT INTO SELECT * INTO new_table_name [IN externaldatabase] FROM old_table_name
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_table_name
SELECT TOP SELECT TOP number/percent column_name(s) FROM table_name
TRUNCATE TABLE TRUNCATE TABLE table_name
UNION SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2
UNION ALL SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
UPDATE UPDATE table_name
SET column1=value, column2=value,...
WHERE some_column=some_value
WHERE SELECT column_name(s) FROM table_name WHERE column_name operator value

更新中...


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這是我在Linux系統下寫的第一篇博客,花了一周的時間從Windows系統轉到Linux並且可以完成日常操作,能在Linux系統下完成開發,運用各種開發工具,寫各種語言小程式和JavaEE。 經過這一周後,我的感覺就是,Linux太好玩了!!! 感受一下我的桌面: Linux和Windows最大的區 ...
  • 前言:進程之間交換信息的唯一方法是經由f o r k或e x e c傳送打開文件,或通過文件系統。本章將說明進程之間相互通信的其他技術—I P C(InterProcess Communication)。今天將介紹半雙工的管道。 一、匿名管道 1、匿名管道介紹: 管道有兩種限制; (1) 它們是半雙 ...
  • Linux 安裝JDK 配置完環境變數後無法使用 java -version 無法打開 通過下麵語句 將32位文件與當前系統64位相容 (有待補充32位查法)sudo yum install glibc.i686 JDK的安裝步驟 rpm -qa | grep -i java 查看安裝過的java軟 ...
  • 安裝完成mysql後查看mysql版本時 mysql --help |grep Distrib 原因:這是由於系統預設會查找/usr/bin下的命令,如果這個命令不在這個目錄下,當然會找不到命令,我們需要做的就是映射一個鏈接到/usr/bin目錄下,相當於建立一個鏈接文件。 首先得知道mysql命令 ...
  • 1.在安裝apache的時候已經檢查了本地沒有安裝centos自帶的mysql,有的話一定要卸載掉,否則可能占用埠 2.準備mysql安裝包(註意編譯的時候,mysql5.5版本以上的編譯和5.5一下的編譯是不同的,5.5要用cake編譯,但是cake系統6.5沒有,需自己下載) 3.準備安裝包x ...
  • vim修改redis.conf配置文件(我的已經複製到虛擬機的/usr/local/redis/bin目錄下)為daemonize yes, 以後端模式啟動 ./redis-server redis.confbin目錄下運行 ./redis-cli連接客戶端 輸入ping回應pang成功 Strin ...
  • Centos6.5 64位下安裝apache php mysql(安裝包版本一定要正確,網上很多都不准,不要用32位的安裝包裝再64位上,後期有很多問題,下載安裝後一定要檢出版本,有的網友操蛋,把32的名稱搞成64位的仍給你們,眼睛是看不出來的,最好官網下載) 註意centos6.5系統自帶php ...
  • 老婆公司有個這樣的需求: 查詢出王者榮耀的用戶迴流信息,當用戶連續兩天登陸,則判定為2日迴流,如果間隔一天登陸,則判定為3日迴流,如果間隔5天登陸,則判定為7日迴流。用戶數據間隔時間短為14天(固定)。 準備數據 database語法和mysql一致。 創建表: 插入數據: 最開始我想到的是用 ,s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...