主键:

关键字:primary key

特点:不能为null,并且唯一。

主键分类:

逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐)

业务主键:例如username,参与实际的业务逻辑。

主键使用方式:

方式一:

Create table t1(

Id int primary key,

Name varchar(100)

);

Insert into t1 values(1,'zs');

Insert into t1 values(2,'ls');

主键自动增长:

关键字: auto_increment

create table t4(

id int primary key auto_increment,

name varchar(100)

);

Insert into t4(name) values(‘zs');

Insert into t4 values(null,'ls');

域完整性:

指数据库表的列(即字段)必须符合某种特定的数据类型或约束

数据类型

长度

非空约束:NOT NULL

唯一约束:UNIQUE

CREATE TABLE t5(

username varchar(100) NOT NULL UNIQUE,

gender varchar(100) NOT NULL,

phonenum varchar(100) UNIQUE

);

数据表之间的连接:

1.一对多(1*N):客户和订单,一个客户可以有多个订单,每个订单只属于一个客户

创建客户表:

CREATE TABLE customers(

id int,

name varchar(100),

address varchar(255),

PRIMARY KEY(id)

);

创建订单表:

CREATE TABLE orders(

order_num int primary key,

price float(8,2),

status int,

customer_id int,

CONSTRAINT customer_id_fk FOREIGN KEY(customer_id) REFERENCES customers(id)

);

插入数据:

2.多对多:用第三张表的外键连接两张表的主键。

老师和学生是多对多关系, 一个老师对应多个学生,一个学生被多个老师教

创建老师表:

Create table teachers(

id int,

name varchar(100)

salary float(8,2),

primary key(id)

);

创建学生表:

Create table students(

id int,

name varchar(100),

grade varchar(100),

primary key(id)

);

第三张表格:

Create table teacher_student(

t_id int,

s_id int,

primary key(t_id,s_id)

CONSTRAINT teacher_id_fk FOREIGN KEY(t_id) REFERENCES teachers(id),

CONSTRAINT student_id_fk FOREIGN KEY(s_id) REFERENCES students(id)

);

插入数据:

3.一对一:一张表的外键连接第二张表的主键,实际开发中不需要这么做,直接设计一张表格就可以了。

多表查询:

交叉连接(笛卡尔积):第一个表格的所有行 乘以 第二个表格中的所有行,最终结果不正确,故一般不使用。

内连接:

因为交叉连接获得的结果集是错误的。因此内连接是在交叉连接的基础上

只列出连接表中与连接条件相匹配的数据行,匹配不上的记录不会被列出。

语法:

隐式语法:

select * from customers,orders where customers.id=orders.customer_id;

显式语法:

select * from customers c INNER JOIN orders o ON c.id=o.customer_id;

外连接:

外连接是以一张表为基表,其他表信息进行拼接,如果有就拼接上,如果没有显示null; 外连接分为左外连接和右外连接。

左外连接: 以关键字左边的表格为基表进行拼接

语法: select * from customers c LEFT JOIN orders o ON c.id=o.customer_id;

右外连接: 以关键字右边的表格为基表

语法: select * from orders o RIGHT JOIN customers c ON c.id=o.customer_id;

注意:表a左外连接表b与表b右外连接表a结果是一样的。

子查询:

某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就会用到子查询,为了给主查询(外部查询) 提供数据而首先执行的查询(内部查询)被叫做子查询; 子查询分为嵌套子查询和相关子查询。

嵌套子查询:

内部查询的执行独立于外部查询,内部查询仅执行一次,执行完毕后将结果作为外部查询的条件使用(嵌套子查询中的子查询语句可以拿出来单独运行。)

语法及练习: 查询出id为1的老师教过的所有学生。

select * from students where id in(select s_id from teacher_student where t_id=1);

相关子查询:

内部查询的执行依赖于外部查询的数据,外部查询每执行一次,内部查询也会执行一次。每一次都是外部查询先执行,取出外部查询表中的一个元组,将当前元组中的数据传递给内部查询,然后执行内部查询。根据内部查询执行的结果,判断当前元组是否满足外部查询中的where条件,若满足则当前元组是符合要求的记录,否则不符合要求。然后,外部查询继续取出下一个元组数据,执行上述的操作,直到全部元组均被处理完毕。

语法及练习:求每一科考试成绩大于平均分的学生的分数。

select * from score as a where a.score>(select avg(b.score) from score as b where a.cou_id=b.cou_id);

以上所述是小编给大家介绍的MySql数据表之间的连接、查询详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解相关推荐

  1. mysql半备份_MySQL半同步复制与增强半同步复制详解及安装

    一.基础 1.目前MySQL主要有三种复制方式 1)异步复制 2)半同步复制 3)增强半同步复制 推荐使用:对性能要求较高的推荐使用异步复制 ,如果运行的金融类业务推荐使用增强半同步复制,并使用ROW ...

  2. 六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)

    DML语言 数据操作语言: 插入:insert 修改:update 删除:delete 一.插入语句 (1)方式一:经典的插入方式 语法: insert into 表名(列名,-)values(值1, ...

  3. mysql牵引例子_MySQL学习06(事务和索引)

    事务 概述 什么是事务 事务就是将一组SQL语句放在同一批次内去执行 如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行 MySQL事务处理只支持InnoDB和BDB数据表类型 事务的ACI ...

  4. 零基础的人可以去大数据培训机构学习大数据开发吗?

    随着互联网行业的快速发展,一方面是大企业对大数据相关技术人才的高薪招聘,另一方面是国家政策的大力支持,使得大数据行业备受人们的关注. 面对这么一个热门的行业不少人对大数据产生了浓厚的兴趣,其中不少人是 ...

  5. 数据库系统原理与应用教程(066)—— MySQL 练习题:操作题 71-81(十):连接查询

    数据库系统原理与应用教程(066)-- MySQL 练习题:操作题 71-81(十):连接查询 71.连接查询(1) 数据表:Customers,包含顾客名称:cust_name.顾客 id:cust ...

  6. mysql左连接和内连接区别_MYSQL 左连接右连接和内连接的详解及区别

    MYSQL 左连接右连接和内连接的区别,这里就对这些概念经过一个实例,讲解清楚. 代码如下: drop table table1; CREATE TABLE `andrew`.`table1` ( ` ...

  7. Oracle学习笔记(三)。连接查询。等值连接,非等值连接,自连接,LEFT OUTER JOIN,RIGHT JOIN,FULL JOIN,自然连接,内连接 INNERJOIN

    文章目录 1. 什么是多表查询 2. 多表链接方式 3. 多表连接语法 3.1 语法结构 3.2 定义连接 3.3 原则 4. 等值连接-内连接 4.1 什么是等值连接 4.2 抉择矩阵 4.3 使用 ...

  8. mysql二进制方式_MySQL数据库之MySql二进制连接方式详解

    本文主要向大家介绍了MySQL数据库之MySql二进制连接方式详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 使用mysql二进制方式连接 您可以使用MySQL二进制方式进 ...

  9. python计算各类型电影的评分_【Python数据科学实战项目】之 基于MovieLens的影评趋势分析|详解...

    原标题:[Python数据科学实战项目]之 基于MovieLens的影评趋势分析|详解 注:图片源于https://movielens.org/ 1. 项目任务 1.1 数据来源 本项目使用Group ...

最新文章

  1. phython在file同时写入两个_喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了
  2. k8s kustomize 简明教程:安装 kustomization.yml常用字段解读
  3. infomix数据库版本sql_数据库周刊31丨华为openGauss 正式开源;7月数据库排行榜发布...
  4. python 判断列表为空_Python 判断列表为空
  5. Oracle lower() Upper()函数
  6. 第5节 三个败家子(5)——刘封,被封印的秘密
  7. VideoCLIP-FacebookCMU开源视频文本理解的对比学习预训练,性能SOTA!适用于零样本学习!...
  8. Django:静态文件staticfiles
  9. 内网渗透扫描神器 Perun
  10. c# 操作redisclient 设置过期时间_C# Redis分布式锁 单节点
  11. RabbitMq之发布订阅模式
  12. Chladni Figure CodeForces - 1162D (暴力,真香啊~)
  13. Docker 资料整理
  14. JS 微信公众号如何跳转到另一个微信公众号的链接
  15. java会签_工作流引擎会签,加签,主持人,组长模式 专题讲解
  16. Fragment跳转Fragment以及闭坑指南、方法isadded()
  17. 小米5 android 8.0原生,终于开吃奥利奥!小米5 Android 8.0 内测体验计划开启
  18. 台式计算机机箱的作用,如何选购台式电脑机箱?小白装机选购电脑机箱知识指南...
  19. ssm整合笔记(1)-curd
  20. 西天取经采访(时寒冰先生大作)

热门文章

  1. cacti 整合nagios,以及总是off处理办法!
  2. cent os数据库安装
  3. 【DONE】dbeaver不会用,请教!!!
  4. WSE 3.0异步调用, MTOM, Custom Policy Trace Assertion
  5. linux查看crontab服务执行日志
  6. eclipse安装lombok插件 ,但是:lombok注解不起作用(亲测有效!)
  7. Scala概述及学习Scala的优势
  8. Python Django 请求重定向的三种方式
  9. Spring的jar包下载及目录详解
  10. AngularJS基于MVC的复杂操作案例