DDL数据定义语言

本节涉及MySQL关键字:create、alter(rename,add,chang,modify,drop)、drop、delete、truncate等。

-- 创建表:
-- 数据类型:int,date,varchar(size),[ decimal(5,2),小数点后两位]
格式:create table tableName
               (
                  columnName datatype,
                  columnName datatype,
                  .......
);

拷贝表格:

格式 :  create table tableName
           as
           subquery;或者在subquery后加(where 1=2),表示只保留格式

创建表实例: create table supermarket
                         (
                            market_id int,
                            market_name varchar(50),
                            address varchar(200),
                            contact varchar(15),
                            manager int
                          );

拷贝表实例:create table supermarkets_copy
                 as
                 select *
                 from supermarkets;

-- 修改表:alter
       -- 修改表名
             格式:  alter table tableName
                             rename to new_tableName;

实例:   alter table supermarket

rename to supermarkets;

-- 添加列
            格式 : alter table tableName
                             add columnName defined [ FIRST | AFTER column_name ];
                       alter table tableName
                             add columnName defined [ FIRST | AFTER column_name ],
                             add columnName defined [ FIRST | AFTER column_name ],
                             ...;

实例:  alter table supermarkets

add kind int;

-- 修改列
        -- 修改列名
            格式:  alter table tableName
                            change column old_name new_name defined;

实例:  alter table supermarkets
                                 change kind category varchar(10);

-- 修改列定义
            格式:  alter table tableName
                              modify columnName new_defined [ FIRST | AFTER column_name ];
                      alter table tableName
                              modify columnName new_defined [ FIRST | AFTER column_name ],
                              modify columnName new_defined [ FIRST | AFTER column_name ],
                              ....;

实例: alter table supermarkets

modify category int;

-- 删除列

格式;   alter table tableName
                              drop column columnName;

实例: alter table supermarkets

drop column category;

-- 删除表
           格式: drop table tableName;

--删除表的内容,保留格式:

格式:delete from tableName;  后面可以加限制条件where1=2或1=1。

-- truncate: 清空表(删除后无法返回上一步)
                  格式:truncate table tableName;
                                 select * from emp;

-- 创建表上的约束
-- 主键约束:标志行的唯一性,只能有一个,而且不能为空
-- 外键约束:建立两张表的关联关系
-- 唯一约束:标志其唯一性,但数量不限的,可以为空
-- 非空约束:必填项

-- 默认

如果创建表的时候添加约束,可直接去掉alter语句

创建表上的约束, (主键,外键,唯一)约束用add constraint,

(非空,默认)约束用modify.

格式: alter table tableName
                                   add constraint_defination;
                     实例: alter table supermarkets
                                     drop primary key;

主键约束:  primary key

实例:alter table supermarkets
                                  add constraint pk_market_id primary key(market_id);

唯一约束: unique

实例: alter table supermarkets
                                  add constraint uq_market_name unique(market_name);

外键约束:foreign key
                     实例:  alter table emp
                                    add constraint fk_market_id foreign key (market_id)
                                    references supermarkets(market_id);

两个外键的约束实例:  add constraint fk_market_id_customer_id foreign key (market_id,customer_id)
                                    references supermarkets(market_id),customer(customer_id);

delete from supermarkets where market_id = 1; -- 维护数据的完整性

非空约束:not null

实例: alter table supermarkets
                                     modify market_name varchar(50) not null,
                                     modify address varchar(200) not null;

默认值:

实例:  alter table supermarkets
                                     modify market_name varchar(50) not null,
                                     modify address varchar(200) not null default '苏州店';

-- 视图
     -- 创建或者更新视图
             格式:-- create or replace view viewName
                     -- as
                     -- subquery;

实例: create view cust_view
                         as
                         select customer_id,customer_name,address,province,city,sale_employee_id,credit_limit
                         from customer;

select *
                         from cust_view;

实例: create or replace view purchase_view
                        as
                        select `order`.order_number,customer.customer_name,product.product_name,buy_number,format(order_detail.price,2)                                   fmt_price,format(order_detail.total_money,2) fmt_total_money
                        from `order`
                        left join order_detail on `order`.order_id = order_detail.order_id
                        left join customer on `order`.customer_id = customer.customer_id
                        left join product on order_detail.product_id = product.product_id;

select *
                        from purchase_view
                        where order_number = '321154103';

-- 删除视图
             格式:-- drop view [if exists] view_name;

实例:drop view if exists cust_view;

-- 现有一个商店的数据库,记录客户及其购物情况,由下面三个表组成:
-- 商品goods(商品号goodsId,商品名goodsName,单价unitprice,商品类别category,供应商provider);
-- 客户customer(客户号customerId,姓名name,地址address,电邮email,性别sex,身份证cardId);
-- 购买purchase(客户号customerId,商品号goodsId,购买数量nums);
-- 请用SQL语言完成下列功能:
-- 1. 建表,在定义中要求声明:
-- (1). 每个表的主外键;
-- (2). 客户的姓名不能为空值;
-- (3). 电邮不能够重复;
-- (4). 客户的性别默认是男;
create table goods
(
      goodsId int not null,
      goodsName varchar(50),
      unitprice decimal(5,2),
      category varchar(30),
      provider varchar(30),
      constraint pk_goodsId primary key(goodsId)
);

