MySql學習筆記

數(shù)據(jù)庫操作(DDL)

數(shù)據(jù)庫的創(chuàng)建

CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET [=] charset_name]

例如:

CREATE DATABASE IF NOT EXISTS  test_db DEFAULT CHARACTER SET utf8

查看當前服務器下的數(shù)據(jù)庫列表

SHOW { DATABASES | SCHEMAS }

查看數(shù)據(jù)庫的定義

SHOW CREATE  { DATABASE | SCHEMA } db_name

查看上一步操作的警告信息

SHOW WARNINGS

刪除數(shù)據(jù)庫

DROP  { DATABASE | SCHEMA } [IF EXISTS] db_name

打開數(shù)據(jù)庫

USE db_name

修改數(shù)據(jù)庫的編碼方式

ALTER { DATABASE | SCHEMA }  db_name [DEFAULT] CHARACTER SET [=] charset_name

數(shù)據(jù)表操作

MYSQL中的數(shù)據(jù)類型

整數(shù)類型

數(shù)據(jù)類型 存儲范圍 字節(jié)
TINYINT 有符號值-128~127;無符號值 0~255; 1
SMALLINT 有符號值-32768~32767;無符號值 0~65535; 2
MEDIUMINT 有符號值-8388608~8388607;無符號值 0~16777215; 3
INT 有符號值-2147483648~2147483647;無符號值 0~4294967295; 4
BIGINT 有符號值-9223372036854775808~9223372036854775807;無符號值 0~18446744073709551615L; 8
BOOL,BOOLEAN 等同于TINYINT(1),0為FALSE ,其余為TRUE 1

浮點類型

數(shù)據(jù)類型 存儲范圍 字節(jié)
FLOAT[(M,D)] 負數(shù)取值范圍為-3.40E+38~-1.17E-38,0,1.175E-38~3.40E38;M是數(shù)字總位數(shù),D是小數(shù)點后面的位數(shù),若M,D被省略蔗崎,根據(jù)硬件限制來保存值沛简。 4
DOUBLE[(M,D)] -1.79E+308~2.22E-308,0,2.22E-308~1.79E308 8
DECIMAL[(M,D)] 和DOUBLE一樣踱侣,內(nèi)部以字符串形式存儲數(shù)值 M+2

字符串類型

數(shù)據(jù)類型 存儲需求 備注
CHAR(M) M個字節(jié)馆衔,0<=M<=255
VARCHAR(M) L+1個字節(jié),L<=M且0<=M<=65535
TINYTEXT L+1個字節(jié)蕉扮,L<2^8
TEXT L+2個字節(jié)整胃,L<2^16
MEDIUMTEXT L+3個字節(jié),L<2^24
LONGTEXT L+4個字節(jié)喳钟,L<2^32
ENUM('Value1','Value2',......) 1或2個字節(jié)爪模,取決于枚舉值的個數(shù)(最多65535個值) 只能選擇一項,可通過數(shù)值插入荚藻,第一項為1屋灌,第二項為2...
SET('Value1','Value2',......) 1,2,3,4或8個字節(jié),取決于SET成員的數(shù)目(最多64個成員) 可選擇多項应狱,選中的不同值由","分隔共郭,且可通過數(shù)值設置(第一項為1,第二項為2,第三項為8疾呻,第四項為16......選中前三項值為11)

日期時間類型

數(shù)據(jù)類型 存儲范圍 存儲需求 備注
TIME -838:59:59 ~ 838:59:59 3
DATE 1000-1-1 ~ 9999-12-31 3
DATETIME 1000-1-1 00:00:01 UTC ~ 9999-12-31 23:59:59 8
TIMESTAMP 1970-1-1 00:00:01 UTC ~ 2038-1-19 3:14:07 4
YEAR 1901~2155 1 值可為數(shù)字或者字符串,70~99=>1970~1999,00~69=>2000~2069,數(shù)字0轉換為0000

二進制類型

JSON類型(ver5.7新增)

存儲引擎

查看MYSQL支持的存儲引擎

SHOW ENGINES

查看支持的存儲引擎信息

SHOW VARIABLES LIKE 'have%'

查看默認的存儲引擎

SHOW VARIABLES LIKE '%storage_engine%'

