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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值