十一、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
目录
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
MySQL基础(二)----DML学习
MySQL基础(二)----DML学习
46 3
|
5月前
|
SQL 存储 关系型数据库
MySQL基础(一) 前置安装以及DDL详解
MySQL基础(一) 前置安装以及DDL详解
63 1
|
6月前
|
存储 安全 算法
Qt QSet 详解:从底层原理到高级用法
Qt QSet 详解:从底层原理到高级用法
667 0
|
6月前
|
Web App开发 Rust 前端开发
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri App开启远程调试功能
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri App开启远程调试功能
565 0
|
6月前
|
人工智能 安全 算法
如何在激烈的市场竞争中实现互联网产品的用户增长和维护?
如何在激烈的市场竞争中实现互联网产品的用户增长和维护?
187 0
|
6月前
04_SpringBoot整合ElasticSearch
04_SpringBoot整合ElasticSearch
70 0
【笔记】开发指南—DAL语句—DDL管理语句—SHOW DDL
一条DDL语句会以一个DDL任务方式在PolarDB-X内部执行,使用SHOW DDL命令可以查看当前PolarDB-X实例中的DDL任务。
190 0
【笔记】开发指南—DAL语句—DDL管理语句—SHOW DDL
|
6月前
|
Rust 资源调度 前端开发
【一起学Rust | 框架篇 | Tauri2.0框架】使用Barcode Scanner实现扫码功能(安卓)
【一起学Rust | 框架篇 | Tauri2.0框架】使用Barcode Scanner实现扫码功能(安卓)
411 0
|
SQL 关系型数据库 MySQL
MySQL基础教程5——DDL—表操作
使用create table 表名( 字段一 字段一类型 comment 字段一注释, 字段二 字段二类型 comment 字段二注释 ); comment 表注释 注意: 最后一个字段结尾不用加,,comment 注释可以不加。
|
SQL 关系型数据库 MySQL
【笔记】开发指南—DDL语句—分库分表语法—ALTER TABLE
您可以通过ALTER TABLE语法改变表的结构,如增加列、增加索引、修改数据定义等
下一篇
无影云桌面