Mysql学习之路03-列属性

本文详细介绍了数据库表设计中的各种约束条件,包括主键、唯一键、自增长等特性及其应用方式。通过实例展示了如何创建及修改这些约束,并解释了它们在确保数据完整性和一致性方面的作用。

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

列属性:数据类型的约束很单一,需要一些额外的约束,来保证数据的合法性
:NULL/NOT NULL ,default,primary key ,unique key,auto_increment,comment

空属性:
    两个值:NULL和NOT NULL

列描述:comment,描述,没有实际含义,是专门用来描述字段,会根据表创建语句保存:
       来给数据管理员进行了解

默认值:可以由用户选择性的使用默认值
    默认值关键词:default 
    create table my_default(
    name varchar(20) not null,
    age tinyint unsigned default 0,
    gender enum('男','女','保密') default '男'
    )charset utf8;

字段属性:
    主键,唯一键和自增长

        主键 :primary key ,主要的键,一张表只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复
      一张表只能有最多一个主键
    增加主键:
        1,在创建表的时候,直接在字段之后,跟primary key 关键字,主键不允许为空
        优点:非常直接;;缺点:只能使用一个字段作为主键
        2,在创建表的时候,在所以的字段之后,使用primary key(主键字列表)来创建主键  (如果有多个字段作为主键,可以是复合主键)
        3,当表已经创建好之后,再次额外追加主键:可以通过修改表字段属性,也可以直接追加
        alter table 表名 add primary (字段列表)
        alter table 表名 modify 字段 primary key;
     主键对应的字段中的数据不允许重复:一旦重复,数据操作失败        

    更新主键&删除主键:主键必须先删除,才能更新
        alter table 表名 drop primary key;

    主键分类:
        在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键,如雪花,课程号),
        大部分的时候是使用逻辑性的字段(字段没有业务含义,值是什么都没有关系),这种字段主键称之为逻辑主键 

    自动增长:当对应的字段,不给值,或者是NULL时,系统会从当前字段中已有的最大值在进行+1操作,得到一个新的字段
    自增长通常是跟主键搭配
    查看自增长对应的变量:show variables like 'auto_incremrnt%';
    特点:auto_increment
    1,任何一个字段要做自增长必须其本身是一个索引(key一栏有值)
    2,自增长字段必须是数字(整型)
    3,一张表最多只能有一个自增长
    create table my_auto(
    id int primary key auto_increment comment '自增长',
    name varchar(10)
    )charset utf8;

    自增长使用:自增长默认第一个为1,每次加1,如果对应字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长(即输入值+1)

    修改自增长:
        如果涉及到字段改变,必须先删除自增长,后增加
        修改当前自增长已经存在的值:修改只能比当前已有的自增长的最大值,不能小
        alter table 表名 auto_increment = 值;

    删除自增长:
        alter table 表名 modify 字段 类型;


     唯一键:一张表中有许多字段需要唯一性,数据不能重复,但是一张表只能有一个主键,
        唯一键(unique key)可以解决

        增加唯一键:
        1,在创建表的时候,字段之后直接跟unique,
        2,在所有字段后增加unique key(字段列表) -- 复合唯一键
        3,在表创建之后增加唯一键

        删除唯一键:
        alter table 表名 drop index 索引名字;---唯一键默认以字段名为索引

         唯一键约束:与主键相同,唯一区别为唯一键允许为空,而且是多个为空
-- 创建表
create table my_teacher(
name varchar(20) not null comment  '姓名',
money decimal(10,2) not null comment  '工资'
)charset utf8;


-- 默认值
create table my_default(
name varchar(20) not null,
age tinyint unsigned default 0,
gender enum('男','女','保密') default '男'
)charset utf8;

--插入数据
insert into my_default (name) values ('Marr');

insert into my_default values ('Arry',default,default);

-- 增加主键

create table my_pril(
name varchar(20) not null comment '姓名',
number char(10) primary key comment '学号:0000,不能重复' 
)charset utf8;

-- 复合主键
create table my_pri2(
number char(10) comment '学号',
course char(10) comment '课程代码',
score tinyint unsigned default 60 comment '成绩',
-- 增加主键限制:学号和课程号应该对应,具有唯一性
primary key (number,course)
)charset utf8;

-- 追加主键
create table my_pri3(
course char(10) not null comment '课程编号',
name varchar(10) not null comment '课程名字'
)charset utf8;

alter table my_pri3 modify course char(10) primary key;
alter table my_pri3 add primary key(course) ;

-- 删除主键
alter table my_pri3 drop primary key;


-- 自增长
create table my_auto(
id int primary key auto_increment comment '自增长',
name varchar(10)
)charset utf8;


-- 触发自增长
insert into my_auto(name) values('Han');

insert into my_auto values(null,'Mary');

insert into my_auto values(default,'Grr');

insert into my_auto values(6,'Sarry');

insert into my_auto values(null,'Kaat');


-- 修改自增长
alter table my_auto  auto_increment = 8;

-- 查看自增长变量
show variables like 'auto_increment%';

-- 删除自增长
alter table my_auto modify id int;

-- 唯一键
create table my_unique1(

number char(10) unique comment '学会:唯一键',
name varchar(20) not null
)charset utf8;

------------
create table my_unique2(
number char(10) unique comment '学会:唯一键',
name varchar(20) not null,

unique key(number)
)charset utf8;

------------ 追加唯一键
create table my_unique3(
id int primary key auto_increment,
number char(10) not null,
name varchar(20) not null 
)charset utf8;

alter table my_unique3 add unique key (number);

-- 删除唯一键
alter table my_unique3 drop index number;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值