常用存儲引擎(注意各引擎優(yōu)缺點)

  • InnoDB
  • MyISAM
  • Memory

約束條件

一個表只能有一個主鍵(PRIMATY KEY),但是能夠有多個唯一(UNIQUE KEY)除嘹,唯一的字段的值不允許出現(xiàn)重復,但是NULL值不算做重復的值

  • PRIMARY KEY 主鍵岸蜗,PRIMARY可省略 (注意:PRIMARY KEY(a,b,c,...) 來定義一個主鍵時,由a,b,c,...所有的值才能確定一個主鍵尉咕,即一個表包括a,b,c...等字段,其中單獨的a,b,c字段相等璃岳,是可以的年缎,但不能全部相等,全部相等表明主鍵相等铃慷,不可插入单芜。)
  • AUTO_INCREMENT 自增,需要和主鍵(PRIMARY KEY)搭配使用±绻瘢可在創(chuàng)建表時自定義從某個數(shù)開始,如CREATE TABLE tbl_name(id INT key AUTO_INCREMENT,......)AUTO_INCREMENT=數(shù)值,表示內(nèi)部自增字段從此數(shù)值開始洲鸠。(也可通過ALTER TABLE tbl_name AUTO_INCREMENT=數(shù)值修改)
  • FOREIGN KEY 外鍵
  • NOT NULL 非空
  • UNIQUE KEY 唯一,KEY 可省略
  • DEFAULT 默認值 插入數(shù)據(jù)時可使用DEFAULT

數(shù)據(jù)表的創(chuàng)建

CREATE TABLE [IF NOT EXISTS] tbl_name (
     字段名稱 字段類型 [完整性約束條件] ##完整性約束條件順序為: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默認值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
     ......
)ENGINE = 引擎名稱 CHARSET = 編碼方式馋缅;

查看當前數(shù)據(jù)庫下的數(shù)據(jù)表

SHOW TABLES;

查看表結構及創(chuàng)建信息

DESC tbl_name
DESCRIBE tbl_name
SHOW COLUMNS FROM tbl_name
SHOW CREATE TABLE tbl_name

修改表結構

修改表名

ALTER TABLE tbl_name RENAME [TO|AS] new_name

或者

RENAME TABLE tbl_name TO new_name

添加字段

ALTER TABLE tbl_name ADD 字段名稱 字段類型 [完整性約束條件]  [ FIRST | (AFTER 字段名稱)] 

若需要添加多個字段扒腕,需要多個ADD操作,以“萤悴,”號分隔

刪除字段

ALTER TABLE tbl_name DROP 字段名稱

若需要刪除多個字段瘾腰,需要多個DROP操作,以“稚疹,”號分隔居灯。

注意:添加字段(ADD)與刪除字段(DROP)可以在同一個語句里面(ALTER TABLE tbl_name ADD .....,DROP .....)

修改字段

ALTER TABLE tbl_name MODIFY 字段名稱 字段類型 [完整性約束條件] [FIRST | (AFTER  字段名稱)]

修改字段名稱

ALTER TABLE tbl_name CHANGE 舊字段名稱 新字段名稱 字段類型 [完整性約束條件] [FIRST | (AFTER  字段名稱)]

添加默認值

ALTER TABLE tbl_name ALTER 字段名稱 SET DEFAULT 默認值

刪除默認值

ALTER TABLE tbl_name ALTER 字段名稱 DROP DEFAULT

添加主鍵

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (字段名稱,...) 

刪除主鍵

ALTER TABLE tbl_name DROP PRIMARY KEY

添加唯一

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [索引名稱] (字段名稱,...)

刪除唯一

ALTER TABLE tbl_name DROP  {INDEX| KEY} index_name

修改表的存儲引擎

ALTER TABLE tbl_name ENGINE=存儲引擎名稱

修改表的自增長值

ALTER TABLE tbl_name AUTO_INCREMENT= 值

刪除數(shù)據(jù)表

DROP TABLE [IF EXISTS] tbl_name[,tbl_name,...]

數(shù)據(jù)操作(DML)

插入數(shù)據(jù)

不指定具體的字段

INSERT [INTO] tbl_name VALUE | VALUES (值,......)

列出指定字段

INSERT [INTO] tbl_name (字段名稱1,......) VALUE | VALUES (值1,......)

