mysql DDL数据定义语言
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数据定义语言的更多相关文章
- DDL数据定义语言
DDL数据定义语言 (一)概述 DDL(Data Definition Language):数据定义语言,用来定义数据库对象,库.表.列等:创建.删除.修改 库,表结构.主要分为操作数据库的DDL和操 ...
- oracle学习笔记(三) DCL 数据控制语言与 DDL 数据定义语言
DCL 数据控制语言 Data control language 之前说过的授权和收权利语句 grant, revoke DDL 数据定义语言 Data define language create ...
- sql 两大类 DDL数据定义语言 和DCL数据控制语言
SQL分为五大类: DDL:数据定义语言 DCL:数据控制语言 DML:数据的操纵语言 DTL:数据事务语言 DQL:数据查询语言. DDL (date definition lang ...
- Hive 官方手册翻译 -- Hive DDL(数据定义语言)
Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...
- 【MySQL】DDL数据定义语言的基本用法create、drop和alter(增删改)
DDL 的基础语法 文章目录 DDL 的基础语法 对数据库进行定义 对数据表进行定义 创建表结构(数据表) 设计工具 修改表结构 小结 参考资料 简单复习一波 SQL必知必会 DDL 的英文全称是 D ...
- MySQL之数据定义语言(DDL)
写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写. SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition L ...
- Oracle language types(语言种类) 表的相关操作 DDL数据定义语言
数据定义语言 Data Definition Language Statements(DDL)数据操纵语言 Data Manipulation Language(DML) Statements事务控制 ...
- MySQL之DDL数据定义语言:库、表的管理
库的管理 常用命令 #创建库 create database if not exists 库名 [ character set 字符集名]; create database if not exists ...
- DDL 数据定义语言
目录 创建数据库(CREATE) 删除数据库(DROP) 修改数据库(ALTER) 创建数据表(CREATE) 数据表的数据属性 数据类型属性(Type) 其他属性(Null,Key,Default, ...
随机推荐
- 比特币场外otc交流群908389290
比特币场外otc交流群908389290,欢迎加入交流讨论-
- java拼接字符串、格式化字符串方式
1.代码 //+ String arg0 = "Bob"; String arg1 = "Alice"; System.out.println("he ...
- 【NPDP笔记】第三章 新产品流程
3.1 产品开发,风险与汇报的过程,开发实践和流程提升成功率 管控新产品失败的风险,随着成本增加,风险降低 知识能改改进决策,降低风险,决策框架 识别问题与机会 收集信息 组织记录,组织员工 外部 ...
- 启动Tomcat时报异常org.apache.catalina.core.ContainerBase.startInternal A child container failed during start
之前Tomcat一直运行正常,重启之后一直报以下错误信息: 13-Jun-2019 19:46:13.000 SEVERE [Catalina-startStop-1] org.apache.cata ...
- 使用docker-compose快速搭建gitlab
1. 准备工作: centos7 [root@dev_vonedao_95 gitlab]# docker -v Docker version , build 633a0ea [root@dev_vo ...
- MySQL高级 之 order by、group by 优化
参考: https://blog.csdn.net/wuseyukui/article/details/72627667 order by示例 示例数据: Case 1 Case 2 Case 3 ...
- 53 容器(八)——TreeMap 红黑树
红黑树是比较难以理解的一种数据结构.它能从10亿数据中进行10几次比较就能查找到需要的数据.效率非常高. 理解起内部结构也难. 现阶段我们知道有这种东西就行了. 参考文章: https://www.j ...
- C语言 小球撞击反弹
计算法(略) #include <stdio.h> #include <stdlib.h> int main() { int x, y, a, resu; scanf(&quo ...
- CF891E Lust 生成函数
传送门 设在某一次操作之后的\(a\)数组变为了\(a'\)数组,那么\(\prod\limits_{i \neq x} a_i = \prod a_i - \prod a_i'\).那么就不难发现我 ...
- java Unicode和UTF-8之间转换
utf-8转unicode public static String utf8ToUnicode(String inStr) { char[] myBuffer = inStr.toCharArray ...