约束以及修改数据表

先创建一个数据表

再创建一张数据表,让其属性pid参照上一个provinces数据表的id

主要代码为:FOREIGN KEY (pid) REFERENCES provinces(id)

查看province以及users的表索引,就可以看到两个约束,一个是主键id另一个就是pid

接下来了解外键约束的参照操作

  1. CASCAD:从父表删除或更新且自动删除或更新子表中匹配的行
  2. SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
  3. RESTRICT:拒绝对父表的删除或更新操作
  4. NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同

现在provinces表中插入几个元素

新建一个数据表users1,其pid参见provinces的id且受其CASCADE类型的外键约束

往users1中插入几个元素

可见当创建(‘John‘,7)这个元素时,由于provinces中的id没有7,所以导致创建失败

删除provinces中id=3的元素看对users1有没有影响

可见users1中pid为3的元素也跟着被删除了

接下来修改数据表

先查看users1的列,并给其添加一个age列

主要代码为:ALTER TABLE tablename ADD columnname;

再添加一些列,并通过FIRST 和AFTER代码来指定其位置

查看结果,然后删除列truename

查看结果并同时删除password 和age列

再创建一张表users2

查看users2的列,并将id设为主键,这个操作的名字为PK_users2_id(自己定的)

将username改为唯一标识

查看结果,并将pid的属性参照provinces的id属性

给users2增加age属性

给age设置默认值

删除age的默认值

查看结果

取消pid的外键约束

查看结果

删除pid的唯一标识约束,注意只是删除约束,列还是存在的

将id的列设在第一位并查看结果

修改pid的名字和类型

给数据表更名

约束

按功能划为:NOT NULL,PRIMARY KEY,UNIQUE KEY,DEFAULT,FOREIGN KEY

按数据列的数目划为:表级约束,列级约束

修改数据表

针对字段的操作:添加/删除字段、修改列定义,修改列名称等

针对约束的操作:添加/删除各种约束

针对数据表的操作:数据表更名(两种方式)

时间: 2024-12-10 06:12:51

约束以及修改数据表的相关文章

MySQL数据库基础(二)(约束以及修改数据表)(持续更新中)

一,约束以及修改数据表 约束的作用?1.约束保证数据的完整性.一致性:2.约束分为表级约束.列级约束:3.约束类型包括:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE KEY(唯一约束).DEFAULT(默认约束).FOREIGN KEY(外键约束): 列级约束:只针对某一个字段:表级约束:针对两个或两个以上的字段: 1.外键约束的要求解析 外键约束作用:1.保持数据一致性.完整性:2.实现一对一或一对多关系:(这是也把MySQL称之为"关系型"数据库的

MySQL学习笔记 约束以及修改数据表

*** 约束保证数据的完整性和一致性 *** 约束分为表级约束和列级约束 *** 约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNIQUE KEY(唯一约束) DEFAULT(默认约束) FOREIGN KEY(外键约束) 1.外键约束的要求解析 *** 父表和子表必须使用相同的存储引擎,而且禁止使用临时表. *** 数据表的存储引擎只能为InnoDB. *** 外键列和参照列必须具有相似的数据类型.其中数字的长度或是否有符号位必须相同:而字符的长度则可以不

MySQL(三) —— 约束以及修改数据表

约束: 1. 约束保证数据的完整性和一致性: 2. 约束分为表级约束和列级约束: 3. 约束类型包括:NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREIGN KEY 外键约束 父表和子表必须使用相同的存储引擎,而且禁止使用临时表: 数据库的存储引擎只能为InnoDB: 外键列和参照列必须具有相似的数据类型.其中数字的长度或是否有符号位必须相同:而字符的长度则可以不同: 外键列和参照列必须创建索引.如果外键列不存在索引的话,MySQL将自动创建索引.

修改数据表——添加删除列

修改数据表的操作,无非就是列的增加.列的删除.约束的增加和约束的删除. 修改数据表 一.添加单列的语法结构 ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name] 例如:在users表中添加一个age列,如果没有指定这个列的位置,那么它将位于所有列的最下边.如下图. FIRST的意思,将你写的这一列,放在最前头. AFTER的意思,将你写的这一列,放在指定列的后面. 若省略FIRST和

oracle表空间基本命令,修改数据表结构基本命令

表空间基本命令 --创建表空间   初始化大小10M  自动增长5M  最大50M create tablespace duan datafile 'F:\oracle\product\10.2.0\oradata\orcl\duan.dbf' size 10M autoextend on next 5M maxsize 50M; --查询表空间的地址和空间名称 select file_name,tablespace_name from dba_data_files order by file_

MySQL学习12:修改数据表(二)

我们接着上一篇的添加约束的操作讲述. 三添加约束 (3)添加外键约束 ALTER TABLE table_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] [index_type] (index_col_name,...) references_definition; 例子: ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id); SHOW COLUMNS

MySQL学习11:修改数据表(一)

修改数据表包括添加列.删除列.添加约束.删除约束,修改列定义和修改数据表名称,后面的两个我们使用时 一定要谨慎,尽量不使用. 下面就来一个一个单独介绍怎么修改数据表: 一添加数据表中的列 (1)添加单列 MySQL数据库的数据表中添加单列的语法格式为: ALTER TABLE table_name ADD [COLUMN] col_name columns_definition [FIRST | AFTER col_name]; 例子: SHOW COLUMNS FROM users1; ALT

mysql开启远程登陆(修改数据表和授权两种方法)

一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 新建规则"新建出站规则向导",在向导的第一步,选择要创建的防火墙规则类型,选择第二个"端口". windows防火墙添加端口方法 windows的防火墙做了比较大升级 设置已经分为入站和出站.控制面板\所有控制面板项\Windows 防火墙 进入 入站规则设置第一步

mysql修改数据表名

在使用mysql时,经常遇到表名不符合规范或标准,但是表里已经有大量的数据了,如何保留数据,只更改表名呢? 可以通过建一个相同的表结构的表,把原来的数据导入到新表中,但是这样视乎很麻烦. 能否简单使用一个SQL语句就搞定呢?当然可以,mysql5.0下我们使用这样的SQL语句就可以了. ALTER  TABLE table_name RENAME TO new_table_name 例如 ALTER  TABLE admin_user RENAME TO a_user mysql修改数据表名