数据库:DDL 数据库设计语言

DDL 数据库设计语言

DDL(data defination language)数据库定义语言

一、库操作

1.create

-- create 建库 database 建表 table 视图 view....
-- 使用默认字符集创建 library 数据库
create database if not exists library;
-- 查看是否创建library成功
show databases;
-- 使用数据库library
use library
-- 查看当前数据库名字
select database();
-- 查看数据库创建代码
show create database library;
-- 查看数据中的表
show tables;

2.alter

-- alter 使用频率低 
-- 在数据库中有数据的情况下,不能直接更改数据库的名字,可以更改字符集和排序规则
-- 如果要改变数据的名字,必须要删除数据库后重新创建数据库

3.drop

-- drop 删除数据库
drop database if exists library;

二、约束(constraint)

– 约束在数据库管理中用于保护数据的完整性和一致性,防止错误数据的产生
– 完整性约束
– 1.实体完整性约束(主键,不同的实体要有唯一的主键区别,主键必须唯一且非空)
– 2.域完整性(数据,对于一个变量的取值要有完整的规定)
– 3.引用完整性约束(外键,外键的取值必须为其他表的主键)
– 4.用户自定义完整性(check 约束,确保表中一列或多列的数据值符合特定条件或规则)
– 约束的分类
– primary key主键pk约束 foreign key外键fk约束 not null列级约束 unique列级约束 check约束
– 列级约束
– 1.单列约束
– 2.多列约束
– 约束的位置
– 1.列级
– 2.表级
– not null列级约束
– unique列级约束和表级约束,单列唯一约束作为列级约束,在给列添加unique约束时会自动创建唯一索引,删除唯一约束只能通过删除唯一索引的方式,唯一索引的名字和唯一约束的名字相同,唯一索引对null不起作用,唯一约束的字段可以由多个同时为null。联合唯一约束作为表级约束,add contraint (联合索引名称)(字段1,字段2) 不设置联合索引名称时默认为第一个字段的名字,作用是字段1和字段2最多仅能有一个字段值相同,
– primary key列级约束和表级约束 添加主键约束的字段会自动创建not null约束 和 唯一约束,删除主键约束时如果该主键作为其他表的外键则无法删除 primary key(字段名)
– foreign key 在从表创建的外键必须为主表的主键,在从表插入数据时必须先在主表中插入数据,也就是在从表中当某个字段在其他表中作为主键存在时,插入数据时这个字段必须现在主表中出现过,才能将该条数据插入进从表,foreign key(从表外键字段名) references 主表名(主表的主键字段名) on update cascade 和 on delete cascade用于设置当主表中的主键被修改时,从表对应外键的数据处理方式或者变换规则
– check 列级约束 举例:check(age>0)
– default 列级非约束 默认值
– auto_increment 列级非约束 自增
– 查看某表的外键约束 select * from information_schema.table_constraints where table_name = ‘表名’;
– 安全性约束

三、表操作

1.create

-- create table if not exists 表名(
--     列名 列的类型 [列级约束] [默认值],
--     列名 列的类型(长度) [列级约束] [默认值],
--     表级约束
-- )引擎 排序规则 编码规则;

-- 使用library库
use library
-- 建 book 表
create table if not exists book(
    id int(10) not null primary key auto_increment,
    name varchar(20),
    price double,
    author_name varchar(20),
    publish_date date
);
-- 查看表
show tables;
-- 查看表数据
select * from book;
-- 查看表结构
desc book;
-- 查看创建表的代码
show create table book;

-- 从原有的表中截取数据创建表 但是约束不会进行复制
create table employeesCopyed
as 
select * from northwind.employees;
-- 只要部分列
create table employeesCopyed2
as 
select employee_id, first_name, last_name, salary from northwind.employees;
-- 只要表结构
create table employeesCopyed3
as 
select * from northwind.employees where false;

2.alter

-- alter table 表名 add column 列名 (长度)[约束][默认中]; 加列
-- alter table 表名 drop column 列名 (长度)[约束][默认中]; 删列
-- alter table 表名 midofy column 列名; 修改某一字段
-- alter table 表名 add contstraint;添加约束
-- rename table 表名; 修改后的名字 修改表名
-- drop table 表名; 删除表
-- truncate table 表名 清空表数据,不支持回滚
-- delete table; 表名 支持回滚
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aayasu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值