同時插入多條記錄

INSERT [INTO] tbl_name   [(字段名稱1,......)]  VALUE | VALUES (值,......), (值,......),......

通過SET形式插入記錄

INSERT [INTO] tbl_name SET 字段名稱=值,......

將查詢結果插入到表中

INSERT [INTO] tbl_name   [(字段名稱1,......)]  SELECT 字段名稱 FROM tbl_name  [WHERE 條件]

更新數(shù)據(jù)

UPDATE tbl_name  SET 字段名稱=值,...... [WHERE 條件] [ORDER BY 字段名稱] [LIMIT 限制條件]

刪除數(shù)據(jù)

(DELETE FROM tbl_name  [WHERE 條件] [ORDER BY 字段名稱] [LIMIT 限制條件])

或者徹底清空數(shù)據(jù)表

(TRUNCATE [TABLE ] tbl_name)

查詢數(shù)據(jù)操作(DQL)

查詢記錄

SELECT select_expr[,select_expr,...]
[ 
    FROM table_reference
    [WHERE 條件]
    [GROUP BY {col_name | position } [ ASC | DESC], ... 分組]
    [HAVING 條件 對分組結果進行二次篩選]
    [ORDER BY {col_name | position } [ ASC | DESC], ... 排序]
    [LIMIT 限制顯示條數(shù)]
]

查詢表達式

每個表達式表示想要的一列祭务,必須至少有一列内狗,多個列以","號分隔怪嫌; "*" 表示所有列,tbl_name.*表示命名表的所有列柳沙。查詢表達式可以使用 [AS] alias_name 為其賦予別名岩灭。

WHERE條件

查詢條件 符號 示例
比較 =,<,>,<=,>=,!=,<>,!>,!<,<=> SELECT * FROM table_name WHHERE id = 1
指定范圍 BETWEEN AND,NOT BETWEEN AND SELECT * FROM table_name WHHERE id BETWEEN 1 AND 2
指定集合 IN,NOT IN SELECT * FROM table_name WHHERE id IN(1,3,5,7,9) 集合內(nèi)忽略大小寫
匹配字符 LIKE, NOT LIKE SELECT * FROM table_name WHHERE id LIKE '_2%'
是否為空 IS NULL,IS NOT NULL SELECT * FROM table_name WHHERE id IS NULL
多個查詢條件 AND,OR SELECT * FROM table_name WHHERE user = 'admin' AND password = 'admin'

模糊查詢

  • %:代表0個,1個或者多個任意字符
  • _ :代表1個字符

GROUP BY 查詢結果分組

默認情況下赂鲤,GROUP BY 查詢結果分組得到每組的第一個值
配合GROUP_CONCAT()得到分組詳情
配合聚合函數(shù)

  • COUNT() NULL值不算一條記錄
  • MAX()
  • MIN()
  • AVG()
  • SUM()

配合WITH ROLLUP記錄上面所有記錄的總和

5.通過HAVING子句對分組結果進行二次篩選

配合GROUP BY 實現(xiàn)噪径,比如:

SELECT Region,COUNT(*),MAX(Population),MIN(Population),SUM(Population),AVG(Population) FROM country GROUP BY Region HAVING MAX(Population) > 1000000

通過ORDER BY 進行排序

默認升序排列(ASC),可省略。降序排列(DESC),可排序多個字段通過","號連接

SELECT * FROM country ORDER BY Population ASC,SurfaceArea ASC
SELECT * FROM country ORDER BY 3 ASC
SELECT * FROM country ORDER BY RAND() #隨機記錄

LIMIT限制查詢結果顯示條數(shù)

  • LIMIT 顯示條數(shù)
  • LIMIT 偏移量数初,顯示條數(shù)
(SELECT * FROM country LIMIT 2,1)

連接查詢

什么是鏈接查詢

連接查詢是將兩個或者兩個以上的表按照某個條件連接起來找爱,從中選取需要的數(shù)據(jù)。連接查詢是同時查詢兩個或者兩個以上的表時使用的泡孩。當不同的表中存在相同意義的字段時车摄,可通過該字段連接這幾個表。

內(nèi)連接查詢

  1. JOIN | CROSS JOIN | INNER JOIN
  2. 通過ON 連接條件
  3. 顯示兩個表中符合連接條件的記錄

