数据库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 null NOT NULL

not  null

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

unique UNIQUE

unique

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

default DEFAULT

default

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

primary key PRIMARY KEY

primary

主键

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

foreign key FOREIGN KEY

foreign  key

外键

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

check CHECK        

check

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

auto_increment AUTO_INCREMENT

auto_increment 

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

insert into INSERT INTO

insert into

向什么表插入

insert into student表名

delete DELETE

delete

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

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

truncate TRUNCATE

truncate

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

drop DROP

drop

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

update UPDATE

update

将表名改掉

if not exists IF NOT EXISTS (加上表名)

if not exists c1

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

zerofill ZEROFILL

zerofill

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

like LIKE

like

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

peferences PEFERENCES 外键

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) , 不能为空,且不能重复

要求删除外键关联,删除从表的主键,重新定义主键为phone


create 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;
#在表外修改主键,前提是当前这个表没有主键才能修改,如果有主键要先删除

数据库2。。_第1张图片

你可能感兴趣的:(数据库)