Mysql常见约束-创建_修改_表时添加约束 自增长列

news/2024/6/18 4:26:06 标签: mysql, 数据库, java, sql, 索引

常见约束

一、常见的约束

NOT NULL:非空,该字段的值必填
UNIQUE:唯一,该字段的值不可重复
DEFAULT:默认,该字段的值不用手动插入有默认值
CHECK:检查,sql>mysql不支持
PRIMARY KEY:主键,该字段的值不可重复并且非空 unique+not null
FOREIGN KEY:外键,该字段的值引用了另外的表的字段

主键和唯一
1、区别:
①、一个表至少有一个主键,但可以有多个唯一
②、主键不允许为空,唯一可以为空
2、相同点
都具有唯一性
都支持组合键,但不推荐

外键:
1、用于限制两个表的关系,从表的字段值引用了主表的某字段值
2、外键列和主表的被引用列要求类型一致,意义一样,名称无要求
3、主表的被引用列要求是一个key(一般就是主键)
4、插入数据,先插入主表
删除数据,先删除从表
可以通过以下两种方式来删除主表的记录

sql>mysql">#方式一:级联删除
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;

#方式二:级联置空
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;

二、创建表时添加约束

创建表时添加列级约束

sql>mysql">create table 表名(
	字段名 字段类型 not null,#非空
	字段名 字段类型 primary key,#主键
	字段名 字段类型 unique,#唯一
	字段名 字段类型 default 值,#默认
	

)

创建表时添加表级约束

sql>mysql">create table 表名(
	字段名 字段类型 ,
	字段名 字段类型 ,
	字段名 字段类型 ,
	字段名 字段类型 ,
	constraint 别名 约束类型  (字段名) ,
    constraint 别名 约束类型  (字段名) ,
    constraint 别名 约束类型  (字段名) ,
 eg:
    constraint pk PRIMARY KEY(id),
   

)

注意:
支持类型 可以起约束名
列级约束 除了外键 不可以
表级约束 除了非空和默认 可以,但对主键无效

列级约束可以在一个字段上追加多个,中间用空格隔开,没有顺序要求

三、修改表时添加或删除约束

1、非空

sql>mysql">添加非空
alter table 表名 modify column 字段名 字段类型 not null;
删除非空
alter table 表名 modify column 字段名 字段类型 ;

2、默认

sql>mysql">添加默认
alter table 表名 modify column 字段名 字段类型 default 值;
删除默认
alter table 表名 modify column 字段名 字段类型 ;

3、主键

sql>mysql">添加主键
alter table 表名 add【 constraint 约束名】 primary key(字段名);
删除主键
alter table 表名 drop primary key;

3、主键
添加主键
alter table 表名 add【 constraint 约束名】 primary key(字段名);
删除主键
alter table 表名 drop primary key;

4、唯一
添加唯一

sql>mysql">添加外键

alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列);
删除外键
alter table 表名 drop foreign key 约束名;alter table 表名 add【 constraint 约束名】 unique(字段名);
删除唯一
alter table 表名 drop index 索引名;

5、外键

sql>mysql">添加外键
alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列);
删除外键
alter table 表名 drop foreign key 约束名;

5、外键

四、自增长列

特点:
1、不用手动插入值,可以自动提供序列值,默认从1开始,步长为1
auto_increment_increment
如果要更改起始值:手动插入值
如果要更改步长:更改系统变量
set auto_increment_increment=值;
2、一个表至多有一个自增长列
3、自增长列只能支持数值型
4、自增长列必须为一个key

一、创建表时设置自增长列
create table 表(
字段名 字段类型 约束 auto_increment
)
二、修改表时设置自增长列
alter table 表 modify column 字段名 字段类型 约束 auto_increment
三、删除自增长列
alter table 表 modify column 字段名 字段类型 约束


http://www.niftyadmin.cn/n/890600.html

相关文章

Mysql事务的介绍和使用步骤

事务 #TCL /* Transaction Control Language 事务控制语言 事务:一个或一组SQL语句组成一个执行单元,这执行单元要么全部执行,要么全部不执行 案例:转账 张三丰 1000 郭襄 1000 update 表 set 张三丰余额500 where name“张三丰” update 表 set 郭襄的余额1500 where na…

Mysql视图语法 以及案例分析

视图 含义:虚拟表,和普通表一样使用 mysql5.1版本出现的新特性,是通过表动态生成的数据 比如: #一.创建视图 语法: create view 视图名 as 查询语句; (一般复杂的语句)*/ #案列:查询姓张的学生名和专业名 #以前的查询方法 SELECT stuname,majorname FROM stuinfo s INNER…

Mysql数据库中的系统变量和自定义变量的使用步骤和语法

变量 系统变量: 全局变量 会话变量 自定义变量: 用户变量 局部变量 一.系统变量 说明: 变量由系统提供,不是用户定义,属于服务器层面 注意: 如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果不写,则默认是session 使用语法: 1.查看所有的系统变量 SHOW…

mysql存储过程的-创建(in,out,inout)-删除-查看

存储过程 含义:一组经过预先编译的sql语句的集合 好处:1、提高了sql语句的重用性,减少了开发程序员的压力 2、提高了效率 3、减少了传输次数 分类: 1、无返回无参 2、仅仅带in类型,无返回有参 3、仅仅带out类型,有返…

JDBC获取数据库连接五种方式

** 获取数据库连接方式: ** package com.atguigu.connection;import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties…

HTML表格\表单\其他标签

表格标签 <body>table 标签是表格标签 border 设置表格标签 width 设置表格宽度 height 设置表格高度 align 设置表格相对于页面的对齐方式cellspacing 设置单元格间距 tr 是行标签 th 是表头标签 td 是单元格标签 align 设置单元格文本对齐方式 b 是加粗标签 --> &l…

html用户注册页面

** html用户注册界面 ** <body> <!-- form 标签是表单标签 action 属性设置提交的服务器地址 method 属性设置提交的方式 GET(默认值)或 POST 表单提交的时候&#xff0c;数据没有发送给服务器的三种情况&#xff1a; 1、表单项没有 name 属性值 2、单选、复选&…

JavaScript 中的事件onload 加载完成事件-onclick 单击事件-onblur 失去焦点事件-onchange 内容发生改变事件-onsubmit 表单提交事件

什么是事件&#xff1f;事件是电脑输入设备与页面进行交互的响应。我们称之为事件。 常用的事件&#xff1a; onload 加载完成事件&#xff1a; 页面加载完成之后&#xff0c;常用于做页面 js 代码初始化操作onclick 单击事件&#xff1a; 常用于按钮的点击响应操作。onblur 失…