数据库2。。

创建临时表

create temporary table test1 (
id int(4) primary key,
name char(10),
sex char(2)
);
# 创建临时表一般用于调试,而且临时表创建之后在表目录当中是不显示的,连接退出之后,临时表会被销毁,而且临时表无法创建外键unique key
#唯一性约束,跟主键不同,可以为空create table test like ky32;
#复制通过like这个语法直接复制ky32的表结构,只是复制表结构,不能复制表里的数据insert into test select * from ky32;
#把ky32表里面的数据复制到test,前提两个表数据结构要一致create table test1 (select * from ky32);
#创建一张表,test1,数据重ky32来,表结构也是ky32.delete   truncate   drop
#drop:直接删除表
#delete  from 表名;
删除是一行一行删除,如果表里面有自增长的列,即使清空所有记录之后,再次添加内容,会从原来记录之后继续自增写入,如原来为2,再次写入会变成3
#truncate  table  表名;
清空表的数据,而且会把表结构重新建立,速度上比delete快,推荐 create temporary table  表名  (
id  int(4) primart key;
name char(4);
sex char(2)
);
#创建临时表,退出连接之后会直接消失alter table  class drop foreign key calss_ibfk_1;
#删除主表,再删除从表

主键和外键

在数据库中,主键和外键是用于关联表与表之间的概念。它们在关系型数据库中发挥着重要的约束和识别作用

主键(Primary Key)主键是用于唯一标识一个表中的记录的字段(或属性组)。主键的值在表中必须是唯一的,这意味着不存在重复的记录。主键的作用是确保表中的记录具有唯一性,便于查询和识别
外键(Foreign Key)外键是表中的一个或多个字段,其值与另一个表中的主键字段相关联。外键用于建立表与表之间的关联关系,以便在多个表之间进行数据查询和操作。外键的作用是关联两个表,并确保数据的一致性和完整性。

主键与外键的关联关系

1一对一关联:当一个表中的主键字段与另一个表中的外键字段相关联时,我们说这两个表之间存在一对一的关联关系。这种关系表示每个主体表的记录都只与一个从体表的记录相关联。
2一对多关联:当一个表中的主键字段与另一个表中的外键字段相关联时,我们说这两个表之间存在一对多的关联关系。这种关系表示每个主体表的记录都与多个从体表的记录相关联。
3多对多关联:当两个表之间的主键字段和外键字段相互关联时,我们说这两个表之间存在多对多的关联关系。这种关系表示一个主体表的记录可以与多个从体表的记录相关联,反之亦然。多对多关系通常需要使用中间表(关联表)来建立关联
4在实际应用中,外键和主键的关联有助于确保数据的一致性、完整性和查询效率。通过正确设置主键和外键,我们可以更有效地管理数据库中的数据,并实现不同表之间的数据共享和交互

mysql的约束方式

6种常用的方式

1

主键约束

用于唯一标识表中的每一行,主键列的值必须要是唯一而且不能为空的,一个表只能有一个主键

2

外键约束

用于建立表与表之间的关系,一般是和另一张的表的主键关联,保证数据引用的完整性,一个表可以有多个外键

3

非空约束

no null 不能为空,该列必须要有一个值

4

唯一性约束

unique 确保列中的所有值都是唯一的,类似于主键,但是可以为空,而且一个表可以有多个唯一约束

5

默认值约束

default在插入表数据时,如果没有定义值,会提供一个默认值

6

自增约束

每行自动生成一个唯一标识,通常都和主键在一起使用

数据库约束及基础语句

not nullNOT NULL

not  null

值某列不能存储null值,也就是某列不能为空

uniqueUNIQUE

unique

保证某列的每行必须有唯一的值,去重,这一列只能有一个,这一列其他行不能与他重复

defaultDEFAULT

default

规定没有给列赋值时的默认值,默认值

primary keyPRIMARY KEY

primary

主键

是 not null 和unique 的结合,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速的找到表中的一个特定的记录

foreign keyFOREIGN KEY

foreign  key

外键

保证一个表中的数据匹配另一个表中的值的参照完整性,一个表里只会有一个

checkCHECK        

check

保证列中的值符合指定的条件,对于mysql 数据库,对check子句进行分析,但是忽略check 子句。

auto_incrementAUTO_INCREMENT

auto_increment 

自然增长,如id第一行为1,第二行会自动排序为2

insert intoINSERT INTO

insert into

向什么表插入

insert into student表名

