文章目录

  • 一、表字段的增删改
    • 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(约束与关系)相关推荐

  1. 电脑安装python3.74_python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

  2. Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发

    Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发 Polyworks支持C#二次开发,用对应的SDK文档试着做一下开发样例. 新建一个C#项目,在解决方案中右键添加引用 ...

  3. Mr.J-- jQuery学习笔记(十六)--展开和收起动画折叠菜单的实现

    之前写过动画的隐藏与显示:Mr.J-- jQuery学习笔记(十四)--动画显示隐藏 动画隐藏与显示的一个小demo--对联广告:Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告 与动 ...

  4. C语言结构体变量和结构体数组-学习笔记(十六)

    一.结构体变量 1.结构体概念 将不同类型的数据组合成一个有机的整体即为结构体.结构体由许多组织在一起的数据项组成,这些数据项不需要属于同一类型. 2.结构体类型及结构体变量定义 (1)结构体类型声明 ...

  5. 马哥 mysql_马哥学习笔记十五——MySQL进阶之SQL语句

    数据库: create database|schema [if not exists] db_name [character set =] [collate =]; alter database dr ...

  6. 【theano-windows】学习笔记十六——深度信念网络DBN

    前言 前面学习了受限玻尔兹曼机(RBM)的理论和搭建方法, 如果稍微了解过的人, 肯定知道利用RBM可以堆叠构成深度信念网络(deep belief network, DBN)和深度玻尔兹曼机(dee ...

  7. MonoRail学习笔记十六:AJax在MonoRail中的使用

    AJax几乎成了web2.0的一个代表,Java和Asp.net中都提供了一些AJax操作的控件.在MonoRail中也同样提供了AJax操作的共通类:AJaxHelper AJaxHelper可以指 ...

  8. 马哥 mysql_马哥学习笔记十八——MySQL进阶之日志管理

    错误日志:log_error,log_warnings 服务器启动和关闭过程中的信息 服务器运行过程中的错误信息 事件调度运行一个事件时产生的信息 在从服务器上启动从服务器进程时产生的信息 一般查询日 ...

  9. JavaScript权威设计--CSS(简要学习笔记十六)

    1.Document的一些特殊属性 document.lastModified document.URL document.title document.referrer document.domai ...

  10. Jenkins deploy to container部署war到tomcat(学习笔记十六)

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *如有错误,请指正 * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horiz ...

最新文章

  1. DevOps:怎么实现源代码注释和系统文档的自动化更新?
  2. 一款NPN三极管测量: BC547C
  3. mvc html.hidden,MVC Html.HiddenFor在一个循环传递模型回控制器
  4. Watch out for these 10 common pitfalls of experienced Java developers architects--转
  5. 在C#中使用Irony实现SQL语句的解析
  6. ny225 小明求素数积
  7. MySQLBackup 8.0.26 备份与恢复
  8. 关于INADDR_ANY
  9. 操作系统系统用c语言写,用C语言写关于操作系统的一个问题。
  10. 【Android】实例 忐忑的精灵
  11. 机器学习中的特征工程总结
  12. HBuilder配置Mumu模拟器
  13. Qt获取windows文档、下载、图片等目录路径
  14. 阅读高效能人士七个习惯
  15. OpenCV中文文档4.0.0学习笔记(更新中……)
  16. 2013 CocoaChina微信精选之技术汇
  17. ​浓情七夕,有礼相送!
  18. 安卓listView实现多级列表
  19. 华为2288v5服务器安装Centos7系统
  20. 谈谈 COS 中国自主知识产权智能手机操作系统

热门文章

  1. 77. Leetcode 1439. 有序矩阵中的第 k 个最小数组和 (堆-技巧二-多路归并)
  2. 49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)
  3. 集成学习(一)—预备知识:分类树和回归树
  4. R语言实战应用精讲50篇(十三)-如何使用JAVA调用R语言,两种语言的完美结合
  5. Keras情感分析(Sentiment Analysis)实战---自然语言处理技术
  6. 基于消息的分布式架构设计
  7. MySQL如何向表中增加、修改字段
  8. 阿里云、Amazon、Google云数据库方案架构与技术分析
  9. True Zero Downtime HAProxy Reloads--转载
  10. Java 编程的动态性,第 8 部分: 用代码生成取代反射--转载