Mysql dml 数据定义语言
表结构操作
* 创建数据库 CREATE DATABASE `test_demo` /*!40100 DEFAULT CHARACTER SET utf8 */ CREATE DATABASE IF NOT EXISTS test_demo DEFAULT CHARACTER SET utf8mb4 collate utf8_general_ci;;* 创建表 CREATE TABLE `demo_test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `db_name` char(20) NOT NULL DEFAULT '' COMMENT '数据库名', `tb_name` char(20) NOT NULL DEFAULT '' COMMENT '数据表名', `im_type` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '导入方式', `is_snapshot` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否快照', `is_delete` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否删除', `CREATE_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建日期', PRIMARY KEY (`id`), KEY `idx_qy` (`db_name`,`tb_name`,`is_delete`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8* 复制表 CREATE TABLE t2 like t1; //创建表复制t1数据结构 insert into t2 select * from t1; //把t1表数据放入t2表中* 字段操作 表开头添加自增主键 ALTER TABLE `test` ADD `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST 表结尾添加字段 ALTER TABLE `test` ADD `t` VARCHAR( 255 ) NOT NULL DEFAULT '' 某个位置添加字段 ALTER TABLE `test` ADD t_1 varchar(255) NOT NULL DEFAULT '' AFTER a, ADD t_2 varchar(255) NOT NULL DEFAULT '' AFTER t_1; 删除字段 ALTER TABLE `user_movement_log` DROP column `Gatewayid`, DROP column `Gatewayi2`;
* 索引
- 主键联合索引,不允许重复 PRIMARY KEY (`date_INDEX`,`class_id`,`city_id`,`item_id`), - 索引 KEY `idx_item_id` (`item_id`), - 联合索引 KEY `idx_class_item` (`class_id`,`item_id`) //创建表时的索引 CREATE TABLE `cms_topic_tags` ( `id` int(10) NOT NULL AUTO_INCREMENT, `city_id` int(10) NOT NULL DEFAULT '0' COMMENT '城市', -- 主键索引 PRIMARY KEY (`id`), -- //联合索引 KEY `city_id` (`city_id`,`identifier`(25)) -- 单个字段的索引建议 用跟字段名相同的名字 ,25表示索引的长度。字符串 KEY `id` (`id`(25)) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 //创建表时, 添加索引 CREATE INDEX 索引名 ON 表名(字段名1,字段名2) CREATE INDEX idx_ac_st ON app_users(account(11),is_del) //修改表时, 增加索引 -- 普通和联合索引 ALTER TABLE 表名 add INDEX 索引名 (字段1,字段2) ; -- 唯一索引 ALTER TABLE 表名 add UNIQUE (字段) ; -- 主键索引 ALTER TABLE 表名 add PRIMARY KEY (字段) ; -- 案例 ALTER TABLE `app_user_advertisement` ADD INDEX idx_aaa( `users_id` ) 添加索引 ALTER TABLE `app_users` ADD UNIQUE (`account`) //删除索引 ALTER TABLE 表名 DROP INDEX 索引名; DROP INDEX 索引名 ON 表名 ;
* 存储过程
- 预先定义好SQL语句,在使用是调用存储过程
- 调用存储过程
* 触发器(DML和DDL触发器)
* 游标