MySQL的使用心得

Apr 23, 2016


安装


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数据库, 需要两个条件:

  1. 服务器数据库提供了远程访问服务

  2. 远程访问命令

首先解决如何让数据库提供远程服务:

\# 进入数据库
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\]

参考文献



上一篇博客:Java正则表达式
下一篇博客:Java单例模式与线程安全