MySQL:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第54行: | 第54行: | ||
* 错误:ERROR 1698 (28000): Access denied for user 'root'@'localhost' | * 错误:ERROR 1698 (28000): Access denied for user 'root'@'localhost' | ||
==数据类型== | |||
{| class="wikitable" style="width: 100%; | |||
! 类型 | |||
! 子类 | |||
! 格式 | |||
! 描述 | |||
! 示例 | |||
|- | |||
| rowspan="5"|[https://dev.mysql.com/doc/refman/8.0/en/string-types.html 字符串] | |||
| 字符 | |||
| CHAR(n) | |||
| 固定n长度的字符 | |||
| CHAR(10) | |||
|- | |||
| 可变长度字符 | |||
| VARCHAR(n) | |||
| 可变长度字符,最长为n | |||
| VARCHAR(150) | |||
|- | |||
| 字符大对象 | |||
| TEXT | |||
| | |||
| | |||
|- | |||
| 枚举 | |||
| ENUM | |||
| | |||
| | |||
|- | |||
| 集合 | |||
| SET | |||
| | |||
| | |||
|- | |||
| rowspan="3"|二进制字符串 | |||
| 二进制 | |||
| BINARY(n) | |||
| | |||
| BINARY(10) | |||
|- | |||
| 可变长度二进制 | |||
| VARBINARY(n) | |||
| | |||
| VARBINARY(200) | |||
|- | |||
| 二进制大对象 | |||
| BLOB | |||
| | |||
| BLOB | |||
|- | |||
| rowspan="7"|[https://dev.mysql.com/doc/refman/8.0/en/numeric-types.html 准确数值] | |||
| 微型整数 | |||
| TINYINT | |||
| 非标准SQL。占1字节,范围:无符号0~255,有符号-128~127。MySQL没有定义布尔类型(BOOL,BOOLEAN),使用TINYINT(1)表示,0表示false,非零表示true。 | |||
| | |||
|- | |||
| 小型整数 | |||
| SMALLINT | |||
| 非标准SQL。占2字节, | |||
| SMALLINT | |||
|- | |||
| 中型整数 | |||
| MEDIUMINT | |||
| 非标准SQL。占3字节, | |||
| MEDIUMINT | |||
|- | |||
| 整数 | |||
| INTEGER, INT | |||
| 占4字节,范围:无符号0~4294967295,有符号-2147483648~2147483647 | |||
| INTEGER | |||
|- | |||
| 大型整数 | |||
| BIGINT | |||
| 非标准SQL。占8字节,范围:无符号0~ 2^64-1,有符号-2^63~2^63 | |||
| BIGINT | |||
|- | |||
| 带固定精度和小数位数的数值 | |||
| NUMERIC(p,s) | |||
| p(precision)表示整数和小数的总位数,s(scale)表示小数位数,p和s都可以省略。 | |||
| NUMERIC(5,2) | |||
|- | |||
| 带固定精度和小数位数的数值 | |||
| DECIMAL(p,s) | |||
| p(precision)表示整数和小数的总位数,s(scale)表示小数位数,p和s都可以省略。 | |||
| DECIMAL(5,2) | |||
|- | |||
| rowspan="3"|[https://dev.mysql.com/doc/refman/8.0/en/numeric-types.html 近似数值] | |||
| 浮点数 | |||
| FLOAT(p) | |||
| | |||
| FLOAT(3) | |||
|- | |||
| 单精度浮点数 | |||
| REAL | |||
| | |||
| REAL | |||
|- | |||
| 双精度 | |||
| DOUBLE | |||
| | |||
| DOUBLE | |||
|- | |||
| rowspan="5"|[https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html 日期时间] | |||
| 日期 | |||
| DATE(p) | |||
| | |||
| DATE | |||
|- | |||
| 日期时间 | |||
| DATETIME[(p)] | |||
| 日期和时间的组合。支持的范围是 '1000-01-01 00:00:00.000000'到 '9999-12-31 23:59:59.999999'。 | |||
| DATE | |||
|- | |||
| 时间 | |||
| TIME(p) | |||
| | |||
| TIME | |||
|- | |||
| 时间戳 | |||
| TIMESTAMP(p) | |||
| | |||
| TIMESTAMP(9) | |||
|- | |||
| 时间间隔 | |||
| INTERVAL | |||
| | |||
| INTERVAL YEAR TO MONTH | |||
|- | |||
| rowspan="1"|JSON | |||
| - | |||
| JSON | |||
| | |||
| JSON | |||
|- | |||
| rowspan="1"|空间数据 | |||
| - | |||
| geom | |||
| | |||
| | |||
|- | |||
|} | |||
{{了解更多 | |||
|[https://dev.mysql.com/doc/refman/8.0/en/data-types.html MySQL 文档:数据类型] | |||
|[https://dev.mysql.com/doc/refman/8.0/en/other-vendor-data-types.html MySQL 文档:使用来自其他数据库引擎的数据类型] | |||
}} | |||
== 导入导出 == | == 导入导出 == |
2022年1月4日 (二) 03:52的版本
MySQL,一个开放源码的关系数据库管理系统,读作“My S-Q-L”。MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库。但被甲骨文公司收购后,大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库。例如维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库。
简介
时间轴
- 2008年1月16日,Sun(太阳微系统)正式收购MySQL。
- 2009年4月20日,甲骨文公司宣布以每股9.50美元,74亿美元的总额收购Sun电脑公司。
- 2013年6月18日,甲骨文公司修改MySQL授权协议,移除了GPL。但随后有消息称这是一个bug。
安装
使用Docker安装
安装Docker,然后直接从官网镜像启动一个mysql容器,并设置root用户密码为123456。
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
了解更多 >> Docker Hub:MySQL
Ubuntu上安装
#更新软件源
sudo apt-get update
#
sudo apt-get install mysql-server
了解更多 >> MySQL文档:使用APT仓库安装
可能遇到问题
- 主机只有1G内存,mysql却占用很大内存。
在终端输入top查看各程序cup和内存等占用率,然后输入M,使结果按内存大小排序,可以看到mysqld的占用率高。直接修改mysql服务器的配置文件my.cnf,如果使用mysql容器,先进入容器终端。
#进入某个容器
docker exec -it some-mysql bash
#在容器内安装vim
apt-get update
apt-get install vim
#打开并修改my.cnf文件
vim /etc/mysql/my.cnf
#在文件里加入如下配置
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
performance_schema = off
#重启mysql
service mysql stop
service mysql start
#输入exit,退出容器,然后重启该容器
docker restart some-mysql
#用top命令查看内存占用率
- 错误:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
数据类型
类型 | 子类 | 格式 | 描述 | 示例 |
---|---|---|---|---|
字符串 | 字符 | CHAR(n) | 固定n长度的字符 | CHAR(10) |
可变长度字符 | VARCHAR(n) | 可变长度字符,最长为n | VARCHAR(150) | |
字符大对象 | TEXT | |||
枚举 | ENUM | |||
集合 | SET | |||
二进制字符串 | 二进制 | BINARY(n) | BINARY(10) | |
可变长度二进制 | VARBINARY(n) | VARBINARY(200) | ||
二进制大对象 | BLOB | BLOB | ||
准确数值 | 微型整数 | TINYINT | 非标准SQL。占1字节,范围:无符号0~255,有符号-128~127。MySQL没有定义布尔类型(BOOL,BOOLEAN),使用TINYINT(1)表示,0表示false,非零表示true。 | |
小型整数 | SMALLINT | 非标准SQL。占2字节, | SMALLINT | |
中型整数 | MEDIUMINT | 非标准SQL。占3字节, | MEDIUMINT | |
整数 | INTEGER, INT | 占4字节,范围:无符号0~4294967295,有符号-2147483648~2147483647 | INTEGER | |
大型整数 | BIGINT | 非标准SQL。占8字节,范围:无符号0~ 2^64-1,有符号-2^63~2^63 | BIGINT | |
带固定精度和小数位数的数值 | NUMERIC(p,s) | p(precision)表示整数和小数的总位数,s(scale)表示小数位数,p和s都可以省略。 | NUMERIC(5,2) | |
带固定精度和小数位数的数值 | DECIMAL(p,s) | p(precision)表示整数和小数的总位数,s(scale)表示小数位数,p和s都可以省略。 | DECIMAL(5,2) | |
近似数值 | 浮点数 | FLOAT(p) | FLOAT(3) | |
单精度浮点数 | REAL | REAL | ||
双精度 | DOUBLE | DOUBLE | ||
日期时间 | 日期 | DATE(p) | DATE | |
日期时间 | DATETIME[(p)] | 日期和时间的组合。支持的范围是 '1000-01-01 00:00:00.000000'到 '9999-12-31 23:59:59.999999'。 | DATE | |
时间 | TIME(p) | TIME | ||
时间戳 | TIMESTAMP(p) | TIMESTAMP(9) | ||
时间间隔 | INTERVAL | INTERVAL YEAR TO MONTH | ||
JSON | - | JSON | JSON | |
空间数据 | - | geom |
导入导出
导入
导入工具 | 支持格式 | 描述 |
---|---|---|
LOAD DATA 语句
|
CSV等 | SQL语句 LOAD DATA 用于加载数据文本类型数据。示例:当需要导入大量本地数据到mysql数据库时,可使用 LOAD DATA LOCAL INFILE 命令。但local_infile选项默认关闭状态,需要打开。以下以导入5千万行CSV文件为例。
-- 查看'local_infile'选项,并设置为ON
show variables like 'local_infile';
set global local_infile=on;
-- 建test表
CREATE TABLE test(
user_id INT,
name VARCHAR);
-- 导入本地csv文件,如果第一行有标题使用IGNORE 1 LINES忽略
LOAD DATA LOCAL INFILE 'C:\\Users\\TESTWORK\\Desktop\\test_data.csv'
INTO TABLE test
FIELDS TERMINATED BY ','
IGNORE 1 LINES;
|
mysqlimport | CSV等 | mysqlimport工具是LOAD DATA 语句的命令行接口 |
mysqldump | SQL语句 | mysqldump工具用于备份,可以导出和导入sql语句。 |