mysql约束以及数据库的修改
一、约束
1、约束保证数据完整性和一致性。
2、约束分为表级约束和列级约束。
(1)表级约束(约束针对于两个或两个以上的字段使用)
(2)列级约束(针对于一个字段使用)
3、约束类型有:
(1)NOT NULL(非空约束)
(2)PRIMARY KEY(主键约束)
(3)UNiQUE KEY(唯一约束)
(4)DEFAULT(默认约束)
(5)FOREIGN KEY(外键约束)
实现一对一或一对多关系。
4、要求

(1)有参照列为父表,有外键列为子表
(2)加上FOREIGN KEY的列为外键列
【把my.ini文件里的default-storage-engine=innoDB】
(3)建立provinces表和users表




(4)查看INDEXES


5、外键约束参照操作

(1)我们建立一个表结构


(2)加入元素


(3)删除父表一个元素

父表中的3、C删除之后,子表1、Tom、3也删除了
6、表级约束,列级约束

二、修改数据表
一 、添加列




二、添加约束
(示例)
1、添加主键约束

mysql>ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);
2、添加唯一约束

mysql> ALTER TABLE users2 ADD UNIQUE (username);
3、添加外键约束

mysql> ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);
4、添加/删除默认约束

添加默认:mysql> ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL;
修改默认值:mysql> ALTER TABLE users2 ALTER age SET DEFAULT 15;
删除默认值:mysql> ALTER TABLE users2 ALTER age DROP DEFAULT;
三、删除约束
1、删除主键约束

mysql> ALTER TABLE users2 DROP PRIMARY KEY;
2、删除唯一约束

mysql> SHOW INDEXES FROM users2\G;//显示INDEXES
*************************** 1. row ***************************
Table: users2
Non_unique: 0
Key_name: username
Seq_in_index: 1
Column_name: username
。。。。。。
*************************** 2. row ***************************
Table: users2
Non_unique: 1
Key_name: pid
Seq_in_index: 1
Column_name: pid
。。。。。。

mysql> ALTER TABLE users2 DROP INDEX username ;
(删除约束而不是字段)
3、删除外键约束

(1)查看属性mysql> SHOW CREATE TABLE users2;

users2_ibfk_1为外键名字
mysql> ALTER TABLE users2 DROP FOREIGN KEY users2_ibfk_1;(利用外键名删除外键)
此时外键已被删除

此时还有索引‘pid’删除它
ALTER TABLE users2 DROP INDEX pid;
四、修改列定义

mysql> ALTER TABLE users2 MODIFY id SMALLINT NOT NULL FIRST;(将id字段调整到第一的位置)
mysql> ALTER TABLE users2 MODIFY id TINYINT NOT NULL;(可以把SMALLINT强转成TINYINT,会有溢出)

mysql> ALTER TABLE users2 CHANGE pid p_id TINYINT NOT NULL;(将pid改为p_id)

方法一:mysql> ALTER users2 RENAME users3;
方法二: mysql> RENAME users3 TO users1;(可以对多个数据表更名)
总结:

mysql约束以及数据库的修改的更多相关文章
- MySQL 约束和数据库设计
1.MySQL 约束: 1.约束的概念: 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. MySQL中,常用的几种约束: 约束类型: 非空 主键 唯一 外键 默认值 ...
- mysql基础篇 - 数据库及表的修改和删除
基础篇 - 数据库及表的修改和删除 修改和删除 一.实验简介 本节实验中,我们将学习并实践如何对数据库的内容做修改,删除,重命名等操作. 二.实验准备 在正式开始本实验内容之前,需要先 ...
- MySql数据库安装&修改密码&开启远程连接图解
相关工具下载地址: mysql5.6 链接:http://pan.baidu.com/s/1o8ybn4I密码:aim1 SQLyog-12.0.8 链接:http://pan.baidu.com/s ...
- MySQL系列:查看并修改当前数据库的编码
MySQL中,数据库的编码是一个相当重要的问题,有时候我们需要查看一下当前数据库的编码,甚至需要修改一下数据库编码. 查看当前数据库编码的SQL语句为: mysql> use xxx ...
- mysql数据库的基本操作:创建数据库、查看数据库、修改数据库、删除数据库
本节相关: 创建数据库 查看数据库 修改数据库 删除数据库 首发时间:2018-02-13 20:47 修改: 2018-04-07:考虑到规范化,将所有语法中“关键字”变成大写;以及因为整理“mys ...
- windows安装mysql数据库并修改密码
1.下载 MySQL Community Server https://dev.mysql.com/downloads/mysql/ 2.解压 如果想要让MySQL安装在指定目录,那么就将解压后的文件 ...
- Mysql总结_02_mysql数据库忘记密码时如何修改
1.从cmd进入mysql的bin下,输入命令 mysqld --skip-grant-tables 回车 注:(输入命令前,确保在任务管理器中已没有mysql的进程在运行,可输入命令:net s ...
- MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制
/*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修 ...
- mysql数据库常见问题修改(待补充)
1.修改mysql最大连接数的方法:临时修改:1.使用命令show variables 来查看当前最大连接数 show variables like '%max_connections%'; 使用命令 ...
随机推荐
- 利用jvisualvm使用btrace进行线上调试案例
用途:btrace主要用于线上调试.通过btrace,可在不改动代码的前提下,方便的发现以下问题: 1.定位性能慢的接口服务: 2.实时打印堆栈信息,定位死锁位置: 3.定位占用大量内存空间的代码块: ...
- HTTP发送RAW请求注意的问题
1.使用jar httpcomponents-client-4.5.6-bin.tar.gz 解压后倒入lib中的所有包 2.参考代码如下 import org.apache.http.HttpRes ...
- ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction解决办法
一.问题描述: 同事反馈线上一个表有其中一条数据无法删除,其他都正常,我拿到删数据的sql,尝试执行,报错如下: mysql> delete from facebook_posts where ...
- 18Linux-LNMP-Linux就该这么学
LNMP 编译环境包: [root@linuxprobe ~]# yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cp ...
- JAVA并发-基于AQS实现自己的显示锁
一.了解什么是AQS 原文链接:http://www.studyshare.cn/blog-front/blog/details/1131 AQS是AbstractQueuedSynchronizer ...
- JSFL元件类型判断 转载于 https://blog.csdn.net/linking530/article/details/8364600
//获取舞台上第一层第一帧上的全部元件 var els = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements; //遍历元件 ...
- vue keep-alive 原理
前人种树:https://segmentfault.com/a/1190000011978825 add : 使用 keep-alive 组件后,组件生命周期会新引入两个钩子
- Jenkins+Git+Maven构建并部署war包到tomcat
主要思路:1.jenkins从git中拉取项目源码:jenkins使用maven构建并将生成的war部署到tomcat容器下. 环境:Centos7.Maven3.5.3.git(单机) 安装Git ...
- git commit命令
git commit 主要是将暂存区里的改动提交到本地的版本库.每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id. commit-id在版 ...
- board_key.h/board_key.c
/******************************************************************************* Filename: board_key ...