deleteDELETE

delete

清空数据表内容,不释放空间,且下次插入表数据,id依然接着被删除数据的id继续增加

格式:delete  from  c1(表名) where(范围)删除表内符合条件的范围

truncateTRUNCATE

truncate

清空表数据,释放空间,且下次插入表数据,id从1重新开始

dropDROP

drop

删除整张表,如要使用该表需要从新构建

updateUPDATE

update

将表名改掉

if not existsIF NOT EXISTS (加上表名)

if not exists c1

如果这个表不存在,才会创建

zerofillZEROFILL

zerofill

自动补齐,  比如设置为4,输入1 后, 会自动补齐成0001

likeLIKE

like

复制表的结构,不复制表里的数据

peferencesPEFERENCES外键

null  约束

create table student (
id int not null,
sn int not null,
name varchar(20),
qq_mail varcahr(15)
);
#创建表时,可以指定某列不为空

unique 唯一约束

create table student (
id int not null,
sn int unique,
name varchar(20),
qq_mail varchar(15)
);
#指定sn列为唯一的,不重复的

增删改查

insert into

1. insert into 加上表名 values(x , x , x , 'x');

2. insert into 表名  (id,name,sroce,passwd) values(x,x,x,x);

create

1.create  table  表名;

#创建一个表

2.create  

delete  truncate  drop

1.delete  from  表名  where  id(最好指定唯一条件) = 6;

2.truncate  from  表名;

3.drop  table 表名;

#删除表

drop  database  库名;

#删除库

alter  table  原来的表名   rename   要改的表名;

#改表的名字

alter  table  表名  add   列名  date;

#创建一个新的列,date可以自定义如(char(10),varchar(20))

alter  table  表名  modify  column   列的名字  varchar(52);

#改变表里的列的类型  varchar(52)可自定义

select * from 表名;

select  *  from  cw1(表名)  where  passwd(列的名字)  is null / not  null ; 

 #查询cw1表里的,passwd列 哪一行为空或不为空

select  *  from   表名   limit   2;或2,3;

#查询表里的第二行,或从第二行开始往后三位

select  列名   from   表名;

#指定查看某列 

格式

create table if not exists 表名 (
列名 int(4)类型  zerofill(自动补齐) primary key(主键:唯一性)  auto_increment,
列名 varchar(4)类型  not null(不能为空),
列名 int(18)类型 not null(不能为空) unique(去除重复) key,
#这一行表示类型为int最多只能有18位数字,且不能为空(也可以把not null去掉也就是可以为空),也不能重复。
列名 varchar(10)类型
);  

练习 1

定义一个需求
两张表:主表company,从表depart
company
1.work_id ,非空,主键,int(4),不满四位要补齐
2.name ,非空,char(5)
3.sex,非空,char(2)
depart
1.de_id,非空,主键,int(6),不满6位要补齐
2.work_id 要和主表的work_id关联为外键
3.addrss,为空,有个默认值
4.phone,非空,不能相同。create table company (
work_id int(4) not null zerofill primary key,
name char(5) not null,
sex char(2) not null
);create table depart (
de_id int(6) not null zerofill primary key,
work_id int(4) zerofill, #与主表的保持一致
addrss varchar(255) default '地址不详',
phone int(11) unique
);alter table depart add poreign key (work_id) references company (work_id);alter table depart drop primary key;
#删除depart表的主键alter table depart add primary key de_id;
#为depart表de_id那一行添加一个主键,前提这个表没有主键才能添加成功,一个表只能有一个主键

2

需求两张表
school
1.de_id , int(4) , 不满四位要补齐 , 且要自增长 , 主键
2.name , varchar(15) , 非空
3.email , varchar(45) , 可以为空,但不能重复 , 且有默认值为 'bdqnkgc@126.com'cloud_ky32
1.id , 自增长 , 主键 , int
2.class_name , 非空
3.de_id  主表关联
4.adress , 可以为空 , 默认地址 '地址不详'
5.phone , int(11) , 不能为空,且不能重复要求删除外键关联,删除从表的主键,重新定义主键为phonecreate table school (
de_id int(4) zerofill auto_increment primary key,
name varchar(15) not null,
email varchar(45) unique default 'bdqnkgc@126.com',
);create table cloud_ky32 (
id int(2) auto_increment primary key,
class_name vchar(2) not null,
de_id zerofill,
adress default '地址不详',
phone int(11) not null unique,
foreign key(de_id) reperences school(de_id)
#跟school表的de_id关联外表
);

