MySQL 是一种广泛使用的开源关系型数据库管理系统(Relational Database Management System),它基于 Structured Query Language(SQL)进行数据管理,允许用户存储、检索、更新和删除数据库中的数据。通过提供高性能、可扩展性以及可靠性,MySQL 被广泛应用于各种规模的数据驱动网站和应用,支持多线程、多用户操作,并能够处理大型数据库,是构建动态网站和应用程序的重要后端组件。
一个关系型数据库由一个或数个表格组成,如下所示的一个表格
name ▼ 键 ▼ 列(col)┌┈┈┈┈┬┈┈┈┈┈┈┈┈┬┈┈┈┈┈┈┬┈┈┈┈┈┈┈┐
┆ id ┆ name ┆ uid ┆ level ┆ ◀ 表头header
├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
┆ 1 ┆ mysql ┆ 0 ┆ 3 ┆
├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
┆ 2 ┆ redis ┆ 12 ┆ 1 ┆ ◀ 行 row
└┈┈┈┈┴┈┈┈┈┈┈┈┈┴┈┈┈┈┈┈┴┈┈┈┈┈┈┈┘
redis ▲ 值
表头(header)
每一列的名称列(col)
具有相同数据类型的数据的集合行(row)
每一行用来描述某个人/物的具体信息值(value)
行的具体信息,每个值与该列数据类型相同键(key)
用来识别某个特定的人/物的方法,有唯一性
# 默认用户名<root>,-p 是密码,# ⚠️参数后面不需要空格mysql -h127.0.0.1 -u<用户名> -p<密码>mysql -D 数据库名 -h 主机名 -u 用户名 -pmysql -h<host>-P<端口号>-u<user>-p[db_name]mysql -h<host>-u<user>-p[db_name]
:-:-
CREATE DATABASE
db
;
创建
数据库
SHOW DATABASES;
列出
数据库
USE
db
;
切换
到数据库
CONNECT
db
;
切换
到数据库
DROP DATABASE
db
;
删除
数据库:-:-
SHOW TABLES;
列出当前数据库的表
SHOW FIELDS FROM
t
;
表的列表字段
DESC
t
;
显示表格结构
SHOW CREATE TABLE
t
;
显示创建表sql
TRUNCATE TABLE
t
;
删除表中的所有数据
DROP TABLE
t
;
删除表格:-:-
show processlist;
列出进程
kill
pid
;
杀死进程
# 显示当前mysql的version的各种信息mysql> status;# 显示当前mysql的version信息mysql>select version();# 查看 MySQL 端口号mysql> show global variables like 'port';
mysql>exit
退出
quit;
或
\q;
一样的效果
创建备份
mysqldump -u user-p db_name > db.sql
导出不带架构的数据库
mysqldump -u user -p db_name --no-data=true --add-drop-table=false > db.sql
恢复备份
mysql -u user -p db_name < db.sql
创建一个包含三列的新表
CREATETABLE t ( id INT, name VARCHARDEFAULTNOTNULL, price INTDEFAULT0PRIMARYKEY(id));
从数据库中删除表 t
DROPTABLE t ;
向表中添加新列
ALTERTABLE t ADDcolumn;
从表中删除列 c
ALTERTABLE t DROPCOLUMN c ;
添加约束
ALTERTABLE t ADDconstraint;
删除约束
ALTERTABLE t DROPconstraint;
将表从 t1 重命名为 t2
ALTERTABLE t1 RENAMETO t2;
将列 c1 重命名为 c2
ALTERTABLE t1 CHANGE c1 c2 datatype;ALTERTABLE table_name RENAMECOLUMN c1 TO c2;
将列 c1 的数据类型改为 datatype
ALTERTABLE t1 MODIFY c1 datatype;
删除表中的所有数据
TRUNCATETABLE t;
从表中查询列 c1、c2 中的数据
SELECT c1, c2 FROM t
查询表 t 中的所有行和列
SELECT*FROM t
查询数据并使用条件筛选行
SELECT c1, c2 FROM t
WHERE condition
查询表中的不同行
SELECTDISTINCT c1 FROM t
WHERE condition
按升序或降序对结果集排序
SELECT c1, c2 FROM t
ORDERBY c1 ASC[DESC]
跳过行的偏移并返回下 n 行
SELECT c1, c2 FROM t
ORDERBY c1
LIMIT n OFFSEToffset
使用聚合函数对行进行分组
SELECT c1, aggregate(c2)FROM t
GROUPBY c1
使用 HAVING 子句筛选组
SELECT c1, aggregate(c2)FROM t
GROUPBY c1
HAVING condition
内部连接 t1 和 t2
SELECT c1, c2
FROM t1
INNERJOIN t2 ON condition
左连接t1和t1
SELECT c1, c2
FROM t1
LEFTJOIN t2 ON condition
右连接 t1 和 t2
SELECT c1, c2
FROM t1
RIGHTJOIN t2 ON condition
执行完全外部连接
SELECT c1, c2
FROM t1
FULLOUTERJOIN t2 ON condition
生成表中行的笛卡尔积
SELECT c1, c2
FROM t1
CROSSJOIN t2
执行交叉连接的另一种方法
SELECT c1, c2
FROM t1, t2
使用 INNER Join 子句将 t1 连接到自身
SELECT c1, c2
FROM t1 A
INNERJOIN t1 B ON condition
使用 SQL 运算符,合并两个查询中的行
SELECT c1, c2 FROM t1
UNION[ALL]SELECT c1, c2 FROM t2
返回两个查询的交集
SELECT c1, c2 FROM t1
INTERSECTSELECT c1, c2 FROM t2
从另一个结果集中减去一个结果集
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
将 c1 和 c2 设置为主键
CREATETABLE t( c1 INT, c2 INT, c3 VARCHAR,PRIMARYKEY(c1,c2));
将 c2 列设置为外键
CREATETABLE t1( c1 INTPRIMARYKEY, c2 INT,FOREIGNKEY(c2)REFERENCES t2(c2));
使列 c1 和 c2 中的值唯一
CREATETABLE t( c1 INT, c2 INT,UNIQUE(c1,c2));
确保 c1>0 和 c1>=c2 中的值
CREATETABLE t( c1 INT, c2 INT,CHECK(c1>0AND c1 >= c2));
c2 列中的设置值不为 NULL
CREATETABLE t( c1 INTPRIMARYKEY, c2 VARCHARNOTNULL);
在表格中插入一行
INSERTINTO t(column_list)VALUES(value_list);
在表格中插入多行
INSERTINTO t(column_list)VALUES(value_list),(value_list), …;
将行从 t2 插入 t1
INSERTINTO 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;
删除表中的所有数据
DELETEFROM t;
删除表中的行子集
DELETEFROM t
WHERE condition;
创建由 c1 和 c2 组成的新视图
CREATEVIEW v(c1,c2)ASSELECT c1, c2
FROM t;
使用选中选项创建新视图
CREATEVIEW v(c1,c2)ASSELECT c1, c2
FROM t;WITH[CASCADED|LOCAL]CHECKOPTION;
创建递归视图
CREATE RECURSIVE VIEW v
ASselect-statement -- anchor partUNION[ALL]select-statement;-- recursive part
创建临时视图
CREATETEMPORARYVIEW v
ASSELECT c1, c2
FROM t;
删除视图
DROPVIEW view_name;
创建或修改触发器
CREATEORMODIFYTRIGGER trigger_name
WHEN EVENT
ON table_name TRIGGER_TYPE
EXECUTE stored_procedure;
:-:-
BEFORE
在事件发生前调用
AFTER
事件发生后调用:-:-
INSERT
为INSERT调用
UPDATE
调用UPDATE
DELETE
调用DELETE:-:-
FOR EACH ROW
FOR EACH STATEMENT
在表 t 的 c1 和 c2 上创建索引
CREATEINDEX idx_name
ON t(c1,c2);
在表 t 的 c3、c4 上创建唯一索引
CREATEUNIQUEINDEX idx_name
ON t(c3,c4)
删除索引
DROPINDEX idx_name ON t;
--
CHAR
String (0 - 255)
VARCHAR
String (0 - 255)
TINYTEXT
String (0 - 255)
TEXT
String (0 - 65535)
BLOB
String (0 - 65535)
MEDIUMTEXT
String (0 - 16777215)
MEDIUMBLOB
String (0 - 16777215)
LONGTEXT
String (0 - 4294967295)
LONGBLOB
String (0 - 4294967295)
ENUM
One of preset options
SET
Selection of preset optionsData TypeFormat
DATE
yyyy-MM-dd
TIME
hh:mm:ss
DATETIME
yyyy-MM-dd hh:mm:ss
TIMESTAMP
yyyy-MM-dd hh:mm:ss
YEAR
yyyy--
TINYINT x
Integer (-128 to 127)
SMALLINT x
Integer (-32768 to 32767)
MEDIUMINT x
Integer (-8388608 to 8388607)
INT x
Integer (-2147483648 to 2147483647)
BIGINT x
Integer (-9223372036854775808 to 9223372036854775807)
FLOAT
Decimal (precise to 23 digits)
DOUBLE
Decimal (24 to 53 digits)
DECIMAL
"DOUBLE" stored as string函数解释
SUM()
计算一列值的总和
AVG()
计算一列值的平均值
COUNT()
计算行数,可选择性地忽略NULL值
MAX()
找出一列的最大值
MIN()
找出一列的最小值函数解释示例语法结果
ABS(x)
返回数值的绝对值
ABS(-5)
5
ROUND(x,y)
四舍五入到指定的小数位数,y为小数位数,默认为0
ROUND(3.1415,2)
3.14
FLOOR(x)
向下取整至最接近的整数
FLOOR(3.7)
3
CEIL(x)
向上取整至最接近的整数
CEIL(3.3)
4
SQRT(x)
返回一个数的平方根
SQRT(16)
4
MOD(x,y)
返回x除以y的余数
MOD(10,3)
1
RAND([seed])
返回0到1之间的随机数,可选种子值
RAND()
或
RAND(123)
0.345...函数解释
NOW()
返回当前日期和时间
CURDATE()
返回当前日期
CURTIME()
返回当前时间
DATE_FORMAT()
格式化日期时间输出
DATEDIFF()
计算两个日期之间相差的天数
STR_TO_DATE()
将字符串转换为日期格式函数解释示例语法结果
CONCAT(s1,s2,...)
连接两个或更多字符串
CONCAT('Hello, ','World!')
'Hello, World!'
LOWER(str)
转换为小写
LOWER('HELLO')
'hello'
UPPER(str)
转换为大写
UPPER('world')
'WORLD'
TRIM(str)
去除字符串两端空格
TRIM(' Hello ')
'Hello'
LEFT(str,len)
提取字符串左侧的若干字符
LEFT('Hello', 3)
'Hel'
RIGHT(str,len)
提取字符串右侧的若干字符
RIGHT('Hello', 2)
'lo'
SUBSTR(str,pos,len)
提取字符串中的一部分
SUBSTR('Hello', 2, 3)
'ell'
REPLACE(str,from_str,to_str)
替换字符串中的部分文本
REPLACE('Hello', 'l', 'L')
'HeLLo'函数解释示例语法结果BIN(x)返回 x 的二进制编码,x 为十进制数。
BIN(2)
10
BINARY(s)将字符串 s 转换为二进制字符串。
BINARY 'RUNOOB'
'RUNOOB'
(显示效果,实际存储为二进制)CASE复合条件函数,根据条件返回不同结果。
CASE WHEN 1 > 0 THEN '1 > 0' WHEN 2 > 0 THEN '2 > 0' ELSE '3 > 0' END
'1 > 0'
CAST(x AS type)转换数据类型。
CAST('2017-08-29' AS DATE)
2017-08-29
COALESCE(expr1, expr2, ..., expr_n)返回第一个非空表达式的值。
COALESCE(NULL, NULL, 'runoob.com', NULL, 'google.com')
'runoob.com'
CONNECTION_ID()返回当前连接的唯一ID。
CONNECTION_ID()
4292835
(示例值)CONV(x, f1, f2)将 f1 进制数转换为 f2 进制数。
CONV(15, 10, 2)
1111
CONVERT(s USING cs)转换字符串 s 的字符集为 cs。
CHARSET(CONVERT('ABC' USING gbk))
gbk
CURRENT_USER()返回当前用户。
CURRENT_USER()
guest@%
DATABASE()返回当前数据库名。
DATABASE()
runoob
IF(expr, v1, v2)条件表达式,expr 为真则 v1,否则 v2。
IF(1 > 0, '正确', '错误')
'正确'
IFNULL(v1, v2)如果 v1 不为 NULL,则返回 v1,否则返回 v2。
IFNULL(NULL, 'Hello Word')
'Hello Word'
ISNULL(expression)判断表达式是否为 NULL。
ISNULL(NULL)
1
LAST_INSERT_ID()返回最近生成的 AUTO_INCREMENT 值。
LAST_INSERT_ID()
6
(示例值)NULLIF(expr1, expr2)若 expr1 等于 expr2,则返回 NULL,否则返回 expr1。
NULLIF(25, 25)
NULL
版权归原作者 Ustinian_310 所有, 如有侵权,请联系我们删除。