注意:三張表或者三張表以上查詢可以直接加入更多的JOIN ...ON ...來連接多張表仑鸥,注意找準表之間的連接條件

例如:

SELECT 
    user_info.id, user_info.name, city_info.pro_name
FROM
    user_info
        JOIN
    city_info ON user_info.pro_id = city_info.pro_id;

外連接查詢

左外連接

(LEFT [OUTER] JOIN)

顯示左表的全部記錄及右表符合連接條件的記錄

右外連接

(RIGHT [OUTER] JOIN)

顯示右表的全部記錄及左表符合連接條件的記錄

外鍵

概覽

外鍵是表的一個特殊字段吮播,被參照的表是主表,外鍵所在字段的表為子表眼俊。設置外鍵的原則需要記住意狠,就是依賴于數(shù)據(jù)庫中已存在的表的主鍵。外鍵的作用是建立該表與其父表的關聯(lián)關系疮胖。父表中對記錄做操作時环戈,子表中與之對應的信息也應有相應的改變。
外鍵的作用是保持數(shù)據(jù)庫的一致性和完整性澎灸。
可以實現(xiàn)一對一或者一對多的關系

注意

  1. 父表和子表必須使用相同的存儲引擎谷市,而且禁止使用臨時表。
  2. 數(shù)據(jù)庫的存儲引擎只能為InnoDB击孩。
  3. 外鍵列和參照列必須具有相似的數(shù)據(jù)類型其中數(shù)字的長度或是否有符號位必須相同:而字符的長度則可以不同迫悠。
  4. 外鍵列和參照列必須創(chuàng)建索引。如果外鍵不存在索引的話巩梢,MYSQL將自動創(chuàng)建索引创泄。

外鍵約束的參照操作:

  • CASCADE:從父表刪除或者更新且自動刪除或者更新子表中匹配的行。
  • SET NULL:從父表刪除或者更新行括蝠,并設置子表的中的外鍵列為NULL鞠抑。如果使用該選項必須保證子表列中沒有指定NOT NULL。
  • RESTRICT:拒絕對父表的更新或者刪除操作忌警。
  • NOT ACTION: 標準SQL的關鍵字搁拙,在MYSQL中與RESTRICT相同

創(chuàng)建外鍵(先有主表)

CREATE TABLE [IF NOT EXISTS] tbl_name (
 字段名稱 字段類型 [完整性約束條件] ##完整性約束條件順序為: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默認值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
...
[CONSTRAINT 外鍵名稱] FOREIGN KEY(字段名) REFERENCES 父表(字段名) [ON {DELETE | UPDATE } {CASCADE | SET NULL }] [ON {DELETE | UPDATE } {CASCADE | SET NULL}]
)

刪除外鍵

(ALTER TABLE tbl_name DROP FOREIGN KEY)

添加外鍵

(ALTER TABLE tbl_name ADD [CONSTRAINT 外鍵名稱]  FOREIGN KEY(字段名) REFERENCES 父表(字段名))

示例:

部門表(父表)

id depName
1 教學部
2 技術部
3 運營部
4 市場部
CREATE TABLE IF NOT EXISTS department (id TINYINT UNSIGNED AUTO_INCREMENT KEY,depName VARCHAR(20) NOT NULL UNIQUE)ENGINE=INNODB;

員工表(子表)

id username depId
1 King 1
2 Zhang 3
3 Ling 2
4 Jack 4
CREATE TABLE IF NOT EXISTS employee (id TINYINT UNSIGNED AUTO_INCREMENT KEY,userName VARCHAR(20) NOT NULL UNIQUE,depId TINYINT UNSIGNED)ENGINE=INNODB;

如果只刪除父表中部門4秒梳,那么員工表中還有屬于部門4的員工存在,這顯然是不合適的箕速,這時酪碘,可以使用外鍵來解決

創(chuàng)建外鍵(先有主表):

CREATE TABLE IF NOT EXISTS employee (id TINYINT UNSIGNED AUTO_INCREMENT KEY,userName VARCHAR(20) NOT NULL UNIQUE,depId TINYINT UNSIGNED , FOREIGN KEY(depId) REFERENCES deparment(id) )ENGINE=INNODB;

