学习笔记(十六)——MySQL(约束与关系)
文章目录
- 一、表字段的增删改
- 1、添加字段
- 2、删除字段
- 3、修改
- 二、约束
- 1、默认约束 default
- 2、非空约束 not null
- 3、唯一约束 unique key
- 4、主键约束 primary key
- 5、自增长约束 auto_increment
- 6、外键约束
- 三、表关系
- 1、一对一
- 2、一对多
- 3、多对多
一、表字段的增删改
1、添加字段
alter table 表名 add 字段名 字段类型; #默认顺移往后添加
alter table 表名 add 字段名 字段类型 first; # 添加到表的第一行
alter table 表名 add 字段名 字段类型 after id; #添加到id的下一行 id:某一行
2、删除字段
alter table 表名 drop 字段名;
3、修改
3.1、修改表名
alter table 表名 rename to 新表名;
3.2、修复字段名
alter table 表名 change 旧字段名 新字段名 字段类型;
3.3、修改字段类型
alter table 表名 modify 字段 新字段类型;
总结:字段的增删改查基本上用不到,一般在设计表格的时候就会确定,这个知识点了解即可
二、约束
约束可以理解为限制,生而为人就会有道德约束和法律约束等等约束,也就是限制同样我们数据得有约束才能让其更加高效更加完美。
desc new_tb; 查看
1、默认约束 default
create table t1 (
id int default 101,
name varchar(10));
在没有设置默认值的情况下,默认值为NULL。
在设置默认值的情况下,默认值为你设置的值,插入数据没有写该字段的时候取默认值。
2、非空约束 not null
限制一个字段的值不能为空,insert的时候必须为该字段赋值。
create table t1(
id int not null,
name varchar(20),
age int default 20);
2.1、删除非空约束
alter table t1 change id id int;
2.2、添加非空约束
alter table t1 change id id int not null;
3、唯一约束 unique key
限制一个字段的值不能重复,该字段的数据不能重复出现,确保字段中的值唯一。
create table t1(
id int unique key,
name varchar(20),
age int default 20 #默认值20
);
3.1、删除唯一约束
drop index id on t1;
3.2、添加唯一约束
alter table t1 add unique(id)
4、主键约束 primary key
主键 = 非空 + 唯一
通常每张表都需要一个主键来体现唯一性,每张表里面只能有一个主键。
create table t1(
id int primary key,
name varchar(20),
age int default 20);
指定主键的另外一种方式:
create table t1(
id int,
name varchar(20),
age int default 20,
primary key(id)
);
4.1、删除主键
alter table t1 drop primary key;
4.2、添加主键
alter table t1 add primary key(id);
5、自增长约束 auto_increment
自动编号,和主键组合使用,一个表里面只能有一个自增长。
默认从1 开始增长。
create table t4(
id int primary key auto_increment,
age int default 18
); #auto_increment=50; 从50开始增长
6、外键约束
表与表之间产生联系,保持数据的一致性: 我有的你一定有,你没有的,我绝对没有。
······这个有点绕,还是直接例子说明吧。
create table a(
id_a int primary key,
name varchar(20)
);create table b(
id_b int primary key,
name varchar(20),
foreign key(id_b) references ta(id_a)
);
首先,我们先创建两个表,把表b的id_b设置成表a的外键,那么我们只能先对表a进行数据插入(表a没数据时,不能对表b进行插入数据)。假设,表a先插入数据(1,‘wangwu’),(2,‘lisi’),那么表b的id_b插入的值只能为1或2。
三、表关系
1、一对一
两个键都为主键,非空且唯一,所以形成一对一的关系。
用外键的方式,把两个表关联, 主键连接主键。
create table stu( #创建学生表
id int primary key,
name varchar(20) not null
);create table stu_details( #创建学生详细信息表
id int primary key,
age int,
addr varchar(20),
phone int,
foreign key(id) references stu(id) #两个表关联, 主键连接主键
);
2、一对多
用外键的方式,把两个表关联, 非主键连接主键。
create table academy(
a_id int primary key,
a_name varchar(20) not null
);create table student(
s_id int primary key,
s_name varchar(20) not null,
aca_id int not null,
foreign key(aca_id) references academy(a_id) #非主键连接主键
);
3、多对多
这个···直接上示例吧
示例:学生选课
课程对多个学生 ,学生对多个课程;
需要创建中间表有两个字段(学生编号,课程编号);
课程表有两个字段(课程编号,课程名字);
主键加主键来实现的(联合主键);
create table course(
c_id int primary key,
c_name varchar(20)
);create table student(
st_id int primary key,
st_name varchar(20)
);create table choose_course(
c_id int,
st_id int,
primary key(c_id,st_id),
foreign key(c_id) references course(c_id),
foreign key(st_id) references student1(st_id)
);----------------
数据插入:
insert into course values(1, 'python'),(2,'java'),(3,'c++');
insert into student values(1,'qiye'),(2,'gg');
insert into choose_course values(1,3);
insert into choose_course values(2,3);
insert into choose_course values(1,1);
学习笔记(十六)——MySQL(约束与关系)相关推荐
- 电脑安装python3.74_python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
- Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发
Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发 Polyworks支持C#二次开发,用对应的SDK文档试着做一下开发样例. 新建一个C#项目,在解决方案中右键添加引用 ...
- Mr.J-- jQuery学习笔记(十六)--展开和收起动画折叠菜单的实现
之前写过动画的隐藏与显示:Mr.J-- jQuery学习笔记(十四)--动画显示隐藏 动画隐藏与显示的一个小demo--对联广告:Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告 与动 ...
- C语言结构体变量和结构体数组-学习笔记(十六)
一.结构体变量 1.结构体概念 将不同类型的数据组合成一个有机的整体即为结构体.结构体由许多组织在一起的数据项组成,这些数据项不需要属于同一类型. 2.结构体类型及结构体变量定义 (1)结构体类型声明 ...
- 马哥 mysql_马哥学习笔记十五——MySQL进阶之SQL语句
数据库: create database|schema [if not exists] db_name [character set =] [collate =]; alter database dr ...
- 【theano-windows】学习笔记十六——深度信念网络DBN
前言 前面学习了受限玻尔兹曼机(RBM)的理论和搭建方法, 如果稍微了解过的人, 肯定知道利用RBM可以堆叠构成深度信念网络(deep belief network, DBN)和深度玻尔兹曼机(dee ...
- MonoRail学习笔记十六:AJax在MonoRail中的使用
AJax几乎成了web2.0的一个代表,Java和Asp.net中都提供了一些AJax操作的控件.在MonoRail中也同样提供了AJax操作的共通类:AJaxHelper AJaxHelper可以指 ...
- 马哥 mysql_马哥学习笔记十八——MySQL进阶之日志管理
错误日志:log_error,log_warnings 服务器启动和关闭过程中的信息 服务器运行过程中的错误信息 事件调度运行一个事件时产生的信息 在从服务器上启动从服务器进程时产生的信息 一般查询日 ...
- JavaScript权威设计--CSS(简要学习笔记十六)
1.Document的一些特殊属性 document.lastModified document.URL document.title document.referrer document.domai ...
- Jenkins deploy to container部署war到tomcat(学习笔记十六)
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. *如有错误,请指正 * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horiz ...
最新文章
- DevOps:怎么实现源代码注释和系统文档的自动化更新?
- 一款NPN三极管测量: BC547C
- mvc html.hidden,MVC Html.HiddenFor在一个循环传递模型回控制器
- Watch out for these 10 common pitfalls of experienced Java developers architects--转
- 在C#中使用Irony实现SQL语句的解析
- ny225 小明求素数积
- MySQLBackup 8.0.26 备份与恢复
- 关于INADDR_ANY
- 操作系统系统用c语言写,用C语言写关于操作系统的一个问题。
- 【Android】实例 忐忑的精灵
- 机器学习中的特征工程总结
- HBuilder配置Mumu模拟器
- Qt获取windows文档、下载、图片等目录路径
- 阅读高效能人士七个习惯
- OpenCV中文文档4.0.0学习笔记(更新中……)
- 2013 CocoaChina微信精选之技术汇
- ​浓情七夕,有礼相送!
- 安卓listView实现多级列表
- 华为2288v5服务器安装Centos7系统
- 谈谈 COS 中国自主知识产权智能手机操作系统
热门文章
- 77. Leetcode 1439. 有序矩阵中的第 k 个最小数组和 (堆-技巧二-多路归并)
- 49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)
- 集成学习(一)—预备知识:分类树和回归树
- R语言实战应用精讲50篇(十三)-如何使用JAVA调用R语言,两种语言的完美结合
- Keras情感分析(Sentiment Analysis)实战---自然语言处理技术
- 基于消息的分布式架构设计
- MySQL如何向表中增加、修改字段
- 阿里云、Amazon、Google云数据库方案架构与技术分析
- True Zero Downtime HAProxy Reloads--转载
- Java 编程的动态性,第 8 部分: 用代码生成取代反射--转载