小蔡学Java

MySQL 命令总结二

2023-09-23 17:55 811 0 Java基础 MySQL

七、数据查询

7.1、单表查询

1、语法:

select <[列名1,列名n 或通配符 [as 别名] ]> from 表名;

as:将某个字段取个别名

2、语法:

select distinct <[列名1,列名n 或通配符]> from 表名;

去掉重复项,对应的字段前加

符号表达:

7.1.1、where常用关键字

  • AND、OR:连接多个条件
  • BETWEEN AND:在…之间
  • IS NULL:查询空值
  • IN:查询在某个集中中
  • LIKE:模糊查询

7.1.2、通配符

** ”*“通配符:匹配任意列名 “_"通配符:匹配单个字符 “%”通配符:匹配任意字符**

7.1.3、order by子句

可以使用order by子句对查询结果安装一个或多个属性列(多个属性逗号隔开)的升序(ASC)或降序(DESC)排列,默认为升序。

	--查询结果按照bookPrice列值的降序排列
	select * from books order by bookPrice desc;

7.1.4、聚集函数

例:

	#查询book表中年龄最大的
	select max(age) from book;

7.1.5、group by子句

将查询结果按某一列或多列的值分组,值相等的为一组。

	select count(*),pressName from books group by pressName;

如:下列表中,叫 “人民邮电出版社” 名字的有1个,叫 ”清华大学出版社“ 的有6个。

7.2、连接查询

根据两个表或多个表的列之间的关系来查询数据,即连接查询。

7.2.1、简单连接

连接查询实际是通过表与表之间相互关联的列进行数据的查询,对于关系数据库来说,连接是查询最主要的特征。 简单连接使用逗号将两个或多个表进行连接,也是最常用的多表查询形式。

例:

	select b.reader_id,br.book_name from books b,borrow_record br where b.ISBN=br.ISBN;

7.2.2、JOIN连接

除了使用逗号连接外,也可使用JOIN连接。

7.2.2.1、内连接(inner join)

1)等值连接

	select * from books b inner join borrow_record br where b.ISBN=br.ISBN;

2)不等连接

	select * from books b inner join borrow_record br where b.ISBN<>br.ISBN;

7.2.2.2、外连接(left join 、right join)

1)左连接 on后面也可使用 where执行条件判断

	select * from books b left join borrow_record br on b.ISBN=br.ISBN;

2)右连接 on后面也可使用 where执行条件判断

	select * from books b right join borrow_record br on b.ISBN=br.ISBN;

7.3、嵌套查询

SQL语言中,一个select-from-where语句被称为一个查询块。将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询被称为嵌套查询。 语法:select <字段名或通配符> from <表或视图名> where [表达式] (select <字段名或通配符> from <表或视图名> where [表达式] )

7.3.1、带有IN谓语的子查询

	select * from books where isbn in (select * isbn from brrowrecord where reader_id='201801');

7.3.2、带有比较运算符的子查询

指父查询与子查询之间用比较运算符连接。可以用 >、<、=、>=、<=、!=、<> 等比较运算符。

	select * from books where isbn=(select * isbn from brrowrecord where reader_id='201801');

7.3.3、带有ANY(SOME)或ALL谓语子查询

子查询返回值单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓语,使用ANY或ALL谓语时必须同时使用比较运算符。

谓语释义:

例:

	#查询读者编号为"201801"的学生未借阅的所有图书的详细信息;
	select * from books where isbn <> all(select isbn from brrowwrecord where reader_id="201801");

7.3.4、带有EXISTS谓语的子查询

EXISTS谓语的子查询不返回任何数据,是一个布尔值(true或false)逻辑判断。使用存在量词EXISTS后,若内层查询结果为空,则外层的WHERE子句返回ture,否则取反。 例:

	#查询读者编号为201801的读者没有借阅过的图书信息
	select * from books where not exists (select * from borrowrecord where isbn=books.isbn and reader_id="201801");

7.4、合并查询

	#两个表字段合并显示,两个表相同字段合并后显示一次
	select * from t_major1 union select * from t_major;

评论( 0 )

  • 博主 Mr Cai
  • 坐标 河南 信阳
  • 标签 Java、SpringBoot、消息中间件、Web、Code爱好者

文章目录