【MySQL】MySQL 查询

目录

一、基本的查询语句

1.1 SELECT ... FROM

1.2 列的别名

1.3 去除重复行

1.4 空值参与运算

1.5 着重号

1.6 显示表结构

1.7 过滤数据

 二、多表查询

2.1 笛卡尔积

2.2 内连接

2.3 外连接

三、子查询

3.1 单行子查询

单行比较操作符

HAVING 中的子查询

CASE中的子查询

3.2 多行子查询

多行比较操作符

3.3 EXISTS 与 NOT EXISTS关键字

3.4 相关更新

3.5 相关删除


一、基本的查询语句

1.1 SELECT ... FROM

语法:
SELECT   标识选择哪些列 FROM     标识从哪个表中选择

选择全部列:
SELECT * FROM   account;

选择特定的列:

SELECT id,NAME FROM account

  • 注意:MySQL中的SQL语句是不区分大小写的,有些人习惯将关键字大写、数据列和表名小写,这是一个良好的编程习惯,利于阅读和维护。

1.2 列的别名

重命名一个列,可以空格然后紧跟列名;也可以在列名后面加入AS关键字,后面的别名使用双引号。

SELECT id accountId,NAME AS accountName FROM account

1.3 去除重复行

在SELECT语句中使用关键字DISTINCT去除重复行:

SELECT DISTINCT id ,NAME  
FROM account

DISTINCT 需要放到所有列名的前面,如果写成 SELECT id, DISTINCT name FROM account 会报错。

1.4 空值参与运算

所有运算符或列值遇到null值,运算的结果都为null(在 MySQL 里面,空值是占用空间的)。

SELECT ename '姓名',joindate '入职时间', 12*salary '年薪' FROM emp

1.5 着重号

 为了避免字段、表名没有和数据库保留字或常用方法冲突,可以在SQL语句中使用一对``(着重号)引起来。

SELECT * FROM `account`

1.6 显示表结构

 使用DESCRIBE 或 DESC 命令,查看表结构:

DESCRIBE account
DESC account

各个字段的含义分别解释如下:

  • Field:表示字段名称。
  • Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
  • Null:表示该列是否可以存储NULL值。
  • Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
  • Default:表示该列是否有默认值,如果有,那么值是多少。
  • Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

1.7 过滤数据

 SELECT 字段1,字段2 FROM 表名 WHERE 过滤条件

SELECT * FROM emp WHERE joindate > '2023-03-31'

 二、多表查询

多表查询是指存在一对一、一对多关系的多个表,通过关联字段完成查询操作。

2.1 笛卡尔积

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积,又称直积,表示为X×Y。假设两个集合 A 和 B,则 A 和 B 的笛卡尔积就是 A 和 B 两个集合中元素的交集。

在SQL的笛卡尔积(交叉连接)有两种,显式的和隐式的&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值