聯(lián)合查詢

UNION

(SELECT 語句 UNION SELECT 語句)

UNION ALL

(SELECT 語句 UNION SELECT 語句)

注意:UNION 和 UNION ALL 的區(qū)別是UNION 去掉相同記錄盐茎,UNION是簡單的合并到一起

子查詢

什么是子查詢

子查詢是將一個查詢語句嵌套在另一個查詢語句之中兴垦。內(nèi)層查詢語句的查詢結果,可以為外層查詢語句提供條件

引發(fā)子查詢的情況

  • 使用 [NOT] IN 的子查詢
  • 使用比較運算符的子查詢 = > < >= <= <> != <=>
  • 使用 [NOT] EXISTS 的子查詢
  • 使用 ANY | SOME 或者 ALL的子查詢
符號 ANY SOME ALL
>,>= 最小值 最小值 最大值
<,<= 最大值 最大值 最小值
= 任意值 任意值
!=,<> 任意值

示例:

SELECT name FROM user where depId IN(SELECT id FROM ids)
SELECT name FROM user where depId >=(SELECT id FROM ids)
SELECT name FROM user where EXISTS(SELECT id FROM ids)

將查詢結果寫入到數(shù)據(jù)表

(INSERT [INTO] tbl_name  [(col_name),......] SELECT ...)

創(chuàng)建數(shù)據(jù)表的同時將查詢結果寫入到數(shù)據(jù)表

