十一、DDL

简介: 十一、DDL

必备:DDL全称-Data Defination Language

数据定义语言:

create  、drop 、alter

1、创建表create

create table 表名(
  列名 数据类型,
    列名 数据类型,
    列名 数据类型,
    ....
    ....
)

2、修改表 alter

-- 1. 添加一个新的列,用户籍贯 hometown
alter table customer add cust_hometown varchar(50)
-- 2. 将用户名数据类型 改成 varchar(100)
alter table customer modify cust_name varchar(100) 
-- 3. 删除用户个人介绍cust_profile这一列
alter table cutstomer drop cust_profile
-- 4. 将表名改为note_customer
rename table customer to note_customer

3、删除表drop

drop table student;
有关的删除记录
-- 删除10部门
delete from dept where deptno = 10
-- 删除失败,原因在于在emp表中有在10部门的员工,所以不能删除
delete from dept where deptno = 50
-- 删除成功,原因在于在其他表中没有在10部门的员工,所以可以删除
--删除时的级联操作
--删除部门数据时候,对关联表emp 员工表 有什么影响?
emp 表中有外键 dept(deptno)
示例: 在emp表中有在10部门的员工,现在要删除10部门
(1)NO ACTION :不允许删除,也不报错,不提示
(2) RESTRICT : 不允许删除,会报错,提示在其他表中找到该记录
(3) SET NULL :允许删除,把emp中的员工所在部门编号设置为null 【前提:emp(deptno)允许为null】
(4) CASACDE : 级联删除,删除了10部门,在10部门的员工记录也删除了

约束 constraint

作用:为了保证数据的完整性于正确性,表中数据必须有约束

1、主键约束 primary key

用于唯一识别一条记录的字段(该主键可以是一个列,也可以是多个列-联合主键)

特征:

 (1)、唯一性

 (2)、非空性

identifier 身份识别

2、唯一性约束 unique

列的值 是唯一的

3、非空约束not null

列的值 不能为空

4、外键约束foreign key

b表中的某列 数据 来源于a 表中的某一列  ---胡老师讲的外键,关联

5、实战代码快

-- 1. customer : 必要约束,
数据的准确性、完整性
create table customer(
cust_id int primary key,  -- 主键
cust_name varchar(20) not null, -- 非空
cust_gender char default 'M'  COMMENT'用户性别',
cust_telno bigint  unique commit'用户手机号',
cust_pwd varchar(50) not null commit'用户密码',
cust_live_city varchar(50) commit'用户居住城市',
cust_birthday date commit'用户出生日期',
cust_profile varchar(255) commit'用户简介',
cust_main_img varchar(255)  -- 实际存放的是 图片的路径
constraint 
)  
-- 2. 用户的收件地址表 receive_address  : 必要约束
create table receive_address(
    rece_id int primary key, -- commit '主键id',
    rece_name varchar(20) not null, -- commit '收货人',
    rece_telno bigint unique, -- commit '收货人手机号',
    rece_resss varchar(50) -- commit '收货人地址'
    constraint fk_address_cutomer foreign key(customer_id) references mycustomer(cust_id)
)
-- 表中各加3条数据
insert into receive_address values(10,'张三',18888888888,'江苏省连云港'),(11,'李四',18888888887,'江苏省苏州'),(12,'王五',18888888886,'江苏省张家港')
主键约束:primary key
非空: not null
唯一性:unique
检查约束:check
外键约束:foreign key
主键自增:auto_increment

课外小知识

订单表设计案例

-- -----------------------订单表设计示例------------------------------------
(1)用户表 :customer
(2)商品表 :product
 (3) 收件地址: receive_address
(4)订单表: myorder
(5)订单详情表:order_detail
-- 用户表 :customer
create table customer(
  cust_id int  comment'用户id',
  cust_name varchar(20)   comment'用户名称',
  primary key (cust_id)
)
-- 商品表 product
create table product(
  pro_id int auto_increment comment'商品id',
  pro_name varchar(25) unique not null comment'商品名称',
  pro_price float comment'商品价格',
  pro_status int, -- 0 : 有效,1 无效
  primary key(pro_id)
)
-- 收件地址
 create table recevice_address(
  addr_id int comment '收件地址id',
  cust_id int  comment'用户id',
  add_province varchar(50) comment '收件省份',
  add_city varchar(50) comment '收件城市',
  add_area varchar(50) comment '收件区',
  add_details varchar(200) comment '收件详细地址' ,
  addr_status int ,
   primary key(addr_id),   
   constraint fk_address_customer foreign key(cust_id) references customer(cust_id) 
 )
-- 订单表: myorder
create table  myorder(
  order_id int auto_increment comment'订单id',
  order_time date comment'商品下单日期',
  cust_id int  comment'用户id',
  address_id int  comment '收件地址id',
  order_status int, -- 0 : 有效,1 无效
  primary key(order_id),
  constraint fk_product_customer foreign key(cust_id) references customer(cust_id)  ,
  constraint fk_product_address foreign key(address_id) references recevice_address(addr_id)  
)
-- 订单详情表:order_detail
create table order_detail(
  order_id int comment'订单id',
  pro_id int comment'商品id',
  quality int comment '商品数量',
  primary key(order_id,pro_id),   -- 联合主键
  constraint fk_detail_order foreign key(order_id) references myorder(order_id),
  constraint fk_detail_product foreign key(pro_id) references product(pro_id) 
)

