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%'; 使用命令 ...
随机推荐
- QMap迭代器
QMap<int, QString> intToStr; intToStr[] = "test" for (auto iter = intToStr.begin(); ...
- hash加密
hash import hashlib content = 'its so coll'.encode('utf8') o = hashlib.sha1() # 创建一个hash对象 o.update( ...
- sentry的安装和使用以及各种问题处理
官方的git地址:https://github.com/getsentry/onpremise 需要先安装docker 1.10版本以上 假设你已经安装完docker,那么接下来 安装docker-c ...
- 用ASP.NET_Regsql.exe创建Session数据库
CMD: C:\Users\ZhangSC>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe -S ZhangS ...
- PG数据基本命令——连接(笔记)
在PostgreSQL中,有以下类型的连接: 内连接(INNER JOIN) 左外连接(LEFT OUTER JOIN) 右外连接(RIGHT OUTER JOIN) 全连接(FULL OUTER J ...
- 11. java中路径/和\的区别
一般可以认为是"/"的作用等同于"\\"在java中路径一般用"/"windows中的路径一般用"\"linux.uni ...
- mySQL的表操作
1.新建表 CREATE TABLE 表名 ( 属性名 数据类型 [完整约束条件], 属性名 数据类型 [完整约束条件], ... ... 属性名 数据类型 [完整约束条件] ); 2.删除表 DRO ...
- python大法好——多线程
Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件 ...
- python各种web框架对比
0 引言 python在web开发方面有着广泛的应用.鉴于各种各样的框架,对于开发者来说如何选择将成为一个问题.为此,我特此对比较常见的几种框架从性能.使用感受以及应用情况进行一个粗略的 ...
- DRF框架之视图方法的几个封装好的模块介绍(第三天)
1.DRF框架给我们封装好了好多层模块的 来实现简便接口的编写 # from rest_framework.mixins import CreateModelMixin, UpdateModelMix ...