Mysql dml 数据定义语言

表结构操作

  1. * 创建数据库
  2. CREATE DATABASE `test_demo` /*!40100 DEFAULT CHARACTER SET utf8 */
  3. CREATE DATABASE IF NOT EXISTS test_demo DEFAULT CHARACTER SET utf8mb4 collate utf8_general_ci;;
  4. * 创建表
  5. CREATE TABLE `demo_test` (
  6. `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  7. `db_name` char(20) NOT NULL DEFAULT '' COMMENT '数据库名',
  8. `tb_name` char(20) NOT NULL DEFAULT '' COMMENT '数据表名',
  9. `im_type` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '导入方式',
  10. `is_snapshot` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否快照',
  11. `is_delete` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否删除',
  12. `CREATE_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建日期',
  13. PRIMARY KEY (`id`),
  14. KEY `idx_qy` (`db_name`,`tb_name`,`is_delete`)
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  16. * 复制表
  17. CREATE TABLE t2 like t1; //创建表复制t1数据结构
  18. insert into t2 select * from t1; //把t1表数据放入t2表中
  19. * 字段操作
  20. 表开头添加自增主键
  21. ALTER TABLE `test`
  22. ADD `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
  23. 表结尾添加字段
  24. ALTER TABLE `test` ADD `t` VARCHAR( 255 ) NOT NULL DEFAULT ''
  25. 某个位置添加字段
  26. ALTER TABLE
  27. `test`
  28. ADD t_1 varchar(255) NOT NULL DEFAULT '' AFTER a,
  29. ADD t_2 varchar(255) NOT NULL DEFAULT '' AFTER t_1;
  30. 删除字段
  31. ALTER TABLE `user_movement_log`
  32. DROP column `Gatewayid`,
  33. DROP column `Gatewayi2`;

* 索引

  • 3个索引中只能用一种索引
  1. - 主键联合索引,不允许重复
  2. PRIMARY KEY (`date_INDEX`,`class_id`,`city_id`,`item_id`),
  3. - 索引
  4. KEY `idx_item_id` (`item_id`),
  5. - 联合索引
  6. KEY `idx_class_item` (`class_id`,`item_id`)
  7. //创建表时的索引
  8. CREATE TABLE `cms_topic_tags` (
  9. `id` int(10) NOT NULL AUTO_INCREMENT,
  10. `city_id` int(10) NOT NULL DEFAULT '0' COMMENT '城市',
  11. -- 主键索引
  12. PRIMARY KEY (`id`),
  13. -- //联合索引
  14. KEY `city_id` (`city_id`,`identifier`(25))
  15. -- 单个字段的索引建议 用跟字段名相同的名字 ,25表示索引的长度。字符串
  16. KEY `id` (`id`(25))
  17. ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
  18. //创建表时, 添加索引
  19. CREATE INDEX 索引名 ON 表名(字段名1,字段名2
  20. CREATE INDEX idx_ac_st ON app_users(account(11),is_del)
  21. //修改表时, 增加索引
  22. -- 普通和联合索引
  23. ALTER TABLE 表名 add INDEX 索引名 (字段1,字段2) ;
  24. -- 唯一索引
  25. ALTER TABLE 表名 add UNIQUE (字段) ;
  26. -- 主键索引
  27. ALTER TABLE 表名 add PRIMARY KEY (字段) ;
  28. -- 案例
  29. ALTER TABLE `app_user_advertisement` ADD INDEX idx_aaa( `users_id` ) 添加索引
  30. ALTER TABLE `app_users` ADD UNIQUE (`account`)
  31. //删除索引
  32. ALTER TABLE 表名 DROP INDEX 索引名;
  33. DROP INDEX 索引名 ON 表名 ;

* 存储过程

  • 预先定义好SQL语句,在使用是调用存储过程
  • 调用存储过程
    • EXECUTE 存储过程名

* 触发器(DML和DDL触发器)

  • 当表中出现增、删、改时,执行的SQL语句

* 游标

  • 对查找出的结果集进行逐行处理