您的位置:首页 > 数据库 > MySQL

MySQL之数据库定义语言(DDL)

2017-02-20 23:58 621 查看
数据库定义语言Data Define Language(DDL)

1.创建数据库:

-- 语法:
CREATE DATABASE [IF NOT EXISTS] dbname [CHARACTER SET 'CHAR_NAME'] [COLLATE 'COLL_NAME'];
-- 示例:
CREATE DATABASE IF NOT EXISTS `user1` CHARACTER SET utf8;
-- 查看新建数据库的语句
SHOW CREATE DATABASE `user1`;
CREATE DATABASE `user1` /*!40100 DEFAULT CHARACTER SET utf8 */
-- 查看当前数据库拥有的database;
SHOW DATABASES;

2.修改数据库名称:

1). RENAME DATABASE db_name TO new_db_name
这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了。据说有可能丢失数据。

SELECT @@version;-- 当前数据库版本5.6.21-log

2).如果所有表都是MyISAM类型的话,可以改文件夹的名字
关闭mysqld

把data目录中的db_name目录重命名为new_db_name

开启mysqld
3). INNODB

1.按新名字建立一个数据库

2.删除原有库中所有表上的触发器

3.使用rename table命令将表从原数据库复制到新数据库

4.在新数据库上重新创建步骤2中被删除的触发器

5.在新数据库上重新创建存储过程、自定义函数、Events等

3.删除数据库:

drop database [if exists] dbname;

所有的数据表操作必须归属到某个数据库中的行为,在操作表前须指定操作的数据库:

use db_name;

4.新增数据表:

-- 语法:
CRTATE TABLE [IF NOT EXISTS] TBNAME(col_name col_definition,...) [ENGINE={MYISAM | INNODB }];
-- 示例:
CREATE TABLE `user1`(
id INT,
NAME VARCHAR(20),
age INT(3)
);
-- 显示创建当前表的SQL
-- show create table `user1`;
CREATE TABLE `user1` (
`id` INT(11) DEFAULT NULL,
`name` VARCHAR(20) DEFAULT NULL,
`age` INT(3) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8

show tables;-- 查看当前数据库的数据表清单

5.删除表:

drop table [if exists] table_name;

6.修改表名称:

ALTER TABLE `user1` RENAME TO `user2`;-- 此种方式的TO可省略
ALTER TABLE `user2` RENAME `user1`;

7.增加列:

1)在表的最后添加一个字段(默认添加到最后一个字段的后面):

ALTER TABLE `user1` ADD `remark` VARCHAR(200);

2)在中间某字段之后添加字段:

ALTER TABLE `user1` ADD `address` VARCHAR(100) AFTER `age`;

3)在第一个字段前增加字段:

ALTER TABLE `user1` ADD `fami_id` INT(11) FIRST;


-- 查看当前表脚本
-- SHOW CREATE TABLE `user1`;
CREATE TABLE `user1` (
`id` INT(11) DEFAULT NULL,
`name` VARCHAR(20) DEFAULT NULL,
`age` INT(3) DEFAULT NULL,
`address` VARCHAR(100) DEFAULT NULL,
`remark` VARCHAR(200) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8

8.删除列

ALTER TABLE `user1` DROP COLUMN `address`;
查看表结构:DESCRIBE `user1`;也可以简写为:DESC `user1`;

9.修改列名称:

-- 语法:
-- ALTER TABLE  table_name CHANGE [COLUMN] column_name column_new_name type [是否允许非空];
ALTER TABLE `user1` CHANGE `name` `user_name` VARCHAR(20);

这里必须带上数据类型,否则无法操作;

10.修改列的字段类型:

-- 语法:
-- ALTER TABLE table_name MODIFY column_name type [是否允许非空];
ALTER TABLE `user1` MODIFY remark VARCHAR(100);
change也可以修改字段类型,如果不修改列名时,column_name和columnu_new_name保持一致就行;
注意:

1.int型的字段可改为varchar;varchar对应字段如果列对应值全是数值也可修改为int,否则会报错;

2.以前以为int(3)只能保存最大值也就999事实并非如此,需要下去了解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息