DDL
全称:数据库定义语言(Data Definition Language)。
定义了数据段、数据库、表、字段、索引等数据对象,主要操作有 CREATE
、DROP
、ALTER
。
创建一个数据库
关于
collation
有一篇文章《MySQL中character set与collation的点滴理解》,写的还是蛮好的,就是有些错别字。
CREATE DATABASE `test_db` CHARACTER SET utf8 COLLATE utf8_unicode_ci;
删除一个数据库
DROP DATABASE `test_db`;
重命名数据库
嗯,这没有直接的命令来做这件事,在网上找了一篇文章《MySQL中数据库重命名》,里面介绍了三种重命名的方法。个人觉得应该靠谱,没有尝试。
查看数据库列表
SHOW DATABASES;
使用一个数据库
USE DATABASE;
创建一张表
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL DEFAULT '',
`year` int(11) unsigned NOT NULL DEFAULT '0',
`month` int(11) unsigned NOT NULL DEFAULT '1',
`day` int(11) unsigned NOT NULL DEFAULT '1',
`sex` enum('male','female') NOT NULL DEFAULT 'male',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
查看表的创建语句
# 以表格的形式展现
SHOW CREATE TABLE `users`;
# 以行的形式展现
SHOW CREATE TABLE `users` \G;
删除一张表
DROP TABLE `users`;
重命名表
单张表的重命名:
ALTER TABLE `users` RENAME `user`;
RENAME `users` TO `user`;
也可以批量重命名表:
RENAME `users` TO `user`, `grades` TO `grade`;
添加字段
ALTER TABLE `users` ADD COLUMN `grade` tinyint(8) unsigned NOT NULL DEFAULT '1';
删除字段
ALTER TABLE `users` DROP COLUMN `grade`;
修改字段属性
ALTER TABLE `users` MODIFY COLUMN `month` tinyint(8) unsigned NOT NULL DEFAULT '1';
修改字段名
ALTER TABLE `users` CHANGE COLUMN `name` `nickname` varchar(10) NOT NULL DEFAULT '';
字段排序
ALTER TABLE `users` MODIFY COLUMN `sex` enum('male','female') NOT NULL DEFAULT 'male' FIRST;
ALTER TABLE `users` MODIFY COLUMN `sex` enum('male','female') NOT NULL DEFAULT 'male' AFTER `name`;