MySQL基础应用知识(2)

本文深入解析SQL中表结构的修改方法,包括表名、字段名和类型的变更,以及如何添加和删除字段。同时,详细阐述了各种约束条件的作用与应用,如默认值、非空、唯一性、主键、自增长和外键,帮助读者掌握数据一致性和表关系的维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改表结构(alter)

修改表名:alter table tb_name1 rename to new_name2;

修改字段名:alter table tb_name change name new_name data_type;

修改字段类型:alter table tb_name modify field_name data_type;

添加字段:alter table tb_name add field_name data_type;

删除字段:alter table tb_name drop field_name;

约束条件

约束类型:默认非空唯一自增长主键外键
关键字:defaultnot nullunique keyauto_incrementprimary key

  foreign key 

默认值(default)

create table tb_name(

   id int default 20,

   name varchar(20)

);

全字段插入时 例:insert into tb_name values (default, default, 20);

非空(not null)

create table tb_name(

   id int not null,

   name varchar(20)

);

唯一性(unique key)

表中该字段的值不能重复

create table tb_name(

   id int unique key,

   name varchar(20)

);

主键约束(primary key)

每张表都需要一个主键来体现唯一性,每张表里面只有一个主键

主键 = 非空 + 唯一

create table tb_name(

   id int primary key,

   name varchar(20)

);

自增长(auto_increment)

会自动+1  一般是数值类型

自动编号,和主键组合使用

一个表咯只能有一个自增长

create table tb_name(

   id int primary key auto_increment,

   name varchar(20)

);

插入时:insert into tb_name values (default, 20);  他会自动+1

外键(foreign key)

保持数据的一致性,我有的你一定有,你没有的我绝对没有。

缺点:损耗性能

create table a (

   id_a int primary key,

   name varchar(20)

);

create table b(

   id_b int primary key,

   name varchar(20),

   foreign key (id_b) references a(id_a)

);

b表中的id_b字段,只能添加id_a中已有的数据。

a表中id_a被参照的数据,不能被修改和删除,删除时必须先删除b表中的数据 再删除a表中数据

表关系

一对一 

用外键的方式,把两个表的主键关联

##创建学生信息表

create table student_details (

  in int primary key,

  sex varchar(20) not null,

  age int,

  addresss carchar(20),

  foreign key (id) reference student(s_id) 

);

一对多   

通过外键关联来实现这种关系

##创建学院表

create table department(

  d_id int primary key auto_increment,  ##学院ID

  d_name varchar(20) not null  ##学院名

);

##创建学生表

create table student(

  s_id int  primary key auto_increment,  ##学生ID

  s_name varchar(20) not null,  ##学生名

  dep_id int not null,  ##所属学院

  foreign key(dep_id) reference department(d_id)  ##外键

);

insert into department values (1, '计算机学院'), (2, '外国语学院');

insert into student values (1, 'Jack', 1), (2, 'Tom', 2);

多对多

对于多对多关系,需要创建中间表实现。

##建立课程表

create table cours (

  cours_id int,

  cours_name varchar(20) not null,

);

##选课表(中间表)

create table select(

  s_id int,  #记录学生ID

  cours_id int,  ##记录课程ID

  primary key(s_id, cours_id),  ##联合主键

  foreign key(s_id) reference student(s_id) ,  ##关联学生id

  foreign key(cours_id) reference cours(cours_id)   ##关联课程ID

);

insert into cours values (1, '高等数学'), (2, '大学英语);

insert into select values (1, 2), (2, 2),(1, 1), (2, 1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值