mysql笔记--表级别的约束

表级别的约束

1. 主键约束----primary key

主键:表中一个列或者多个列的组合,要求该列的数据唯一

单字段主键:字段名 数据类型 属性 primary key

多字段主键:primary key (字段1,字段2)

主键列的值不能为空!!!

例子:创建一张员工表tb_emp1,以id为主键

create table tb_emp1(id int primary key,name varchar(25),deptid int,salary float);             创建一张员工表tb_emp1,以id和name为组合主键

create table tb_emp3(id int,name varchar(25),deptid int,salary float,primary key(id,name));

2. 自动增长----auto_incerment

只作用于主键,是数值型的自动增长

例子:

create table tb_emp4(id int primary key auto_increment,name varchar(25),deptid int,

salary float);

3. 非空约束----not null

Create 表名(列名 类型 not null)

4. 默认值约束----default

Create 表名(列名 类型 not null default 数值)

create table tb_emp6(id int primary key auto_increment,name varchar(25) not null,

deptid int not null default 1,salary float not null default 5000);

5. 外键----foreign key

外键主要用来将两个表的数据进行连接

create 表名(列名 类型 属性,constraint 外键名称 foreign key(列名)

references 另一个表名(列名));

注意:建立外键连接的两个字段的类型、属性要一致!!!

例子:建立部门表 tb_dept7、员工表tb_emp7,将两张表的deptid建立外键约束

create table tb_dept7(id int primary key,name varchar(20));

注:部门表要先插入数据才能建立员工表

create table tb_emp7(id int primary key auto_increment,name varchar(25) not null,

deptid int not null default 1,salary float not null default 5000,constraint fk_emp7_dept7 foreign key(deptid) references tb_dept7(id));

删除外键:因为可以有多个外键,所以要有名称

要删除建立外键连接的表数据时,要先解除外键连接

alter table 表名drop foreign key 外键名称;

删除主键:alter table 表名 drop primary key;

如果主键字段是自增时,不能直接删除,要先改定义把自增删除!

时间: 2024-12-22 15:43:31

mysql笔记--表级别的约束的相关文章

MySQL.常见表选项及约束

1.create table 选项 1.指定列选项 default.comment 2.指定表选项 engine.auto_increment.comment 2.create table 约束 1.非空约束:not null 2.唯一约束:unique 3.主键约束: primary key 4.外键:      foreign key 5.检查enum.set:chect 一.create table 选项 a. 定义列的时候,指定列选项 1.default<literal>:定义列的默认

MySql 数据库表之间---&gt;&gt;&gt;增加约束

#1.向表emp2的id列中添加PRIMARY KEY约束(my_emp_id_pk) ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;ALTER TABLE emp2 ADD CONSTRAINT my_emp_id_pk PRIMARY KEY(id); #2. 向表dept2的id列中添加PRIMARY KEY约束(my_dept_id_pk) #3. 向表emp2中添加列dept_id,并在其中定义FOREIGN KEY约束,与之相关联

MySQL常见建表选项及约束

一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 :如果没有,则为null. mysql> create table people                                                                      -> (    ->  id int not nu

基础入门_Python-模块和包.深入SQLAlchemy之列级别约束与表级别约束?

简单介绍: 说明: 此模块主要用于将关系型数据库表映射到PY的类,行映射到PY类的实例,列映射为PY实例的属性,由于其兼容众多DB-API及扩展,SO可以优先考虑数据模型,而忽略底层的DB-API切换,数据迁移更方便. 快速安装: pip install --upgrade SQLAlchemy 创建引擎: 1. 连接数据库前需创建引擎,作为执行SQL的接口,其实底层通过Pool(连接池)和Dialect(翻译器)将映射后的PY语句转换为对应DB-API支持的原生SQL语句去执行,这样写PY时就

MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)

MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作): a.创建2张表 create table userinfo(nid int not null auto_increment primary key, name varchar(10), age int, part_nid int )engine=innodb default charset=utf8; create table part( nid int not null auto_in

MySQL之表的约束

一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 ZEROFILL 使用0填充

mysql为表添加外键完成性约束 报错Can&#39;t create table &#39;sfkbbs.#sql-513_25&#39; (errno: 150)

代码 alter table sfk_son_module add constraint foreign key(father_module_id) references sfk_father_module(id) on delete restrict on update restrict; (constraint 后面可以加上约束名字) 错误原因是之前两张表的id的类型不一样,一个时int,一个时bigint 解决办法时修改表, alter table sfk_father_module mo

mysql笔记5_多表连接

多表连接: 交叉连接(笛卡尔积)cross join(基本上无实际意义,避免). 内连接,即等值连接 inner join...on... 左外连接 left join...on...主表的记录全部显示,如果没有记录则补空.连接左边的表作为主表. 右外连接 right join...on...同左外连接. 全外连接 自连接 主表.从表是同一张表. 子查询:为主查询提供查询数据. mysql笔记5_多表连接

【MySQL学习笔记】MySQL权限表

MySQL权限表,控制用户对数据库的访问,存在mysql数据库中,由mysql_install_db初始化,包括user,db,host,tables_priv,columns_priv,procs_priv 1.user表,记录允许连接到服务器的账号信息,权限为全局级. 用户列(包括host,user,password,前二者为user表的联合主键). 权限列,描述用户权限,值为N or Y,默认值都为N,修改需要靠grant或update 安全列 n  两个ssl相关,用于加密,show v