CREATE TABLE [IF NOT EXISTS] tbl_name (
  [(creat_defination)]
  select_statement

正則表達式查詢

REGEXP '匹配方式'

(SELECT * FROM user WHERE REGEXP '^[1-9]$')

常用匹配方式

模式字符 含義
^ 匹配字符串開始
$ 匹配字符串結尾
. 匹配字符串任一字符字柠,包括換行和回車
[字符集和] 匹配字符集合的任一字符
[^字符集和] 匹配除了字符集合以外的任一字符
s1 | s2 | s3 匹配s1探越、s2、s3任一字符串
* 代表0個窑业、1個或者多個其前的字符
+ 代表1個或者多個其前的字符
字符串{N} 字符串出現(xiàn)N次
字符串{M,N} 字符串至少出現(xiàn)M次,最多N次

運算符

算數(shù)運算符

符號 表達式 作用
+ X1+X2 加法
- X1-X2 減法
* X1*X2 乘法
/ X1 / X2 除法
DIV X1 DIV X2 除法
% X1 % X2 取余
MOD X1 MOD X2 取余

比較運算符

符號 形式 作用
= X1=X2 判斷是否相等
!=或<> X1!=X2或X1<>X2 判斷是否不相等
<=> X1<=>X2 判斷是否相等,可以判斷是否等于NULL
>,>= X1>X2,X1>=X2 判斷是否大于等于
<,<= X1<X2,X1<=X2 判斷是否小于等于
IS NULL 或 IS NOT NULL x1 IS [NOT] NULL 判斷是否等于NULL
BETWEEN ... AND ... 或者 NOT BETWEEN ... AND... X1 BETWEEN m AND n 判斷是否在范圍內(nèi)
IN 或 NOT IN X1 IN (值1,...) 判斷是否在一個固定范圍內(nèi)
LIKE 或 NOT LIKE X1 LIKE 表達式 判斷是否匹配
REGEXP REGEXP 正則表達式 判斷是否正則匹配

邏輯運算符

符號 形式 作用
&& 或 AND 并且
||或 OR 或者
! 或 NOT 取反
XOR 異或 不同為真

運算符的優(yōu)先級

優(yōu)先級 運算符 優(yōu)先級 運算符
1 ! 8 |
2 ~ 9 =,<=>,>>=,<,<=,!=,<>,LIKE,IN,IS NULL,REGEXP
3 ^ 10 BETWEEN AND,CASE,THEN,WHEN,ELSE
4 *,/,DIV,%,MOD 11 NOT
5 +,- 12 &&,AND
6 >>,<< 13 ||,OR,XOR
7 & 14 ;=

注意: 可以使用()改變優(yōu)先級

MYSQL中的函數(shù)

數(shù)學函數(shù)

名稱 描述
CELL(x) 進一取整
FLOOR(x) 舍一取整
MOD(x,y) 取余數(shù)(取模)
POWER(x,y) 冪運算
ROUND(x) 四舍五入
TRUNCATE(x,y) 數(shù)字截取
ABS() 取絕對值
PI() 圓周率
RAND()和RAND(X) 返回0~1之間的隨機數(shù)钦幔,RANX(X)
SIGN(X) 返回X的符號,-1為負數(shù)常柄,0鲤氢,1為正數(shù)
EXP(X) 計算e的幾次方

字符串函數(shù)

名稱 描述
CHAR_LENGTH(x) 返回字符串字符數(shù)
LENGTH(x) 返回字符串長度
CONCAT(s1,s2,...) 合并字符串
CONCAT_WS(x,s1,s2,...) 以指定分隔符連接連接字符串
UPPER(x)/UCASE(x) 將字符串轉化為大寫
LOWER(x)/LCASE(x) 將字符串轉化為小寫
LEFT(S,N)/RIGHT(S,N) 返回字符串的前/后N個字符
LPAD(S1,LEN,S2)/RPAD(s1,LEN,s2) 將字符串s1用s2 填充到指定的LEN
LTRIM(s)/RTRIM(s)/TRIM(s) 去掉字符串空格
TRIM(s1 FROM s) 去掉字符串S中結尾處和開始處的s1
REPEAT(S,N) 重復字符串的指定次數(shù)
SPACE(N) 返回N個空格
REPLACE(s,s1,s2) 從字符串s中搜索s1,替換s2
STRCMP(s1,s2) 比較字符串瘫筐,>=<分別返回1排抬,0,-1
SUBSTRING(S,N,LEN) 截取字符串
REVERSE(S) 反轉字符串
ELT(N,S1,S2) 返回指定位置的字符串

日期時間函數(shù)

名稱 描述
CURDATE(),CURRENT_DATE() 返回當前日期
CURTIME(),CURRENT_TIME() 返回當前時間
NOW() 返回當前日期時間
MONTH(D) 返回日期中月份的值
MONTHNAME(D) 返回日期中月份的名字
DAYNAME(D) 返回日期中的星期幾
DAYOFWEEK(D) 返回一周內(nèi)的第幾天庶喜,1代表星期日
WEEKDAY(D) 返回日期是星期幾秸架,0代表星期一
WEEK(D) 一年中的多少個星期
YEAR(D) 返回日期中年份的值
HOUR(T) 返回時間中的小時
MINUTE(T) 返回時間中的分鐘數(shù)
SECOND(T) 返回時間中的秒數(shù)
DATEDIFF(D1,D2) 返回D1,D2的間隔天數(shù)

條件判斷函數(shù)

名稱 描述
IF(EXPR,V1,V2) 如果EXPR成立揍庄,返回V1,否則V2
IFNULL(V1,V2) 如果V1 不為空,顯示V1的值东抹;否則V2
CASE WHEN expr1 THEN v1 [WHEN expr2 THEN v2 ] [ ELSE vn] END CASE表示函數(shù)開始蚂子,END表示函數(shù)結束。如果表達式expr1成立時缭黔,返回v1.如果表達式expr2成立時食茎,返回v2.以此類推,最后遇到ELSE時馏谨,返回vn的值别渔。

系統(tǒng)信息函數(shù)

名稱 描述
VERSIOn() 返回數(shù)據(jù)庫版本號
CONNECTION_ID() 返回數(shù)據(jù)庫連接數(shù)
DATABASE(),SCHEMA() 返回當前數(shù)據(jù)庫名
USER(),SYSTEM_USER 返回當前用戶
CURRENT_USER() 返回當前用戶
CHARSET(s) 返回字符串s 的字符集
COLLATION(s) 返回字符串s 的檢驗字符集
LAST_INSERT_ID() 返回最近生成的AUTO_INCREMENT的值

加密函數(shù)

名稱 描述
MD5(str) 信息摘要算法
PASSWORD(str) 密碼算法(ver5.6過時)
ENCODE(str,pwd_str) 加密結果是一二進制數(shù),必須使用Blob字段保存
DECODE(crypt_str,pwd_str) 對通過ENCODE加密之后的內(nèi)容解密

其他常用函數(shù)

名稱 描述
FORMAT(x,n) 將數(shù)字x進行格式化惧互,將x保留到小數(shù)點后n位
ASCII(x) 返回字符串x的第一個字符的ASCII碼
BIN(x) 返回x的二進制編碼
HEX(x) 返回x的十六進制編碼
OCT(X) 返回x的八進制編碼
CONV(x,f1,f2) 返回將x從f1進制數(shù)變成f2進制數(shù)
INET_ATON(ip) 將ip地址轉換為數(shù)字
INET_NTOA(n) 將數(shù)字轉化為IP地址
GET_LOCK(name,time) 定義鎖
RELEASE_LOCK(name) 釋放鎖

索引

什么是索引

  • 索引由數(shù)據(jù)庫中一列或者多列組成哎媚,其作用是提高對表中數(shù)據(jù)的查詢速度
  • 索引的優(yōu)點是可以提高檢索數(shù)據(jù)的速度
  • 索引的缺點是創(chuàng)建和維護索引需要耗費時間
  • 索引可以提高查詢速度,減慢寫入速度

索引分類

  • 普通索引
  • 唯一索引(UNIQUE)
  • 全文索引(FULLTEXT)
  • 單列索引
  • 多列索引
  • 空間索引(數(shù)據(jù)類型為GEOMETRY,存儲引擎為MyISAM)SPATIAL

創(chuàng)建索引

創(chuàng)建表的時候創(chuàng)建索引

CREATE TABLE [IF NOT EXISTS] tbl_name (
     字段名稱 字段類型 [完整性約束條件] ##完整性約束條件順序為: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默認值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
     ......
 [UNIQUE | FULLTEXT | SPATIAL ] INDEX|KEY [索引名稱](字段名稱[(長度)] [ASC|DESC]) 
)ENGINE = 引擎名稱 CHARSET = 編碼方式喊儡;

在已存在的表上創(chuàng)建索引

(CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX  索引名稱 ON 表名 {字段名稱[(長度)]  [ASC|DESC] ) })

