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. C# RSA 无 长度限制 加密解密 示例

    RSA 是一种非对称加密算法.由于算法特性,加密和解密过程用不同密钥,即公钥和私钥,而被广泛应用于数字证书的安全管理. 在具体应用中,公钥用加密而私钥用于解密,或 私钥用于数字签名而公钥用于签名验证. ...

  2. unix_timestamp 时间戳函数用法(hive)

    pandas和SQL数据分析实战 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&sha ...

  3. Scrapy爬虫Demo 爬取资讯分类

    爬取新浪网导航页所有下所有大类.小类.小类里的子链接,以及子链接页面的新闻内容. 效果演示图: items.py import scrapy import sys reload(sys) sys.se ...

  4. spring与springMVC的父子容器关系

    背景和概述 在spring与springMVC中通过IOC可以管理bean对象,有两个配置文件可以配置ioc spring的配置文件applicationContext.xmlspringMVC的配置 ...

  5. EasyDSS高性能流媒体服务器开发RTMP直播同步输出HLS(m3u8)录像功能实现时移回放的方案

    EasyDSS商用流媒体服务器解决方案是由EasyDarwin开源团队原班人马开发的一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,支持RTMP推流 ...

  6. (十二)springboot中shiro的使用

    一.引入maven配置 <dependency>     <groupId>org.apache.shiro</groupId>     <artifactI ...

  7. 为什么var可以重复声明

    总结自:https://blog.csdn.net/DurianPudding/article/details/87953939 一言以蔽之:编辑器会在作用域判断这是重名声明时,忽略var直接赋值 首 ...

  8. 查看linux操作系统

    cd /etc ll *release -rw-r--r-- 1 root root 38 Oct 8 2018 centos-release -rw-r--r-- 1 root root 393 O ...

  9. git中配置的.gitignore不生效的解决办法

    通常我们希望放进仓库的代码保持纯净,即不要包含项目开发工具生成的文件,或者项目编译后的临时文件.但是,当我们使用git status查看工作区状态的时候,总会提示一些文件未被track.于是,我们想让 ...

  10. spark sc.textFile() 指定换行符

    直接上代码 package com.jason.spark23 import org.apache.spark.sql.SparkSession import org.apache.spark.Spa ...