数据库那点事(Mysql)-2

前期回顾

  1. 数据库登陆: mysql -uroot -p

  2. 数据库修改密码:set password for 'root'@'localhost'=password('自填');

  3. 退出数据库交互式界面:exit

  4. 查看所有数据库:show databases;

  5. 新建名称为simfg的数据库:create databse simfg;

  6. 使用simfg数据库:use simfg;

  7. 删除simfg数据库:drop database simfg;

  8. 查看当前数据库中所有数据库表:show tables;

  9. 创建名为user的数据库表:create table user(id char(3) primary key);

  10. 查看名为user表的结构:describe user;

  11. 删除表名为user的数据库表:drop table user;


数据库表格定义

列约束关键词

  • 列约束关键词:对数据库表格中某一个属性的取值的唯一性、值范围、默认值等进行约束

  • 常用的列约束关键词


约束关键词释义
primary key主键,用于标示该列,即所有列的这一属性都不一样,不能为空,且唯一
null允许该属性值为空
not null该属性值不能为空
default(‘a’)该属性默认值为a,可以根据实际需求进行修改
unique该属性值唯一,即不能与其他类属性相同
auto_increment该属性值进行自增
check属性值取值范围进行限制,具体使用方法看下面实例
identity(m,n)也是自增,但是从m开始,n为增量值

  • 现在要创建一个这样的小组信息(group)表格,表格属性有编号(id,主键,自增)、名称(name,不能为空)、小组最多人数(max_size,默认值为10)、小组类型(type,只能取值为‘研发组‘、‘实习组‘、‘学习组‘)、小组描述(description,可以为空)

根据上述要求进行编写对应的sql语句

在实际操作的时候我发现group是一个关键字,所以在添加表名上就需要加上` `

create table `group`(
    id int primary key auto_increment,
    name varchar(10) not null,
    max_size int default '10',
    type varchar(10) not null check(type in ('研发组','实习组','学习组')),
    description varchar(100) null
);

插入

查表结构

describe `group`;

表结构

表约束关键词

  • 表约束关键词:在实际开发中,数据库表之间的肯定是有关联的,那么就可以通过这一系列的关键词来对表进行约束

  • 主要的关键字:constraint、primary key、foreign key等

  • 举个栗子:现在已经有一个小组信息表,还有一个用户表(user),表格属性有用户id(user_id,主键,类型为char(4))、用户名(user_name,不为空,类型为varchar(10))、密码(password,不为空,类型为varchar(16))、课程组编号(group_id,不为空,int)

  • 现在你是不是已经在构思对应的sql语句了呢?别急,让我们在来分析下以上内容,看最后一个字段——课程组编号——是不是应该有个约束呢?没错,这个课程组id需要存在于group这个表中才能进行相应的添加

create table user(
    user_id char(4) primary key,
    user_name varchar(10) not null,
    password varchar(16) not null,
    group_id int not null,
    constraint group_fk foreign key(group_id)
    references `group`(id)
    on update cascade
    on delete cascade
);

部分内容可能不明白,先将所有的输入,看看效果先
注意:group这个需要加上` `

查看表结构

describe user;

外键

  • constraint:一个表约束关键词

  • group_fk:外键名称

  • foreign key(group_id):标示哪个属性将作为外键

  • references group (id):将要关联group表中的id这一属性

  • on update cascade:父表做更新时字表将如何回应,即设置回应方式

  • on delete cascase:父表做删除时字表将如何回应,即设置回应方式


  1. 父表,即外键关联的表,上述栗子中则是以user中的group_id这个字段而言,group为user的父表

  2. 外键约束对子表的含义,如果在父表中找不到候选键,则不允许在子表上进行insert/update

  3. cascade,在父表上update/delete记录时,同步update/delete掉子表的匹配记录

  4. set null,在父表上update/delete记录时,将子表上匹配记录的列设为null

  5. no action,如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

  6. restrict,跟no action一样


在一篇博客将介绍如何对表格结构进行修改


欢迎大家留言转载
关注微信公众号:SimFG,随时随地看博客要点
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值