在外面用修改的方式添加主键

#主表company
create table company (
work_id int(4) zerofill primary key,
name varchar(5) not null,
sex char(2) nut null
);#从表depart
creater table depart (
de_id int(6) zerofill primary key,
work_id int(4),
address varchar(255) default '地址不详',
phone int(11) not null unique
);foreign key (ct_id) references province (ct_id)
#在表内最下面插入可以关联主表provine的主键alter table city add foreign key(ct_id) references province(ct_id);
#通过创建外键关联主表的主键,从表的主键与外键没有关系,只是关联主表province的ct_id,外键要与主键一致,主表输入为数字,从表输入也必须要为数字,否则无法输入。alter table depart add foreign key (work_id) references company (work_id);
#depart为表名,add foreign key指向(work_id),到company的(work_id),主从表的类型,格式要一致才能创建成功,否则会报错#在外面修改主键,如果要修改主键要先删除主键
alter table depart drop primary key;alter table depart add primary key de_id;
#在表外修改主键,前提是当前这个表没有主键才能修改,如果有主键要先删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/155504.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP MM学习笔记39 - MRP(资材所要量计划)

这一章开始,离开请求书,学点儿新知识啦。 MRP ( Material Requirement Planning ) - 资材所要量计划。 它的位置在下面的调达周期图上来看,就是右上角的 所要量决定那块儿。 1,MRP(资材所要量计划) 的概要 MRP 的主要目的就是 确…

精密数据工匠:探索 Netty ChannelHandler 的奥秘

通过上篇文章(Netty入门 — Channel,把握 Netty 通信的命门),我们知道 Channel 是传输数据的通道,但是有了数据,也有数据通道,没有数据加工也是没有意义的,所以今天学习 Netty 的第四…

verilog语言学习

1. 时延 2. 一位全加器设计:三种建模方式 实际的设计中往往是这三种设计模式的混合 3. 4. 5. 6. 7. 建立模型时信号的连接(重点) 8. initial语句 9. always语句 在always中不能同时判断同一个信号的上升沿(posedge&#xff0…

基于深度学习的人脸专注度检测计算系统 - opencv python cnn 计算机竞赛

文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的人脸专注度…

Bellman-ford 贝尔曼-福特算法

Bellman-ford算法可以解决负权图的单源最短路径问题 --- 它的优点是可以解决有负权边的单源最短路径问题,而且可以判断是否负权回路 它也有明显的缺点,它的时间复杂度O(N*E)(N是点数 , E是边数&#xff09…

搭建高性能分布式存储-minio

文章目录 搭建高性能分布式存储-minioDocker搭建minio(单机部署纠删码模式)⭐创建minio的bucket(桶)⭐SpringBootminio项目实战 ⭐1:导入minio的maven依赖2:编写MinioProperties.class3:applica…

听GPT 讲Rust源代码--library/std(10)

题图来自 Rust Development Roadmap[1] File: rust/library/std/src/sys/windows/c.rs 在Rust源代码的rust/library/std/src/sys/windows/c.rs文件中,主要定义了Rust对于Windows操作系统的系统调用接口。该文件定义了各种Windows特定的结构体、枚举和常量&#xff0…

Redis原理-IO模型和持久化

高性能IO模型 为什么单线程Redis能那么快 一方面,Redis 的大部分操作在内存上完成,再加上它采用了高效的数据结构,例如哈希表和跳表,这是它实现高性能的一个重要原因。另一方面,就是 Redis 采用了多路复用机制&#…

剑指JUC原理-7.线程状态与ReentrantLock

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

信号类型(通信)——QPSK、OQPSK、IJF_OQPSK调制信号

系列文章目录 《信号类型(通信)——仿真》 《信号类型(通信)——QAM调制信号》 文章目录 前言 一、QPSK通信调制信号 1.1、原理 1.2、仿真 二、OQPSK通信调制信号 1.1、原理 1.2、仿真 三、IJF_OQPSK通信调制信号 1.1、…

二蛋赠书六期:《Linux管理入门经典(第8版)》

前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直…

钢琴培训答题服务预约小程序的效果怎样

很多家长都会从小培养孩子的兴趣,钢琴便是其中热度较高的一种,而各城市也不乏线下教育培训机构,除了青少年也有成年人参加培训,市场教育高需求下,需要商家不断拓展客户和转化。 那么通过【雨科】平台制作钢琴培训服务…