进入数据库的数据目录
cd var/lib/mysql
库的操作
创建数据库
创建数据库的本质是创建目录。
创建数据库时有两个编码集:1.数据库编码集(存储时使用)2.进行字段比对读取时使用的编码方式)
语法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
大写的表示关键字
[] 是可选项
CHARACTER SET: 指定数据库采用的字符集
COLLATE: 指定数据库字符集的校验规则
创建数据库实例:
create database db1;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则 是:utf8_ general_ ci
创建一个使用utf字符集,并带校对规则的 db2 数据库。
create database db2 charset=utf8 collate utf8_general_ci;
查看系统默认字符集以及校验规则
show variables like 'character_set_database';
show variables like 'collation_database';
查看数据库支持的字符集
show charset;
查看数据库支持的字符集校验规则
show collation;
查看数据库
show databases;
查看数据库创建语句
show create database db_name;
mysql> show create database db1;
+----------+--------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------+
| db1 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)
修改数据库
将 mytest 数据库字符集改成 gbk
alter database mytest charset=gbk;
对数据库的修改主要指的是修改数据库的字符集,校验规则
将数据库的校验编码格式更改之后,已有的表的编码格式不会改变,改变的是新创建的表的编码格式。
数据库删除
DROP DATABASE [IF EXISTS] db_ name;
备份和恢复
# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
恢复数据库
mysql> source /home/szg/MySQL/db1.sql;
备份数据库中的表
# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据 库,再使用source来还原。
查看连接情况
mysql> show processlist;
表的操作
创建表
不同的存储引擎,创建表的文件不一样。
test_myisam 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
test_myisam.frm:表结构
test_myisam.MYD:表数据
test_myisam.MYI:表索引
查看表结构
mysql> desc person;
修改表
添加记录
添加一个字段,用于保存图片路径
修改字段
删除字段
修改表名
to:可以省掉
删除表
数据类型
tinyint类型
bit类型
bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
#发现很怪异的现象,a的数据10没有出现,bit的数据是按照ASCII码对应的值显示的。
小数类型
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
decimal和float很像,但是有区别: float和decimal表示的精度不一样
字符串类型
char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字 节数是65532。
当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占 用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符 占用2字节)。
日期和时间类型
date :日期 'yyyy-mm-dd' ,占用三字节
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用 四字节(插入时自动更新当前的时间戳)
enum和set
enum:枚举,“单选”类型;(下标从1开始)
set:集合,“多选”类型;(类似于位图)
集合查询使用find_ in_ set函数:
find_ in_ set只支持查询一个元素是否存在于集合之中。