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, ...
随机推荐
- ContentProvider数据库共享之——实例讲解
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/harvic880925/article/details/44591631 前言:现在这段时间没这 ...
- 关于Android Studio3.2新建项目无法运行出现Failed to find Build Tools revision 28.0.3的解决方法
关于Android Studio3.2新建项目无法运行出现Failed to find Build Tools revision 28.0.3的解决方法 https://blog.csdn.net/h ...
- 如何防止Hangfire重复作业在连续执行30分钟后重新启动(How to prevent a Hangfire recurring job from restarting after 30 minutes of continuous execution)
var options = new SqlServerStorageOptions { InvisibilityTimeout = TimeSpan .FromMinutes(30)//默认值}; G ...
- django中安全sql注入等
模拟sql注入 使用原生sql语句编写login登录逻辑 class LoginUnsafeView(View): def get(self, request): return render(requ ...
- java Random 随机密码
/** * Created by xc on 2019/11/23 * 生成随机密码:6位数字 */public class Test7_4 { public static void main(Str ...
- 【NPDP笔记】第六章 市场研究
6.1 产品市场研究 客户心声Voice of Customer,为了找出问题的解决方法,引导消费者经历一系列的情景并进行结构化的深度访谈,以提炼客户需求的过程 在产品开发决策中,需要获取的信息 ...
- Java 8并行流的性能陷阱
并行化流被分成多个块,每个块独立处理,结果在最后汇总. CPU密集型代码如下: private long countPrimes(int max) { return range(1, max) ...
- 【MongoDB学习之五】Java中使用MongoDB
环境 MongoDB 3.0 CentOS6.5_x64 相关jar:mongo-java-driver-3.0.0.jar package com.mongodb; import java.util ...
- ifcopenshell在VS2015下的编译
源起 今天使用 IfcOpenShell的IfcConvert ,因为是开源的所以就想自己编译下,编译过程中遇到不少问题,因此记录下来 什么是IfcOpenShell? IfcOpenShell是一个 ...
- phpmyadmin 显示被隐藏的表
点击后,会把这个表隐藏掉.有时候误点会莫名其妙. 点击数据库上的眼睛,能够显示被隐藏的表.