课堂练习

-- DDL:数据定义语言 Date Definition Language
对表的结构修改:创建表create,修改表结构alter(添加一列,删除一列,列重命名,数据类型修改)
              删除整张表drop
char(1):M,F
char(20)   :定厂
varchar(20):不定长 
-- variable变量
个人简历:。。。。。。。。(纯文本字符) text ----在Java中而是String
二进制存储---blob
游记的内容(字符文本+图片,表情,视频,音乐)--longblob
评论(字符文本+图片,表情) --blob
-- 创建数据库 名:customer  
create table customer(
cust_id int,
cust_name varchar(20),
cust_gender char,
cust_live_city varchar(50),
cust_birthday date,
cust_profile varchar(255),
cust_main_img varchar(255) 
-- 实际存放的是 图片的路径
)
-- 插件直接转换 :custid,custName,custGender
-- 1. 添加一个新的列,用户籍贯 hometown
alter table customer add cust_hometown varchar(50)
-- 2. 将用户名数据类型 改成 varchar(100)
alter table customer modify cust_name varchar(100) 
-- 3. 删除用户个人介绍cust_profile这一列
alter table cutstomer drop cust_profile
-- 4. 将表名改为note_customer
rename table customer to note_customer
-- 1. customer : 必要约束,
数据的准确性、完整性
create table customer(
cust_id int primary key,  -- 主键
cust_name varchar(20) not null, -- 非空
cust_gender char default 'M'  COMMENT'用户性别',
cust_telno bigint  unique commit'用户手机号',
cust_pwd varchar(50) not null commit'用户密码',
cust_live_city varchar(50) commit'用户居住城市',
cust_birthday date commit'用户出生日期',
cust_profile varchar(255) commit'用户简介',
cust_main_img varchar(255)  -- 实际存放的是 图片的路径
constraint 
)  
-- 2. 用户的收件地址表 receive_address  : 必要约束
create table receive_address(
    rece_id int primary key, -- commit '主键id',
    rece_name varchar(20) not null, -- commit '收货人',
    rece_telno bigint unique, -- commit '收货人手机号',
    rece_resss varchar(50) -- commit '收货人地址'
    constraint fk_address_cutomer foreign key(customer_id) references mycustomer(cust_id)
)
-- 表中各加3条数据
insert into receive_address values(10,'张三',18888888888,'江苏省连云港'),(11,'李四',18888888887,'江苏省苏州'),(12,'王五',18888888886,'江苏省张家港')
主键约束:primary key
非空: not null
唯一性:unique
检查约束:check
外键约束:foreign key
主键自增:auto_increment
目录
相关文章
|
SQL Oracle 关系型数据库
DDL、DML和DCL的区别与理解
DDL、DML和DCL的区别与理解
1459 1
DDL、DML和DCL的区别与理解
|
2月前
|
缓存 网络架构
详细解释udp的传输过程(含多图)
本文详解UDP数据包的传输过程,涵盖跨交换机与路由器的完整流程。分析10KB UDP包的分片机制,需拆分为7个IP数据报传输。交换机和中间路由器不会等待完整数据接收,而是逐帧/分片转发,且每个IP分片均包含完整IP地址信息。
|
人工智能 边缘计算 算法
CDGA|利用人工智能与边缘计算显著提升数据治理效率与效果的实践案例
​ 在当今数字化转型的浪潮中,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长,如何高效、安全地治理这些数据成为企业面临的重要挑战。人工智能(AI)与边缘计算技术的融合,为数据治理带来了前所未有的机遇。本文将通过实际案例,探讨如何利用AI与边缘计算显著提升数据治理的效率和效果。
|
8月前
|
存储 Kubernetes 调度
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之遇到报错:"Transaction size exceeds the limit",该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
427 5
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之如何修改字段类型
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
246 2
|
11月前
|
PyTorch API 算法框架/工具
AscendC从入门到精通系列(四)使用Pybind调用AscendC算子
本文介绍了如何通过Pybind11在PyTorch框架中调用自定义的Ascend C算子。首先,通过编写算子的C++实现和pybind11封装,将算子功能暴露给Python。接着,构建Python调用脚本,利用torch接口生成数据并调用封装好的算子模块。最后,通过CMake配置文件编译整个项目,实现从算子开发到测试的完整流程。
|
关系型数据库 MySQL 数据库
在 MySQL 中使用 Alter Table
【8月更文挑战第11天】
1897 0
在 MySQL 中使用 Alter Table
|
JavaScript Java 测试技术
基于springboot+vue.js的大学生心理健康管理系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的大学生心理健康管理系统附带文章和源代码设计说明文档ppt
250 5
|
SQL 存储 安全
第4章 数据库安全性——4.2 数据库安全性控制
第4章 数据库安全性——4.2 数据库安全性控制