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

来源:互联网 发布:要开淘宝网店怎么弄 编辑:程序博客网 时间:2024/04/30 04:51

数据库定义语言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事实并非如此,需要下去了解。

0 0