第四章 管理mysql库与表
1.配置好一套mysql数据库服务后,系统会默认创建4个库
1). information_schema: 记录用户,表,视图等元数据信息,这个库在内存中,也就是在磁盘上找不到对应的物理内存,因此它是虚拟的。那么用户也无噶在改库下创建对象,root也不行对于该库,用户唯一能做的事情就是查询。该库中的对象在用户权限上面特别。
2). mysql: 记录用户权限,帮助,日志等信息
3). performance_schema: mysql 服务性能指标库
4). test: 测试库
2.删除
drop {database| schema } [IF EXISTS ] db_name
drop database test;
drop database if exists test;
drop tables if exists users;
3.创建库
create {database|schema} [if not exists] db_name [default ] character set charset_name [default] collate collation_name;
create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
show create database yang; 查看数据库字符集
select * from information_schema.schemata; 查看数据库里面的所有库的,字符集
4.创建表
create table if not exists yang.users
(username varchar(10),
sex tinyint,
birth date,
address varchar(50),
phoneno varchar(15));
select database(); show tables 一样
Field 显示列名
type 显示列的数据类型
Null 标识该列是否可以为空,显示NO表示不能为空,否则就是允许为空
key 标识该列是主键列或索引列 为空的话表示该列上没有创建任何索引
default 用于显示该列的默认值,为空表示没有默认值
extra 用于显示一些额外的附加信息,比如该列如果为自增列,则会显示为 auto_increment; 对于timestamp列如果定义了 on update 选项,则此处也会显示相应的关键字
5.修改表
ALTER table users add(email varchar(50),salary smallint); 增加
alter table users drop salary; 删除
alter table tab_name change col_name new_col col_definition; #修改列名,修改列定义
alter table tab_name modify col_name col_definition; #修改定义
alter tables users change username user_name varchar(20);
alter tables users modify user_name varchar(10);
alter table users add email varchar(50), modify username varchar(20);
6.引擎
引擎: MyISAM InnoDB
MyISAM 存储引擎的表对象,完全可以通过删除操作系统层物理文件的方式删除表
InnoDB 引擎中的表对象分为(共享表空间方式存储) 和 (独立表空间方式存储)
共享表空间方式存储: 不能以删除文件的方式删表的
独立表空间方式存储:可以通过删除操作系统层物理文件的方式删除,但不建议选择这种方式,可能留下一些隐患,因为InnoDB 引擎的表对象,某些信息是必定会写在数据字典中的,只在操作系统成删除文件并不会清除数据字典中的信息,也许会在某些场景下触发异常
7.把一个库移到另外一个库 rename table
rename table tb1_name to new_tb1_name