IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL (十) DDL之语法 学习回顾记录 -> 正文阅读

[大数据]MySQL (十) DDL之语法 学习回顾记录

DDL(data definition language) 针对数据库、表的创建、删除、修改等操作

一、创建数据库

------------------------------------创建数据库库--------------------------------------

语法:
create database 数据库名 default character set 字符集 collate 排序规则;

# 删除数据库
drop database 数据库名;
# 创建数据库

create database db_lzy default character set utf8mb4 collate utf8mb4_general_ci;

# 删除数据库
drop database db_lzy;

二、创建表

创建表

create table 表名(
				字段名 类型(长度) 是否为null 约束条件 注释,
				字段名 类型(长度) 是否为null default 默认值 [auto_increment 主键自动递增] comment '注释',
				字段名 类型(不写使用默认长度) 是否为null default默认值 comment '注释',
				。。。
				PRIMARY KEY(主键)
);
# 创建一个表
CREATE TABLE t_user(
				id int(11) not null auto_increment comment '主键',
				name VARCHAR(20) DEFAULT null comment '姓名',
				sex TINYINT(1) DEFAULT 1 comment '性别1男0女',
				create_time datetime default now() comment '创建时间',
				modify_time datetime DEFAULT null comment '修改时间',
				PRIMARY key(id)
				);

# 查看表信息
desc t_user;

三、复制表信息

#复制表(先选择数据库)

复制表不会复制约束条件,需要自己重新添加
create table 表名 as select 字段列表 from 已有表; #会将数据一起复制过来

create table 表名 as select 字段列表 from 已有表 where 1!=1;
create table 表名 as select 字段列表 from 已有表 where 1=0; # 只复制表结构,没有数据

复制表以及约束条件但是不复制数据
create table 表名 like 已有表;
# 先给 t_uer 添加数据
insert into t_user(name,sex,create_time) values('张三',1,now()); #主键自增情况
insert into t_user(id,name,sex,create_time) values(2,'李四',0,now()); #主键不是自增情况

#不会复制约束条件,但是有数据
create table t_user_copy as select * from t_user;

#只会复制表结构,没有数据
create table t_user_copy2 as select * from t_user where 1=0;

# 复制表以及约束条件但是不复制数据
CREATE TABLE t_user_copy3 like t_user;

desc t_user_copy;
desc t_user_copy2;
desc t_user_copy3;

四、删除表

drop table 表名;	#删除表
truncate table 表名;	# 清空表

1/ 清空表,只清空数据会保留一些状态(自增的状态,再次添加 是接着以前的自增插入)
delete from t_user;

2/ 清空表,清空数据以及状态(相当于恢复出场状态)
truncate table t_user;

五、修改表结构

######################################修改表结构#################

# 修改表名:rename table 原表名 to 新表名;
# 修改列名:alter table 表名 change 原字段名 新字段名 字段类型 约束条件;
# 修改类型:alter table 表名 modify 字段名称 字段类型 [完整性约束条件];
# 添加列	 :alter table 表名 add 字段 类型 约束;
# 删除列	 :alter table 表名 drop column 字段;
# 修改表名
RENAME table t_user to t_user_original;

# 修改列名 将 sex 列修改为age int(3) 添加默认约束
alter table t_user_original change sex age int(3) DEFAULT 0 comment '年龄';

# 修改类型 将age 列类型修改为 varchar(长度3) 添加默认约束 非空约束
alter table t_user_original modify age varchar(3) DEFAULT '0' not null comment '注释';

# 添加列
alter table t_user_original add job datatime DEFAULT NULL;

# 删除列

alter table t_user_original drop column job;

六、综合练习

#练习 外键约束

# 1、先建立一个学生表

CREATE table t_student(

			s_id tinyint(11) not null auto_increment comment '主键',
			s_name VARCHAR(20) DEFAULT null comment '名字',
			s_sex  tinyint(1) DEFAULT null COMMENT '性别',
			create_time datetime DEFAULT now() comment '创建时间',
			is_valid TINYINT(1) DEFAULT 1 comment '是否有效',
			primary key(s_id)

);

# 创建老师表

CREATE table t_teacher(

			t_id tinyint(11) not null auto_increment comment '主键',
			t_name VARCHAR(20) DEFAULT null comment '名字',
			t_sex  tinyint(1) DEFAULT null COMMENT '性别',
			create_time datetime DEFAULT now() comment '创建时间',
			is_valid TINYINT(1) DEFAULT 1 comment '是否有效',
			primary key(t_id)

);

# 创建老师学生中间表

CREATE TABLE t_t_s(

t_id tinyint(1) not null comment '学生id',
s_id tinyint(1) not null comment '老师id',
PRIMARY key(t_id,s_id)
);

################## 添加外键约束##################
# 数据库层面有了关系

#中间表中的 s_id 和t_student中的s_id关联起来
alter table t_t_s add constraint fk_s_id foreign key(s_id) REFERENCES t_student(s_id);

#中间表中的 t_id 和 t_teacher 中的t_id 关联起来
alter table t_t_s add constraint fk_t_id foreign key(t_id) references t_teacher(t_id);


#################添加数据########################
insert into t_student(s_name,s_sex,create_time) 
VALUES('张三',1,now()),('李四',0,now()),('王五',1,now()),('赵六',0,now()),('田七',1,now());


insert into t_teacher(t_name,t_sex,create_time) 
VALUES('周老师',1,now()),('吴老师',0,now()),('郑老师',1,now()),('王老师',0,now()),('赵老师',1,now());

insert into t_t_s(s_id,t_id)
VALUES(1,1),(2,1),(3,1),(1,2),(3,2),(4,2),(1,3),(2,3),(3,3),(4,3);


##########################查询数据#################################
#查询周老师所带学生的姓名
#分析
####################使用子查询#########################
#1、周老师t_id
select t_id from t_teacher where t_name='周老师';

# 2、在 t_t_s表中查询 周老师id 所对应的 学生t_id
select t_id from t_t_s where s_id = (select t_id from t_teacher where t_name='周老师');

# 3、在t_student 表中查询 第二步中学生id 的姓名;
select s_name from t_student where s_id in (
select t_id from t_t_s where s_id = (
select t_id from t_teacher where t_name='周老师')
);

/*
张三
李四
王五
*/

###################使用inner join ###################

select s_name from t_student s 
inner join t_t_s tt on s.s_id = tt.s_id 
inner join t_teacher t on tt.t_id = t.t_id
where t.t_name = '周老师';  


###################使用left join #####################

select s_name from t_student s 
left join t_t_s tt on s.s_id = tt.s_id 
left join t_teacher t on tt.t_id = t.t_id
where t.t_name = '周老师';  

##################使用right join ###################

select * from t_student s 
right join t_t_s tt on s.s_id = tt.s_id 
right join t_teacher t on tt.t_id = t.t_id
where t.t_name = '周老师';  

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:36:52  更:2021-09-04 17:36:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:41:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码