三、库的操作
3.1 创建数据库
创建数据库的语法格式:
CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name;其中大写单词为关键字,[ ]内为可选项。
CHARACTER SET指定数据库采用的字符集,COLLATE指定字符集的校验规则。
创建示例:
-- 创建名为db1的数据库,使用默认字符集和校验规则 create database db1; -- 创建使用utf8字符集的db2数据库 create database db2 charset=utf8; -- 创建使用utf8字符集并指定校对规则的db3数据库 create database db3 charset=utf8 collate utf8_general_ci;未指定字符集和校验规则时,系统默认使用utf8字符集,校验规则为utf8_general_ci。
3.2 字符集与校验规则
字符集控制数据用什么语言编码,比如utf8可以存储中文。
校验规则则影响字符串的比较和排序行为。
查看系统默认字符集和校验规则:
show variables like 'character_set_database'; show variables like 'collation_database';查看数据库支持的字符集和校验规则:
show charset; show collation;校验规则对查询和排序有直接影响。
以utf8_general_ci(不区分大小写)和utf8_bin(区分大小写)为例:
-- 不区分大小写的数据库 create database test1 collate utf8_general_ci; use test1; create table person(name varchar(20)); insert into person values('a'),('A'),('b'),('B'); -- 区分大小写的数据库 create database test2 collate utf8_bin; use test2; create table person(name varchar(20)); insert into person values('a'),('A'),('b'),('B');在test1中执行select * from person where name='a',会返回a和A两条记录
在test2中执行同样的查询,仅返回a一条记录
排序时,test1的结果为a、A、b、B,而test2按ASCII码排序,结果为A、B、a、b
3.3 数据库管理与备份恢复
查看所有数据库:
show databases;查看某数据库的创建语句:
show create database 数据库名;修改数据库的字符集或校验规则:
alter database 数据库名 charset=gbk;删除数据库:
drop database 数据库名;数据库备份使用mysqldump工具,在命令行中执行:
mysqldump -P3306 -u root -p密码 -B 数据库名 > 备份文件路径恢复数据时,先登录MySQL,再使用source命令:
source 备份文件路径;若只需备份单张表,可在数据库名后指定表名;同时备份多个数据库时,用-B参数后接多个数据库名。
查看当前数据库的连接情况:
show processlist;该命令可以显示当前有哪些用户在连接、执行什么操作,有助于排查连接占用问题。
四、表的操作
4.1 创建表
创建表的语法格式:
CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;field为列名,datatype为列的数据类型,
字符集和校验规则未指定时,以所在数据库的设置为准。
创建表示例:
create table users ( id int, name varchar(20) comment '用户名', password char(32) comment '密码是32位的md5值', birthday date comment '生日' ) character set utf8 engine MyISAM;不同的存储引擎,创建表后在磁盘上生成的文件有所不同。
MyISAM引擎的表会生成三个文件:.frm存储表结构,.MYD存储表数据,.MYI存储表索引。
4.2 查看表结构
使用desc命令查看表结构:
desc users;输出结果中各列的含义:
Field表示字段名字
Type表示字段类型
Null表示是否允许为空
Key表示索引类型
Default表示默认值
Extra表示扩充信息
4.3 修改表
在项目开发中,经常需要调整表结构,比如添加字段、修改字段类型或删除字段。
先向表中插入两条测试数据:
insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-04');(1)添加字段
在birthday字段后添加一个assets字段用于保存图片路径:
alter table users add assets varchar(100) comment '图片路径' after birthday;新增字段后,原有数据不受影响,新字段的值为NULL。
(2)修改字段类型
将name字段的长度从20改为60:
alter table users modify name varchar(60);(3)删除字段
删除password列,删除操作会同时移除该列的所有数据,执行前建议确认:
alter table users drop password;(4)修改表名
alter table users rename to employee;其中to关键字可以省略。
(5)修改字段名
将name列改名为xingming,change关键字需要完整定义新字段:
alter table employee change name xingming varchar(60);4.4 删除表
删除表的语法:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...;示例:
drop table t1;删除表会同时移除表结构和所有数据,操作前建议做好备份。