MySQL
2020-12-27 12:19:28 12 举报
AI智能生成
MySQL
作者其他创作
大纲/内容
安装
linux
ubuntu
sudo apt-get install mysql-server
centos
下载:https://dev.mysql.com/downloads/repo/yum/<br>rpm -ivh mysql.noarch.rpm<br>yum update<br>yum install mysql-server<br><br>chown mysql:mysql -R /var/lib/mysql<br>mysqld --initialize<br>systemctl start mysqld<br>
mac
https://dev.mysql.com/downloads/mysql/
windows
https://dev.mysql.com/downloads/windows/installer/
语法
术语
数据库
数据表
列
行
冗余
主键
外键
复合键
索引
参照完整性
表头
列
行
值
键
数据类型
数值
TINYINT
SMALLINT
MEDIUMINT
INT | INTEGER
BIGINT
FLOAT
DOUBLE
DEC | DECIMAL
字符串
CHAR
VARCHAR
BLOB
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
TEXT
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
日期/时间
YEAR
DATE
TIME
DATETIME
TIMESTAMP
运算符
算术
+
-
*
/ 或 DIV
% 或 MOD
比较
=
<=>
<> 或 =
>
<
<=
>=
BETWEEN
NOT BETWEEN
IN
NOT IN
LIKE
REGEXP 或 RLIKE
IS NULL
IS NOT NULL
逻辑
NOT 或 !
AND
OR
XOR
位
&
|
^
!
<<
>>
命令
连接
mysql -u user_name -p
选择库
USE db_name;
查看
SHOW STATUS;<br>
SELECT USER();
SELECT DATABASE();
SHOW DATABASES;
SHOW TABLES;
SHOW TRIGGERS;
SHOW CREATE type;
SHOW COLUMNS FROM table_name;
SHOW INDEX FROM table_name;
SHOW type STATUS [FROM db_name] [LIKE 'pattern'] \G;
SHOW TABLE STATUS FROM my_db;
SHOW TABLE STATUS from my_db LIKE 'my%'\G;
SHOW VARIABLES;
SELECT VERSION();
设置
自动提交
SET AUTOCOMMIT=0;
SET AUTOCOMMIT=1;
退出
exit
quit
SQL
导入
LOAD DATA
LOAD DATA [LOW_PRIORITY | CONCURRENT]<br>[LOCAL] INFILE file_name<br>[REPLACE | IGNORE] INTO TABLE table_name<br>[FIELDS field_options] [LINE line_options]<br>[IGNORE number LINES]<br>[(column1,...columnN)];<br>
SOURCE
SOURCE file_name;
mysql
mysql -u user_name -p db_name < file_name
mysql -u user_name -p db_name | mysql -h input_user_host -P port -u user_name -p db_name
mysqlimport
mysqlimport [options] db_name file_name
导出
SELECT ... INTO OUTFILE
SELECT * FROM table_name WHERE [condition] INTO OUTFILE file_name<br>[FIELDS field_options] [LINE line_options];
mysqldump -u user_name -p [options] [db_name] [table_name] > file_name
库
创建
CREATE DATABASE [IF NOT EXISTS] db_name [options];<br>
mysqladmin -u user_name -p create db_name
删除
DROP DATABASE [IF EXISTS] db_name;
mysqladmin -u root -p drop db_name
选择
USE db_name;
表
复制
结构
CREATE TABLE table_name LIKE old_table_name;
结构+数据
CREATE TABLE table_name<br>AS<br>( SELECT column1,column2,...columnN FROM old_table_name)
CREATE TABLE table_name<br>(id INTEGER PRIMARY KEY)<br>AS<br>(SELECT * FROM old_table_name);
创建
CREATE [TEMPORARY] TABLE table_name(<br> column1 datatype [constraint],<br> column2 datatype [constraint],<br> .....<br> columnN datatype [constraint],<br> PRIMARY KEY( 一个或多个列 )<br>)[ENGINE=engine_name auto_increment=number DEFAULT CHARSET=charset_name];
自动递增
AUTO_INCREMENT
LAST_INSERT_ID()
删除
表
DROP TABLE table_name;
外键
ALTER TABLE table_name DROP FOREIGN KEY foreign_name;
列
ALTER TABLE table_name DROP column_name;
默认值
ALTER TABLE table_name ALTER column_name DROP DEFAULT;
修改
表
ALTER TABLE table_name [options];
ALTER TABLE table_name RENAME TO new_table_name;
ALTER TABLE table_name ENGINE=engine_name;
ALTER TABLE table_name DROP FOREIGN KEY foreign_name;
ALTER TABLE table_name AUTO_INCREMENT = 100;
索引
添加
ALTER TABLE table_name ADD PRIMARY KEY (column_name...);
ALTER TABLE table_name ADD index_type index_name (column_name,...);
删除
ALTER TABLE table_name DROP INDEX index_name ;
列
添加
ALTER TABLE table_name ADD column_name datatype [FIRST | AFTER column];
删除
ALTER TABLE table_name DROP column_name;
修改
ALTER TABLE table_name MODIFY column_name datatype;<br>
ALTER TABLE table_name CHANGE column_name new_column_name datatype;<br>
默认值
修改
ALTER TABLE table_name ALTER column_name SET DEFAULT default_num;
删除
ALTER TABLE table_name ALTER column_name DROP DEFAULT;
约束
数据
插入
单条
INSERT [IGNORE] INTO table_name (column1, column2,...columnN) VALUES (value1, value2,...valueN);
INSERT [IGNORE] INTO table_name VALUES (value1,value2,value3,...valueN);
多条
INSERT INTO table_name (column1, column2,...columnN) VALUES (value1, value2,...valueN),<br>(value1, value2,...valueN),<br>......<br>(value1, value2,...valueN);
INSERT INTO table_name VALUES (value1,value2,value3,...valueN),<br>(value1,value2,value3,...valueN),<br>......<br>(value1,value2,value3,...valueN);
删除
DELETE FROM table_name [WHERE conditions];
清空
TRUNCATE TABLE table_name;
修改
UPDATE table_name SET column1=value1, column2=value2...., columnN=valueN [WHERE conditions];
查询
SELECT [Distinct] column1, column2, columnN [AS my_new_column_name]<br>[FROM table_name] [AS my_new_table_name]<br>[WHERE [conditions | expression]]<br>[GROUP BY column1, column2....columnN]<br>[HAVING [conditions]]<br>[ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], .. columnN [ASC | DESC]]<br>[LIMIT no_of_rows [OFFSET row_num]]<br>;
AS
SELECT age AS my_new_name FROM table_name;
SELECT * FROM table_name AS my_new_name;
重复记录
过滤
DISTINCT
SELECT DISTINCT column FROM table_name;
查询
SELECT column1,column2,...columnN count(1) AS count FROM table_name<br>GROUP BY column1,column2...columnN<br>HAVING count>1 AND conditions;<br>
FROM
SELECT column FROM table_name;
INNER JOIN
SELECT * FROM table1 [INNER] JOIN table2 ON condition;
LEFT JOIN
SELECT * FROM table1 LEFT JOIN table2 ON condition;
RIGHT JOIN
SELECT * FROM table1 RIGHT JOIN table2 ON condition;
WHERE
SELECT * FROM table_name WHERE [condition];
BINARY
SELECT * FROM table_name WHERE BINARY [condition];
AND
SELECT * FROM table_name WHERE [condition1] AND [condition2]...AND [conditionN];
BETWEEN
SELECT * FROM table_name WHERE age BETWEENT 1 AND 18;
OR
SELECT * FROM table_name WHERE [condition1] OR [condition2]...OR [conditionN];
Like
<span style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "WenQuanYi Micro Hei", Arial, sans-serif;">%</span>
SELECT * FROM table_name WHERE column LIKE 'XXXX%';<br>
_
SELECT * FROM table_name WHERE column LIKE 'XXXX_';
[]
[^]
REGEXP
^
$
.
[...]
[^...]
p1|p2|p3
*
+
{n}
{n,m}
IN
NOT IN
EXISTS
IS
IS NOT
IS NULL
GROUP BY
SELECT * FROM table_name WHERE [conditions]<br>GROUP BY column1, column2....columnN;
SELECT NAME, SUM(SALARY) FROM my_tb GROUP BY name;
WITH ROLLUP
HAVING
SELECT * FROM table_name WHERE [conditions]<br>GROUP BY column1, column2....columnN<br>HAVING [conditions];<br>
SELECT * FROM my_tb GROUP BY name HAVING count(name) < 2;
ORDER BY
SELECT * FROM table_name WHERE [condition]<br>ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], .. columnN [ASC | DESC] ;
LIMIT
SELECT * FROM table_name WHERE [condition]<br>LIMIT no_of_rows [OFFSET row_num];
子查询
SELECT column1,... columnN FROM table_name<br>WHERE condition<br>(SELECT column1,... columnN FROM table_name [WHERE conditions]);
UNION
SELECT column1,... columnN FROM table_name [WHERE conditions]<br>UNION [ALL | DISTINCT]<br>SELECT column1,... columnN FROM table_name [WHERE conditions];<br>
事务
隔离级别
SET [GLOBAL | SESSION] TRANSACTION isolation_level<br>
开始
BEGIN;
START TRANSACTION;
保存点
创建
SAVEPOINT identifier;
删除
RELEASE SAVEPOINT identifier
结束
COMMIT WORK;
COMMIT;
回滚
<span style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "WenQuanYi Micro Hei", Arial, sans-serif; font-size: 13px;">ROLLBACK WORK;</span>
ROLLBACK
ROLLBACK TO identifier
索引
创建
单列索引
CREATE INDEX index_name ON table_name (column_name);
组合索引
CREATE INDEX index_name ON table_name (column1, column2);
唯一索引
CREATE UNIQUE INDEX index_name ON table_name (column_name);
删除
DROP INDEX [index_name] ON table_name; ;
查看
SHOW INDEX FROM table_name;
视图
创建
CREATE VIEW view_name AS<br>SELECT column1, column2.....<br>FROM table_name<br>WHERE [condition];<br>
<div>删除</div>
DROP VIEW [IF EXISTS] view_name;
修改
ALTER VIEW view_name AS SELECT ..;
函数
创建
CREATE FUNCTION function_name([arg1 arg1_type,...argN argN_type]) RETURNS arg_type<br>BEGIN<br>...<br>RETURN value;<br>END;<br>
<div>删除</div>
DROP FUNCTION [IF EXISTS] function_name;
修改
ALTER FUNCTION function_name options;
触发器
创建
CREATE TRIGGER trigger_name trigger_time trigger_event<br>ON table_name FOR EACH ROW<br>[trigger_order]<br>BEGIN<br>...<br>END;<br>
<div>删除</div>
DROP TRIGGER [IF EXISTS] trigger_name;
函数
数字
SUM(expression)
COUNT(expression)
AVG(expression)
RAND()
ABS(x)
SIGN(x)
MOD(x,y)
n DIV m
三角函数
SIN(x)
COS(x)
COT(x)
TAN(x)
反
ASIN(x)
ACOS(x)
ATAN(x)
ATAN2(n, m)
PI()
角/弧 度
RADIANS(x)
DEGREES(x)
最 大/小 值
MAX(expression)
MIN(expression)
GREATEST(expr1, expr2, expr3, ...)
LEAST(expr1, expr2, expr3, ...)
取整
FLOOR(x)
CEIL(x)
CEILING(x)
ROUND(x)
TRUNCATE(x,y)
对数
LN
LOG(x) 或 LOG(base, x)
LOG10(x)
LOG2(x)
SQRT(x)
幂
EXP(x)
POW(x,y)
POWER(x,y)
字符串
ASCII(s)
REPEAT(s,n)
REVERSE(s)
STRCMP(s1,s2)
长度
CHAR_LENGTH(s)
CHARACTER_LENGTH(s)
查找
FIELD(s,s1,s2...)
SELECT FIELD("c", "a", "b", "c", "d", "e");
FIND_IN_SET(s1,s2)
SELECT FIND_IN_SET("c", "a,b,c,d,e");
POSITION(s1 IN s)
LOCATE(s1,s)
REPLACE(s,s1,s2)
截取
LEFT(s,n)
MID(s,n,len)
RIGHT(s,n)
SUBSTR(s, start, length)
SUBSTRING(s, start, length)
SUBSTRING_INDEX(s, delimiter, number)
合并
CONCAT(s1,s2...sn)
CONCAT_WS(x, s1,s2...sn)
插入
INSERT(s1,x,len,s2)
格式化
LPAD(s1,len,s2)
RPAD(s1,len,s2)
FORMAT(x,n)
大小写
UCASE(s)
LCASE(s)
UPPER(s)
LOWER(s)
空格
TRIM(s)
LTRIM(s)
RTRIM(s)
SPACE(n)
时间/日期
EXTRACT(type FROM d)
SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11')
日期和时间
计算
TIMESTAMP(expression, interval)
SELECT TIMESTAMP("2017-07-23", "13:10:11");
SUBTIME(t,n)
SELECT SUBDATE('2011-11-11 11:11:11', 1)
SUBDATE(d,n)
SELECT SUBTIME('2011-11-11 11:11:11', 5);<br>
ADDTIME(t,n)
SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5"); <br>
DATE_ADD(d,INTERVAL expr type)
SELECT ADDDATE('2011-11-11 11:11:11',1)
SELECT ADDDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE)
DATE_FORMAT(d,f)
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')
SYSDATE()
SELECT SYSDATE();
NOW()
SELECT NOW();
LOCALTIMESTAMP()
SELECT LOCALTIMESTAMP();
LOCALTIME()
SELECT LOCALTIME();
CURRENT_TIMESTAMP()
SELECT CURRENT_TIMESTAMP();
日期
计算
PERIOD_ADD(period, number)
SELECT PERIOD_ADD(201703, 5);
PERIOD_DIFF(period1, period2)
SELECT PERIOD_DIFF(201710, 201703);
ADDDATE(d,n)
SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
DATEDIFF(d1,d2)
SELECT DATEDIFF('2001-01-01','2001-02-02')
STR_TO_DATE(string, format_mask)
SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
LAST_DAY(d)
SELECT LAST_DAY("2017-06-20");
MAKEDATE(year, day-of-year)
SELECT MAKEDATE(2017, 3);
FROM_DAYS(n)
SELECT FROM_DAYS(1111)
DATE_SUB(date,INTERVAL expr type)
SELECT DATE_SUB("2017-06-15", INTERVAL 2 DAY);
CURDATE()
SELECT CURDATE();
CURRENT_DATE()
SELECT CURRENT_DATE();
DATE()
SELECT DATE("2017-06-15");
年
YEAR(d)
SELECT YEAR("2017-06-15");
月
MONTH(d)
SELECT MONTH('2011-11-11 11:11:11')
MONTHNAME(d)
SELECT MONTHNAME('2011-11-11 11:11:11')
日
TO_DAYS(d)
SELECT TO_DAYS('0001-01-01 01:01:01');
DAYOFYEAR(d)
SELECT DAYOFYEAR('2011-11-11 11:11:11')
DAYOFMONTH(d)
SELECT DAYOFMONTH('2011-11-11 11:11:11')
DAY(d)
SELECT DAY("2017-06-15");
DAYNAME(d)
SELECT DAYNAME('2011-11-11 11:11:11')
星期
WEEK(d)
SELECT WEEK('2011-11-11 11:11:11');
WEEKDAY(d)
SELECT WEEKDAY("2017-06-15");
WEEKOFYEAR(d)
SELECT WEEKOFYEAR('2011-11-11 11:11:11');
YEARWEEK(date, mode)
SELECT YEARWEEK("2017-06-15");
DAYOFWEEK(d)
SELECT DAYOFWEEK('2011-11-11 11:11:11')
季
QUARTER(d)
SELECT QUARTER('2011-11-11 11:11:11')
时间
计算
TIMEDIFF(time1, time2)
SELECT TIMEDIFF("13:10:11", "13:10:10");
TIME(expression)
SELECT TIME("19:30:10");
TIME_FORMAT(t,f)
SELECT TIME_FORMAT('11:11:11','%r')
SEC_TO_TIME(s)
SELECT SEC_TO_TIME(4320);
MAKETIME(hour, minute, second)
SELECT MAKETIME(11, 35, 4);
CURRENT_TIME
SELECT CURRENT_TIME();
CURTIME()
SELECT CURTIME();
时
HOUR(t)
SELECT HOUR('1:2:3');
分
MINUTE(t)
SELECT MINUTE('1:2:3');
秒
TIME_TO_SEC(t)
SELECT TIME_TO_SEC('1:12:00');
SECOND(t)
SELECT SECOND('1:2:3');
微秒
MICROSECOND(date)
SELECT MICROSECOND("2017-06-20 09:34:00.000023");
其他
LAST_INSERT_ID()
COALESCE(expr1, expr2, ...., expr_n)
CASE
CASE expression<br> WHEN condition1 THEN result1<br> ...<br> WHEN conditionN THEN resultN<br> ELSE result<br>END
SELECT CASE
WHEN 1 > 0
THEN '1 > 0'
WHEN 2 > 0
THEN '2 > 0'
ELSE '3 > 0'
END
类型转换
CAST(x AS type)
SELECT CAST("2017-08-29" AS DATE);
进制
BIN(x)
SELECT BIN(15);
BINARY(s)
SELECT BINARY "RUNOOB";
CONV(x,f1,f2)
字符集
CHARSET(s)
SELECT CHARSET('ABC')
CONVERT(s USING cs)
SELECT CHARSET(CONVERT('ABC' USING gbk))
逻辑
IF(expr,v1,v2)
NULLIF(expr1, expr2)
ISNULL(expression)
IFNULL(v1,v2)
数据库
用户
SESSION_USER()
SYSTEM_USER()
USER()
CURRENT_USER()
CONNECTION_ID()
DATABASE()
VERSION()
配置文件
路径
linux
ubuntu
/etc/mysql/my.cnf<br>
centos
mac
windows
文件
远程连接
vim ./mysqld.cnf<br>注释 / 删除 :bind-address = 127.0.0.1<br>service mysql restart<br><br>mysql -u root -p<br>USE mysql;<br>GRANT ALL PRIVILEGES ON *.* TO 'root'@'@' IDENTIFIED BY 'password';<br>FLUSH PRIVILEGES;<br>exit<br>
接口
0 条评论
下一页