MySQL数据库的多表操作

MySQL数据库的多表操作

目录

一、 数据库的多表操作

二,操作

一对一

一对多

一、 数据库的多表操作

数据库的多表关系:

一对一

一对多

多对一

多对多

二,操作 一对一

建立数据表personcard,设置person数据表id为主键且自增,设置cardid为外键

// 创建person表 CREATE TABLE person ( id INT PRIMARY KEY AUTO_INCREMENT, // 主键 自增 NAME VARCHAR(20) ); // 创建card表 CREATE TABLE card ( id INT PRIMARY KEY AUTO_INCREMENT, // 主键 自增 number VARCHAR(20) UNIQUE NOT NULL,// 不能为null pid INT UNIQUE,// pid唯一 CONSTRAINT cp_fk1 FOREIGN KEY (pid) REFERENCES person(id) // 外键列 ); 一对多

创建user数据表和orderlist数据表,这里不再设置uid为唯一值,因此是一对多的关系

// 创建user表 CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, // 主键 自增 NAME VARCHAR(20) ); // 添加数据 INSERT INTO USER VALUES (NULL, '张三'),(NULL, '李四'); // 创建orderlist表 CREATE TABLE orderlist( id INT PRIMARY KEY AUTO_INCREMENT, number VARCHAR(20), uid INT, // 这里没有再设置唯一值 CONSTRAINT out_fk1 FOREIGN KEY (uid) REFERENCES USER(id) // 外键列 ); -- 添加数据 INSERT INTO orderlist VALUES (NULL, 'hm001', 1), (NULL, 'hm002', 1),(NULL, 'hm003', 2),(NULL, 'hm004', 2);

多对多 创建student数据表,设置主键,再创建course数据表,创建中间表将两者关联起来

// 创建student表 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); // 创建course表 CREATE TABLE course ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10) ); // 创建中间表 CREATE TABLE stu_course( id INT PRIMARY KEY AUTO_INCREMENT, sid INT, cid INT, CONSTRAINT sc_fk1 FOREIGN KEY (sid) REFERENCES student(id),// 设置外键 CONSTRAINT sc_fk2 FOREIGN KEY (cid) REFERENCES course(id)// 设置外键 );

多表查询-内链查询:

通过规定语法,进行内链查询

// 标准语法: SELECT 列名 FROM 表名1 [INNER] JOIN 表名2 ON 关联条件; -- 查询用户信息和对应的订单信息 SELECT * FROM USER INNER JOIN orderlist ON orderlist.uid = user.id; // 设置别名进行查询 SELECT u.name, u.age, o.number FROM USER u INNER JOIN orderlist o ON o.uid = u.id;

多表查询-隐式内连接:

// 标准语法: SELECT 列名 FROM 表名1,表名2 WHERE 关联条件; // 查询用户姓名,年龄。和订单编号 SELECT u.name, u.age, o.number FROM USER u, orderlist o WHERE o.uid = uid;

多表查询-左外连接:

标准语法: SELECT 列名 FROM 表名1 LEFT [OUTER] JOIN 表名2 ON 条件; // 查询所有用户信息,以及用户对应的订单信息 SELECT u.* o.number FROM USER u LEFT OUTER JOIN orderlist o ON o.uid = u.id;

多表查询-右外连接:

标准语法: SELECT 列名 FROM 表名1 RIGHT [OUTER] JOIN 表名2 ON 条件; // 查询所有订单信息,以及订单所属的用户信息 SELECT o.*, u.name FROM USER u RIGHT OUTER JOIN orderlist o ON o.uid = u.id;

多表查询-子查询:

// 结果是单行单列的 // 标准语法: SELECT 列名 FROM 表名 WHERE 列名=(SELECT 列名 FROM 表名 [WHERE 条件]); // 查询年龄最高的用户姓名 SELECT NAME,age FROM USER WHERE age=(SELECT MAX(age) FROM USER); // 结果是多行单列的 // 标准语法:SELECT 列名 FROM 表名 WHERE 列名 [NOT] IN (SELECT 列名 FROM 表名 [WHERE 条件]); // 查询张三和李四的订单信息 SELECT * FROM orderlist WHERE uid IN (SELECT id FROM USER WHERE NAME IN ('张三','李四')); // 结果是多行多列的 // 标准语法: SELECT 列名 FROM 表名 [别名],(SELECT 列名 FROM 表名 [WHERE 条件]) [别名] [WHERE 条件]; // 查询订单表中id大于4的订单信息和所属用户信息 SELECT u.name, o.number FROM USER u, (SELECT * FROM orderlist WHERE id > 4) o WHERE o.uid=u.id;

到此这篇关于MySQL数据库的多表操作的文章就介绍到这了,更多相关MySQL表操作内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    mac怎么安装mysql| macbook怎么下载mysql

    mac怎么安装mysql| macbook怎么下载mysql,标签,学习python 不得不学习的就是数据库,那么在开始学习数据库之前,那么今天我们先说下怎么安装m

    MySQL更新更新页面1/4。

    MySQL更新更新页面1/4。,,插入和替换 插入和替换语句的功能是将新数据插入表中,这两个语句的语法相似,它们之间的主要区别是如何处理重复的

    mysql数据库启动失败

    mysql数据库启动失败,报错,非正常,1、原因 公司服务器故障,非正常停机导致数据库启动失败。 报错信息 [ [email protected] dmp]# /etc/ini

    mysql长整型是什么

    mysql长整型是什么,整型,数据类型,语法,用户,填充,版本,MySQL长整型是“BIGINT”,是MySQL中最常用的数据类型之一,其可以用来存储较大的整数值,与

    深入理解MySQL分区

    深入理解MySQL分区,查询,数据,列表,索引,操作,按键,MySQL数据库是一个开源的关系型数据库管理系统。在一些大型数据环境中,为了更好地管理数据、

    mysql 如何查询

    mysql 如何查询,查询,数据,语句,条件,选取,排序,MySQL是一款常用的关系型数据库管理系统,被广泛应用于各种网站和应用开发。在MySQL中查询数据是

    MySQL中怎么实现分页操作

    MySQL中怎么实现分页操作,数据,显示,偏移量,分页,查询,初始,一、 背景什么是分页,就是查询时候数据量太大,一次性返回所有查询结果既耗费网络资源

    mysql怎么连接数据库

    mysql怎么连接数据库,服务,启动,数据库,命令,登录,步骤,mysql连接数据库的方法:1、通过计算机管理方式或通过命令行方式执行“net start mysql”

    mysql 查询拼接

    mysql 查询拼接,函数,字段,字符串,查询,分隔符,连接,MySQL 查询拼接在使用 MySQL 进行查询时,有时需要将多个字段或多张表中的字段进行拼接,这时

    怎么启动 mysql

    怎么启动 mysql,启动,服务器,输入,命令提示符,终端,命令,MySQL是一种广泛使用的关系型数据库管理系统。它是一种可扩展性强、性能卓越、跨平台

    mysql 如何卸载

    mysql 如何卸载,卸载,服务,命令,软件包,数据,安装,MySQL是一种广泛使用的数据库管理系统,用于管理数据的存储、检索和更新。在某些情况下,您需要

    mysql视图是什么

    mysql视图是什么,视图,查询,数据,替换,年龄,引用,mysql视图是一个虚拟表,其内容由查询定义;视图包含系列带有名称的列和行数据,而行和列数据来自定