安装
MySQL for Linux
sudo apt-get install mysql-server (--ubuntu)
#填写root密码即可
MySQL命令
- 进入mysql
mysql -u userName -ppassword --在同一行写密码
mysql -u userName -p --在下一行输入密码
- 查看数据库/表
show databases/tables;
- 查看表中各自段的属性
show fields from tableName;
- 查看mysql的编码格式
show variables like 'character%'
- 选择数据库
use databaseName;
- mysql导出数据库到文件
mysqldump -h[mysql主机ip] -u[用户名] -p [数据库名] > 导出到的文件
- mysql导入sql文件到数据库
--mysql登录
mysql -u root -p[password]
--创建数据库
create table tableName(...)
--将sql文件导入数据库中
source [文件位置]
- 退出mysql
quit
MySQL数据类型
数据类型 | 描述 |
CHAR(size) | 保存固定长度的字符串,最多255个字符. |
VARCHAR(size) | 保存可变长度的字符串,最多 255 个字符. |
TEXT | 存放最大长度为 65,535 个字符的字符串 |
BLOB | 存放最多 65,535 字节的数据 |
LONGTEXT | 存放最大长度为 4,294,967,295 个字符的字符串 |
LONGBLOB | 存放最多 4,294,967,295 字节的数据 |
TINYINT(size) | -128 到 127 常规, 0 到 255 无符号. |
INT(size) | 保存 4 个字节大小的数字 |
BIGINT(size) | 保存 8 个字节大小的数字 |
FLOAT(size,d) | 保存小浮点数,在 d 参数中规定小数点右侧的最大位数 |
DOUBLE(size,d) | 保存大浮点数,在 d 参数中规定小数点右侧的最大位数 |
DECIMAL(size,d) | 保存大浮点数,在 d 参数中规定小数点右侧的最大位数 |
DATE() | 格式:YYYY-MM-DD |
DATETIME() | 格式:YYYY-MM-DD HH:MM:SS |
TIME() | 格式:HH:MM:SS |
YEAR() | 2 位或 4 位格式的年 |
SQL Constraints 约束
NOT NULL | 字段不接受空值 |
UNIQUE | 唯一标识表中每条记录,类似于主键 |
PRIMARY KEY | 主键 |
FOREIGN KEY | 外键 |
CHECK | 限制某个字段的范围, e.g. CHECK(pi_id > 0) |
DEFAULT | 为字段设置默认值, e.g. DEFAULT ‘NAME’ |
e.g.
foreign key (columnName) references otherTable(columnName)
MySQL Functions
avg(column) | 该列的平均值 |
count(column) | 该列的行数 |
max(column) | 最大值 |
min(column) | 最小值 |
sum(column) | 该列的总和 |
LAST_INSERT_ID() | 最后一次插入数据的主键 |
e.g.
select count(*) from table; --被选的行数
常用SQL
Create Database
- 创建数据库
create database dbName;
- 创建指定编码格式的数据库
create database dbName default character set utf8 collate utf8_general_ci
Create table
create table tableName(
columnName dataType constraints, (--constraints 约束,如主外键等)
columnName dataType constraints,
columnName dataType constraints
);
e.g.
create table page_info(
pi_id int auto_increment primary key,
page_link text not null,
page_title text not null
);
常见问题解决
Ubuntu系统下的MySQL中文乱码
原因:
通过使用show variables like 'character%'
,结果如下:
Variable_name | Value |
character_set_client | utf8 |
character_set_connection | utf8 |
character_set_database | utf8 |
character_set_filesystem | binary |
character_set_results | utf8 |
character_set_server | latin1 |
character_set_system | utf8 |
character_sets_dir | /usr/share/mysql/charsets/ |
查看自己操作系统的文件编码格式(使用file -i filename
),我的是UTF-8
修改/etc/mysql/my.cnf文件:
[client]下添加:
default-character-set = utf8
[mysqld]下添加:
character-set-server = utf8
重启mysql服务即可:
sudo service mysql restart
MySQL的远程访问
如果向通过自己的电脑访问服务器上的MySQL数据库, 需要两个条件:
-
服务器数据库提供了远程访问服务
-
远程访问命令
首先解决如何让数据库提供远程服务:
\# 进入数据库
mysql -u userName -p
\# 创建一个用户使其可以远程访问该数据库
\# 可选的privilege有: select,insert,update,delete,create,drop,all privileges
\# databaseName 数据库名称, *代表所有数据库
\# tableName 表名, *代表所有表
\# userName 用户名
\# userAddress 用户ip地址, '%'任意地址
\# password 连接密码
grant \[privilege1\],\[privilege2\],\[privilege1\]... on \[databaseName\].\[tableName\] to \[userName\]@\[userAddress\] identified by '\[password\]'
\# 将/etc/mysql/my.cnf文件中的bind-address=127.0.0.1改为
bind-address=serverIP
\# 远程访问该数据库
\# userName 用户名
\# password 上面设置的连接密码
\# MysqlServerAddress 服务器地址
\# port 端口号
\# databaseName 数据库名称
mysql -u \[userName\] -p\[password\] -h \[MysqlServerAddress\] -P \[port\] -D \[databaseName\]