库的基本操作
1.show variables like 'character_set_database'
查看系统默认的字符集,若是指定数据库下使用该SQL,则查看的是该数据库对应的字符集。
2.show variables like 'collation_database'
查看系统默认的字符集校验规则,指定数据库下使用该SQL,则查看的是该数据库对应的字符集校验规则。
3.show database
查看数据库
4.show create database 数据库名
显示创建语句
5. create database b3 charset=utf8 collate=utf8_general_ci;
创建数据库时通过charset和collate分别指明数据库的编码格式和校验规则,charset=utf8,也可以写成character set=utf8或character set utf8。SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci。
6.show charset
查看数据库支持的字符集
7.show collation
查看数据库支持的字符集校验规则
8.修改数据库,
对数据库的修改主要指的是修改数据库的字符集或校验规则。
9.删除数据库
删除数据库后,该数据库下的所有表也都会被级联删除
10.数据库备份恢复
mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名1 数据库名2 ... > 数据库备份存储的文件路径
恢复:source 数据库备份存储的文件路径
11.查看连接情况
Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。
User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内的SQL语句。
Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。
db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
Time列:表示该线程处于当前状态的时间,单位是秒。
State列:显示使用当前连接的SQL语句的状态。
Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist
表的基本操作
创建表
CREATE TABLE [IF NOT EXISTS] table_name(
field1 datatype1 [COMMENT '注释信息'],
field2 datatype2 [COMMENT '注释信息'],
field3 datatype3 [COMMENT '注释信息']
)[CHARSET=charset_name] [COLLATE=collation_name] [ENGINE=engine_name];
- SQL中大写的表示关键字,[ ]中代表的是可选项。
- field表示列名,datatype表示列的类型。
- CHARSET用于指定表所采用的编码格式,如果没有指定则以所在数据库的编码格式为准。
- COLLATE用于指定表所采用的校验规则,如果没有指定则以所在数据库的校验规则为准。
- ENGINE用于指定表所采用的存储引擎。
- COMMENT用于对指定列添加注释信息。
查看表
例如:desc 查看表结构
补充:表创建完毕后在数据库的数据存储路径下的lesson1目录中,就会对应增加三个文件
采用不同的存储引擎,创建表时所产生的文件不一样。
采用InnoDB存储引擎建表,会产生对应的xxx.frm(表结构)和xxx.ibd(表数据+表索引)文件。
采用MyISAM存储引擎建表,会产生对应的xxx.frm(表结构)、xxx.MYD(表数据)和xxx.MYI(表索引)文件。
show create table 表名,可以查看创建表时的相关细节
修改表
ALTER TABLE table_name ADD 新增列名 新增列的属性;
ALTER TABLE table_name MODIFY 列名 修改后的列属性;
ALTER TABLE table_name DROP 列名;
ALTER TABLE table_name RENAME [TO] 新表名;
ALTER TABLE table_name CHANGE 列名 新列名 新列属性;
原始表结构:
1.新增列
新增列SQL中的after表示将该列新增到哪一列之后,将新增的列放到第一列,可以将after及其之后的SQL换成not null first
。
2.修改列属性
3.修改列名
4.修改表名
5.删除列
删除表
DROP [TEMPORARY] TABLE [IF EXISTS] table_name;