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