MySQL中的表对象是基于库维护的,表属于某个库,不管对象是由谁创建的,只要库在,表就在。每个MySQL数据库都是由多个数据库组成的(一经创建,默认至少就得有4个),而Oracle中的数据库则是一个整体。
information_schema:记录用户、表、视图等元数据信息,提供类似oracle数据字典的功能,类似于oracle数据库中的system表空间。是虚拟出来的库,由mysql实例构建和维护,对象保存在内存中,在磁盘上找不到对应的物理存在。对于该库,用户唯一能做的事情就是查询。
mysql:记录用户权限、帮助、日志等信息,提供类似oracle数据字典的功能,类似于oracle中的system和sysaux表空间。
performance_schema:MySQL服务性能指标库,提供类似oracle数据库中v$类视图和数据字典功能。
运行于Linux/UNIX环境中的MySQL服务,对于库名是大小写敏感的。
查看当前存在的数据库
(system@localhost) [(none)]> show databases;
删除test库
(system@localhost) [(none)]> drop database test;
(system@localhost) [(none)]> drop database if exists test;
查询警告信息
(system@localhost) [(none)]> show warnings;
创建数据库
(system@localhost) [(none)]> create database test;
(system@localhost) [(none)]> show create database mysql;
MySQL中的数据库就是个操作系统层的目录,不管使用MySQL中的CREATE DATABASE命令创建,还是在操作系统层手动执行命令创建目录,其效果是相同的。区别是有一个db.opt文件,/data/mysqldata/3306/data/test/db.opt,该文件中仅有两行内容,分别指定该数据库默认的字符集和校对规则
(system@localhost) [(none)]> select SCHEMA_NAME,DEFAULT_CHARACTER_SET_NAME,
DEFAULT_COLLATION_NAME from information_schema.schemata;
+--------------------+----------------------------+------------------------+
| SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+--------------------+----------------------------+------------------------+
| information_schema | utf8 | utf8_general_ci |
| mysql | utf8 | utf8_general_ci |
| performance_schema | utf8 | utf8_general_ci |
| test | utf8 | utf8_general_ci |
+--------------------+----------------------------+------------------------+
数据库默认字符集和校对规则
(system@localhost) [(none)]> use mysql;
(system@localhost) [mysql]> show tables;
(system@localhost) [mysql]> help create table;
查看表中列
(system@localhost) [mysql]> desc mysql.db;
(system@localhost) [mysql]> show columns from mysql.db;
MySQL数据库特殊的存储引擎机制,创建表对象时可以指定不同的存储引擎
查看索引
(system@localhost) [mysql]> show index from mysql.db;
获取mysql.db对象的创建脚本
(system@localhost) [mysql]> show create table mysql.db;
(system@localhost) [mysql]> help alter table;
(system@localhost) [mysql]> alter table users change username username1 varchar(10);
(system@localhost) [mysql]> alter table users modify username varchar(20);
对于InnoDB存储引擎每次执行表结构的变更相当于整表重建。