文章目录

  • 前言
  • 一、DDL语句简述
  • 二、数据库操作
  • 三、表操作
    • 1.创建表
    • 2.查看表
    • 3.修改表
  • 总结

前言

本篇主要总结MySQL的数据库操作,表操作方面的常用DDL(Data Definition Language)语句。


一、DDL语句简述

DDL是数据定义语言的缩写,简单来说就是对数据库内部的对象进行创建、删除、修改等操作的语句。它和DML(Data Manipulation Language)语句最大的区别是DML只是对表内部的数据进行操作,而不涉及表的定义、结构的修改。

二、数据库操作

-- 创建数据库
create database dbname;
-- 查看数据库;
show databases;
-- 使用指定数据库
use dbname;
-- 删除数据库
drop table dbname;

三、表操作

1.创建表

-- 创建表
create table emp (ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2)
);
-- 快速创建一个表结构相同的表
CREATE TABLE new_tablename LIKE old_tablename;
-- 创建表时增加索引
CREATE TABLE actor (actor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,first_name VARCHAR(45) NOT NULL,last_name VARCHAR(45) NOT NULL,last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY  (actor_id),KEY idx_actor_last_name (last_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建表时增加外键
CREATE TABLE city (city_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,city VARCHAR(50) NOT NULL,country_id SMALLINT UNSIGNED NOT NULL,last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY  (city_id),KEY idx_fk_country_id (country_id),CONSTRAINT `fk_city_country` FOREIGN KEY (country_id) REFERENCES country (country_id) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在创建索引时, 可以指定在删除、更新父表时,对子表进行的相应操作,包括 RESTRICTCASCADESET NULLNO ACTION

  • RESTRICTNO ACTION 是指限制在子表有关联记录的情况下, 父表不能更新,RESTRICT为默认行为;
  • CASCADE表示父表在更新或者删除时,更新或者删除子表对应的记录;
  • SET NULL 则表示父表在更新或者删除的时候,子表的对应字段被SET NULL

2.查看表

-- 查看表
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| ename    | varchar(10)   | YES  |     | NULL    |       |
| hiredate | date          | YES  |     | NULL    |       |
| sal      | decimal(10,2) | YES  |     | NULL    |       |
| deptno   | int(2)        | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
mysql> show create table emp \G;
*************************** 1. row ***************************Table: emp
Create Table: CREATE TABLE `emp` (`ename` varchar(10) DEFAULT NULL,`hiredate` date DEFAULT NULL,`sal` decimal(10,2) DEFAULT NULL,`deptno` int(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
-- 删除表
DROP  TABLE tablename;
drop table emp;

3.修改表

-- 修改表名ALTER TABLE tablename RENAME[TO] new_tablename;
-- 将表名emp改为emp1
ALTER TABLE emp rename emp1;-- 修改字符集
ALTER TABLE tablename character set 字符集;
ALTER TABLE student character set utf8;
-- 修改表类型
ALTER TABLE tablename MODIFY[COLUMN] column_definition[FIRST|AFTER col_name];
-- 修改emp的ename字段定义,将varchar(10)改为varchar(20)
alter table emp modify ename varchar(20);-- 增加表字段
ALTER TABLE tablename add[COLUMN]column_definition[FIRST|AFTER col_name];
-- 向emp中新增字段age,类型为int(3)
alter table emp add column age int(3);-- 删除表字段
ALTER TABLE tablename DROP[COLUMN]col_name;
-- 将字段age删除
alter table emp drop age;-- 字段改名
ALTER TABLE tablename CHANGE[COLUMN] old_col_name new_col_name column_definition;
-- 将age改为age1 同时类型由int(3) 改为int(4)
alter table emp change age age1 int(4);-- 修改字段排列顺序
-- 将新增字段birth date 加在ename之后
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| ename    | varchar(20)   | YES  |     | NULL    |       |
| hiredate | date          | YES  |     | NULL    |       |
| sal      | decimal(10,2) | YES  |     | NULL    |       |
| deptno   | int(2)        | YES  |     | NULL    |       |
| age      | int(4)        | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
mysql> alter table emp add birth date after ename;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| ename    | varchar(20)   | YES  |     | NULL    |       |
| birth    | date          | YES  |     | NULL    |       |
| hiredate | date          | YES  |     | NULL    |       |
| sal      | decimal(10,2) | YES  |     | NULL    |       |
| deptno   | int(2)        | YES  |     | NULL    |       |
| age      | int(4)        | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
-- 将age移到ename后面
alter table emp modify age int(3) after ename ;-- 修改外键
--  或者修改
alter table city_innodbdrop foreign key fk_city_country;
alter table city_innodbadd CONSTRAINT `fk_city_country` foreign key (`country_id`)references country_innodb (country_id) on delete restrict on update cascade;

CHANGE/FIRST|AFTER COLUMN这些关键字属于MySQL在标准sql中的扩展,在其他数据库中不一定适用


总结

笔者在实际开发中,经常要查询关于表操作的语句。最后决定整理一份属于自己的笔记。

MySQL常用DDL语法总结相关推荐

  1. mysql+group+desc_lt;导图gt;Mysql常用查询语法

    普通查询 查看整个表格式:select * from 表名; 示例:select * from students; 查询指定字段格式select 字段名1,字段名2 from 表名; 示例select ...

  2. mysql常用DDL基本语法

    mysql表结构字段增删改操作和索引等,示例如下: 1.创建数据库语法,示例: [1]create database if not exists db_name character set = utf ...

  3. MySQL常用DDL

    增加字段: ALTER TABLE my_table ADD COLUMN my_column INTEGER AFTER my_column_0; 修改字段类型: ALTER TABLE my_ta ...

  4. MYSQL 常用 DDL

    目录 创建数据库 创建表 修改表 添加字段 删除字段 修改字段类型信息 修改字段默认值 修改字段名称 修改表名称 唯一索引 创建唯一索引 创建数据库 CREATE DATABASE IF NOT EX ...

  5. 【ChatGPT】输出MySQL常用语法汇总

    以下是MySQL常用的语法汇总: 创建数据库 CREATE DATABASE database_name; 删除数据库 DROP DATABASE database_name; 创建表 CREATE ...

  6. MYSQL常用语法命令,MySQL中delete,drop和alter分别是用来删除什么的?有什么区别?删除了以后可以恢复吗?

    1.Alter.Delete.Drop相关语法 a.Alter 删除,添加或重新定义列 删除列:alter table tablename drop columnname 增加列:alter tabl ...

  7. Mysql常用语法总结

    Mysql常用语法总结如下: #连接mysql数据库(Dos下面) mysql -u root -p 123 #创建数据库 create database myschool; #创建表 drop ta ...

  8. mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)

    MySQL常用的语句语法 注意:1. | 符号用来指出几个选中中的一个,因此NULL | NOT NULL 表示给出null 或 not null 2.包含在方括号中的关键字或子句是可选的(如 [li ...

  9. MySQL常用操作之创建存储过程语法详解

    MySQL常用操作之创建存储过程语法详解 前言 简介 语法 创建结构 变量结构 入参变量和出参变量 流程控制 判断(IF 语句) 判断(CASE 语句) 循环(LOOP 语句) 循环(WHILE 语句 ...

  10. MySQL的DDL、DML和DQL的基本语法

    定义:  SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一 种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统 ...

最新文章

  1. 浏览器端JS导出EXCEL
  2. linux下开放端口
  3. Annotation之二:@Inherited注解继承情况
  4. NIFI使用过程中的invalid component问题解决
  5. 通过NGINX location实现一个域名访问多个项目
  6. 破解keil 2k限制,注册码生成
  7. 说说Android的广播(4) - 前台队列为什么比后台队列快?
  8. 关于RecyclerView(一)基本使用
  9. 关于12306Bypass
  10. Godot 2D碰撞体节点
  11. 用python画图的好处_用Python绘图,感受编程之美
  12. 获取UI控件位置信息
  13. 基于php+mysql的学员量化考评系统
  14. 热点drcom 破解
  15. MyBatis为什么这么“屌”?这些MyBatis的秘密,分分钟吊打面试官
  16. 使用面阵相机进行传送带视频流的拼接
  17. 第2阶段 第12讲 XMLHTTP协议
  18. 架构道术-关于底层逻辑的一些思考
  19. 【Mybatis】mybatis如何实现分页
  20. 亲测快捷高效的编写测试用例方法

热门文章

  1. javascript一维数组的排序
  2. centos SSH免密登录
  3. BeanFactory和FactoryBean区别
  4. synchronized锁和lock锁 队列中线程执行顺序对比
  5. 遇到 no plugin found for prefix 'tomcat 7' in the current project and in the plugin groups 的解决办法
  6. Spring Cloud Alibaba Sentinel之热点参数限流篇
  7. ObReferenceObjectByName vs IoGetDeviceObjectPointer
  8. Mac009--Axure RP安装
  9. Ubuntu下面安装MySQL shell
  10. 排序的概念及分类实现