或者

(ALTER TABLE tbl_name ADD [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名稱(字段名稱[(長度)] [ASC|DESC]) )

刪除索引

(DROP INDEX 索引名稱 ON tbl_name)

其他

注釋

  • 以‘-- ’ 為前綴
  • 以'#' 為前綴
  • 字段注釋通過COMMENT '.....'進行注釋
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拨与,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子艾猜,更是在濱河造成了極大的恐慌买喧,老刑警劉巖捻悯,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異淤毛,居然都是意外死亡今缚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門钱床,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荚斯,“玉大人埠居,你說我怎么就攤上這事查牌。” “怎么了滥壕?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵纸颜,是天一觀的道長。 經(jīng)常有香客問我绎橘,道長胁孙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任称鳞,我火速辦了婚禮涮较,結果婚禮上,老公的妹妹穿的比我還像新娘冈止。我一直安慰自己狂票,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布熙暴。 她就那樣靜靜地躺著闺属,像睡著了一般。 火紅的嫁衣襯著肌膚如雪周霉。 梳的紋絲不亂的頭發(fā)上掂器,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音俱箱,去河邊找鬼国瓮。 笑死,一個胖子當著我的面吹牛狞谱,可吹牛的內(nèi)容都是我干的乃摹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼芋簿,長吁一口氣:“原來是場噩夢啊……” “哼峡懈!你這毒婦竟也來了?” 一聲冷哼從身側響起与斤,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤肪康,失蹤者是張志新(化名)和其女友劉穎荚恶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磷支,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡谒撼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了雾狈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廓潜。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖善榛,靈堂內(nèi)的尸體忽然破棺而出辩蛋,到底是詐尸還是另有隱情,我是刑警寧澤移盆,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布悼院,位于F島的核電站,受9級特大地震影響咒循,放射性物質發(fā)生泄漏据途。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一叙甸、第九天 我趴在偏房一處隱蔽的房頂上張望颖医。 院中可真熱鬧,春花似錦裆蒸、人聲如沸熔萧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哪痰。三九已至,卻和暖如春久妆,著一層夾襖步出監(jiān)牢的瞬間晌杰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工筷弦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肋演,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓烂琴,卻偏偏與公主長得像爹殊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子奸绷,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容