create table customer
(
      customerId int not null,
      name varchar(50),
      address varchar(200),
      email varchar(20),
      sex varchar(6),
      cardId varchar(20),
      constraint pk_customerId primary key(customerId)
);

create table purchase
(
      customerId int not null,
      goodsId int not null,
      nums int,
      constraint pk_customerId_goodsId primary key(goodsId,customerId),
      constraint fk_customerId foreign key(customerId)
      references customer(customerId),
      constraint fk_goodsId foreign key(goodsId)
      references goods(goodsId)
);

alter table customer
    modify name varchar(50) not null;

-- 约束
-- 主键:primary key
-- 外键:foreign key
-- 唯一:unique
-- 非空:not null

alter table customer
add constraint uq_email unique(email);

alter table customer
modify sex varchar(6) default '男';

mysql DDL数据定义语言的更多相关文章

  1. DDL数据定义语言

    DDL数据定义语言 (一)概述 DDL(Data Definition Language):数据定义语言,用来定义数据库对象,库.表.列等:创建.删除.修改 库,表结构.主要分为操作数据库的DDL和操 ...

  2. oracle学习笔记(三) DCL 数据控制语言与 DDL 数据定义语言

    DCL 数据控制语言 Data control language 之前说过的授权和收权利语句 grant, revoke DDL 数据定义语言 Data define language create ...

  3. sql 两大类 DDL数据定义语言 和DCL数据控制语言

    SQL分为五大类: DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言. DDL (date definition lang ...

  4. Hive 官方手册翻译 -- Hive DDL(数据定义语言)

    Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...

  5. 【MySQL】DDL数据定义语言的基本用法create、drop和alter(增删改)

    DDL 的基础语法 文章目录 DDL 的基础语法 对数据库进行定义 对数据表进行定义 创建表结构(数据表) 设计工具 修改表结构 小结 参考资料 简单复习一波 SQL必知必会 DDL 的英文全称是 D ...

  6. MySQL之数据定义语言(DDL)

    写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写. SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition L ...

  7. Oracle language types(语言种类) 表的相关操作 DDL数据定义语言

    数据定义语言 Data Definition Language Statements(DDL)数据操纵语言 Data Manipulation Language(DML) Statements事务控制 ...

  8. MySQL之DDL数据定义语言:库、表的管理

    库的管理 常用命令 #创建库 create database if not exists 库名 [ character set 字符集名]; create database if not exists ...

  9. DDL 数据定义语言

    目录 创建数据库(CREATE) 删除数据库(DROP) 修改数据库(ALTER) 创建数据表(CREATE) 数据表的数据属性 数据类型属性(Type) 其他属性(Null,Key,Default, ...

随机推荐

  1. 爬虫数据提取之JSON与JsonPATH

    数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...

  2. Ubuntu 上编译opencv_contrib模块for Android

    https://blog.csdn.net/ipfpm/article/details/81132144 [ubuntu]Ubuntu中Android SDK下载跟配置 android24的版本 (1 ...

  3. 使用 Laravel-Swagger 编写接口文档(php)

    使用 Laravel-Swagger 编写接口文档 Table of Contents Swagger 文档管理 官方网站:https://swagger.io/ 快速编写你的 RESTFUL API ...

  4. vue aes

    npm install crypto-js import CryptoJS from "crypto-js/crypto-js"; const KEY = CryptoJS.enc ...

  5. javafx这些学会后,开发就不难了,往tablecloumn列中添加按钮,修改javafx中tableview中tablecell中的值,修改完回车表示保存到内存中

    javafx开发过程中遇见难题,往tablecloumn列中添加按钮 想了很久的方法,也配有办法判断每行中有数据的地方添加按钮set bank_caozuo.setCellFactory((col)- ...

  6. PHP 字符串和十六进制互转

    今天在做项目中,因为要调用别人网站的接口,结果需要对请求和返回的时间进行十六进制加密处理,于是在网上查了下资料谢了一个转换Demo做个记录. 如果在TP下使用可以将下面函数放到common.php中 ...

  7. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件正式环境安装部署攻略

    背景介绍 EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持 ...

  8. Python模块学习filecmp文件比较

    Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于dif ...

  9. DNS与ARP协议

    DNS(domain name system) DNS的作用:将域名(如baidu.com)转换为IP地址 DNS的本质是:分层的DNS服务器实现的分布式数据库: 根DNS服务器 - com DNS服 ...

  10. 快速修改Windows系统密码命令

    因现场需要,要对30多台虚拟机进行密码修改.正常修改方式为进入控制面板--用户账户--修改密码,输入原始密码.2遍新密码(一遍用于密码确认)完成密码修改. 这种方式操作较为繁琐,我们可以直接通过命令的 ...