数据库实训

创建表

CREATE TABLE student ( sno INT, sname VARCHAR (20), sbirthday DATE, ssex CHAR(1), class INT );

查看数据库的表结构

  1. desc

desc tablename; 字段名 数据类型 非空约束 主键 默认值约束 自增长/外键

  1. show create table

show create table tablename # 会将创建表的语句直接展示出来

CREATE TABLE `feed_barrage_log` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `feed_user_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '投喂者uid', `be_fed_user_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '被投喂者uid', `barrage_id` varchar(100) NOT NULL DEFAULT '' COMMENT '被投喂的弹幕id', `barrage_text` varchar(255) NOT NULL DEFAULT '' COMMENT '被投喂的弹幕内容', `room_id` int(10) NOT NULL DEFAULT '0' COMMENT '投喂弹幕时所在的房间号', `feed_prize_count` int(10) NOT NULL DEFAULT '0' COMMENT '投喂礼物的个数', `feed_prize_type` tinyint(2) NOT NULL DEFAULT '0' COMMENT '投喂礼物的类型, 1: 鱼粮', `is_parrot_plan` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否为鹦鹉计划用户投喂, 0: 不是, 1: 是', `status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '礼物发放状态, 0: 发放失败, 1: 发放成功', `prize_order_id` varchar(200) NOT NULL DEFAULT '' COMMENT '礼物发放订单id', `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', `update_time` int(10) NOT NULL DEFAULT '0' COMMENT '更新时间', `date` int(10) NOT NULL DEFAULT '0' COMMENT '投喂的日期', `ip` varchar(50) NOT NULL DEFAULT '' COMMENT '用户ip', `did` varchar(50) NOT NULL DEFAULT '' COMMENT '用户did', `ct` int(2) NOT NULL DEFAULT '0' COMMENT '客户端类型', `app_version` varchar(10) NOT NULL DEFAULT '' COMMENT '客户端版本', PRIMARY KEY (`id`,`date`), KEY `idx_uid_date` (`feed_user_id`,`be_fed_user_id`,`date`), KEY `idx_feed_uid_date` (`feed_user_id`,`date`), KEY `idx_be_fed_uid_date` (`be_fed_user_id`,`date`) ) ENGINE=InnoDB AUTO_INCREMENT=3928 DEFAULT CHARSET=utf8mb4 COMMENT='弹幕投喂流水表'

约束类型

  • 概念

为了保证数据库中的数据的完整性,准确性而设置的一些限制规则;

  • 数据的完整性
    • 实体完整性:约束记录
    • 域完整性:字段数据的完整性
    • 参照完整性:约束表和表之间引用关系的完整性
    • 自定义完整性:用户自己定义的一些要求
  • 主键约束
    • 它是数据表中的一个或者多个字段的组合。
    • 主键的作用:唯一的标识一行记录;可排序,帮助提高查询效率;
    • 设置主键:
      • 1.定义表的时候,设置主键;primary key 标记该字段为主键
create table tablename( id int primary key, class_name varchar(10), )engine=innodb;
    •          2.复合主键设置
create table tablename( id int , class_name varchar(10), primary key(id,class_name) )engine=innodb;

以上两种方式均为建表时候创建好主键;

    •         3.通过修改表结构方法修改主键
alter table tablename add 字段名 类型 primary key; # 增加主键 alter table tablename modify 字段名 类型 primary key; # 调整主键 add # 增加字段 增加约束 modify # 修改字段的类型或者约束 不能改字段名 change # 可以修改字段名 类型 约束 drop # 删除字段 或者 约束 # 删除主键 alter table tablename drop primary key;
    • 4.设置主键的注意事项
      • 最少性:作为主键的字段,越少越少
      • 稳定性:作为主键的字段,数据的变更频率越低越好
  • 非空约束
    • 指的是字段的数据不能为空
    • 作用是当被非空约束的字段在插入数据的时候,必须赋值
    • 如何设定非空约束
    •         定义表的时候,在字段名的数据类型后面加上not null
      • 变更表的方式追加not null
alter table tablename modify 字段名 类型 not null # 定义表结构的时候 增加 not null create table tablename( id int not null, class_name varchar(10) not null )engine=innodb;
  • 注意事项
    • 使用了非空,插入数据的时候一定要赋值
    • 非空可以和默认值,唯一约束,检查约束一起组合使用
  • 默认值约束
    • 可以给字段设置默认值,当插入舒适的时候,如果没有给字段赋值,就会自动使用默认值;
    • 设置方法:字段名 数据类型 default 默认值
# 定义表结构的时候 增加 默认值 create table tablename( id int not null, class_name varchar(10) not null, sbirthday date default '2020-01-01' )engine=innodb; # 改表结构方式 alter table tablename modify 字段 类型 default '待设置的默认值';
  • 自增长约束
    • 被约束的字段,在数据记录增加的时候,在原来最大值的基础上自动加1;
    • 语法:字段名 数据类型 auto_increment;
    • 注意事项
    •         一般搭配主键使用
      • 每张表只允许一个字段使用这个约束
      • 自增长的序列是单独存放的,也就是我们删除最后一条记录,不影响序列
        • truncate table 删除数据,这种删除无法恢复;
# 改表结构方式 alter table tablename modify 字段 类型 auto_increment;
  • 检查约束
    • mysql一般不支持检查约束,设置了可选内容的约束
    •         给字段设置了检查约束,字段的值只能在指定的范围内挑选;
alter table tablename modify 字段名 enum('男','女'); # 检查约束放置在数据类型中
  • 设置方式

字段名 enum('v1','v2',.....) # 只能从指定的数值中任选一个 字段名 set('v1','v2',.....) # set可以多选

  • 唯一约束
    • 被唯一约束字段,它的值不可重复
    • 设置方法:字段名 数据类型 unique
    • 注意事项
      • unique 使用的时候,字段的业务含义需要符合唯一要求
      • unique 不能和默认值约束一起使用
alter table tablename modify 字段名 数据类型 unique;
  1. 外键约束

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值