首页 > 数据库 >2022-08-16第二小组 张晟源(数据库查询)

2022-08-16第二小组 张晟源(数据库查询)

时间:2022-08-16 11:33:51浏览次数:59  
标签:16 -- 08 appName 张晟源 student where id SELECT

数据库(查询)

DQL数据库查询语言

DROP TABLE IF EXISTS student
go
CREATE TABLE student(
	id INT(10) PRIMARY KEY,
	`name` VARCHAR(10),
	age INT(10) NOT NULL,
	gender VARCHAR(2)
)
go
DROP TABLE IF EXISTS course
go
CREATE TABLE course(
	id INT(10) PRIMARY KEY,
	`name` VARCHAR(10),
	t_id INT(10)
);
go
DROP TABLE IF EXISTS teacher
go
CREATE TABLE teacher(
	id INT(10) PRIMARY KEY,
	`name` VARCHAR(10)
);
go
DROP TABLE IF EXISTS score
go
CREATE TABLE score(
	s_id INT(10),
	score INT(10),
	c_id INT(10),
	PRIMARY KEY(s_id,c_id)
);

 

单表查询

SELECT * FROM student

别名

SELECT id 学号,NAME 姓名 FROM student
SELECT id AS 学号,NAME AS 姓名 FROM student
#别名 列名后加

去重

#表中有重复记录,用distinct,只显示一次
SELECT DISTINCT NAME FROM student

列运算

SELECT id,age*10 FROM student

空值函数

#空值(null)和任何值做计算都为空,函数ifnull()
SELECT IFNULL(sal,0) FROM employee
#如果薪资是null就为0
-- 把字符串做加减乘除,会把字符串当作0

 

条件查询

SELECT id,NAME FROM student
WHERE id IN(1,2,3) OR id BETWEEN 3 AND 5 

 

模糊查询

SELECT id,NAME FROM student
WHERE NAME LIKE '张%'
#  %匹配多个字符  _匹配一个字符
-- 这里需要加 ESCAPE 关键字进行转义。
-- ESCAPE 后面跟着一个字符,里面写着什么,
-- MySQL就把那个符号当做转义符,一般写成"/";
-- 把这个字符写在你需要转义的那个%号前就;
-- SELECT * from app_info where appName LIKE '%/_%' ESCAPE '/';

查询方法

locate()函数

#查询位置
SELECT LOCATE('a','bnma');#4
SELECT LOCATE(0,'123')#0
SELECT LOCATE(NULL,'123')#null
SELECT LOCATE('a',NULL)#null
-- 用LOCATE关键字进行模糊匹配,等同于:"like '%网%'"
SELECT * FROM app_info WHERE LOCATE('网', `appName`) > 0;
-- 用LOCATE关键字进行模糊匹配, 从第二个字符开始匹配"网",则"网易云游戏、网来商家"等数据就被过滤了
SELECT * FROM app_info WHERE LOCATE('网', `appName`, 2) > 0;

 

position方法

-- 用POSITION关键字进行模糊匹配,等同于:"like '%网%'"
SELECT * from app_info where POSITION( '网' IN `appName`);

-- 这个方法可以理解为locate(substr,str)方法的别名,
-- 因为它和locate(substr,str)方法的作用是一样的。

 

instr()方法

-- 返回字符串str中第一次出现子字符串substr的位置。
-- INSTR()与LOCATE()的双参数形式相同,只是参数的顺序相反。

-- 用INSTR关键字进行模糊匹配,功能跟like一样 ,等同于:"like '%网%'"
SELECT * from app_info where INSTR(`appName`, '网');

-- instr函数作用,一般用于检索某字符在某字符串中的位置,等同于:"like '%网%'"
SELECT * from app_info where INSTR(`appName`, '网') > 0;

MySQL基于regexp、rlike的正则匹配查询

MySQL中的regexp和rlike关键字属于同义词,功能相同。本文以regexp为准。

REGEXP 不支持通配符"%、_",支持正则匹配规则

 

-- REGEXP '网' 等同于 like '%网%'

SELECT * from app_info where appName REGEXP '网';
-- 等同于
SELECT * from app_info where appName like '%网%';

regexp中的 OR : |

功能:可以搜索多个字符串之一,相当于 or

-- 支持 "|" ‘或’符号,匹配包含“中国”或“互联网”或“大学”的数据,支持叠加多个

SELECT * from app_info where appName REGEXP '中国|互联网|大学';

 

-- 匹配同时命中“中国”、“网”的数据可以用".+"连接,代表中国xxxx网,中间允许有任意个字符,顺序不能反。

SELECT * from app_info where appName REGEXP '中国.+网';

 

REGEXP中的正则匹配 : []

功能:匹配[]符号中几个字符之一,支持解析正则表达式

-- 匹配包含英文字符的数据,默认不区分大小写情况下

SELECT * from app_info where appName REGEXP '[a-z]';

 

-- 匹配包含大写英文字符的数据,默认忽略大小写,需要加上"BINARY"关键字。如where appName REGEXP BINARY 'Hello'

-- (从版本3.23.4后)不区分大小写 。

 

-- 查询以5、6、7其中一个为开头的数据

SELECT * from app_info where appName REGEXP '^[5|6|7]';

 

-- 查询appName字节长度为10,任意内容的数据

SELECT * from app_info where appName REGEXP '^.{10}$';

 

-- 查询appName字节长度为10,且都为大写英文的数据,加上BINARY即可

SELECT * from app_info where appName REGEXP BINARY '^[A-Z]{10}$';

 

排序

-- 降序
SELECT * FROM student ORDER BY age DESC

-- 升序,默认是升序
SELECT * FROM student ORDER BY age ASC

 

-- 使用多列为排序条件:当第一个排序条件相同时,根据第二个条件查询

SELECT * FROM student ORDER BY age ASC ,id DESC

 

 聚合函数

count

 查询满足条件的记录行数,为空不进行统计

select count(列名) from 表;

max

查询满足条件的最大值

select max(age) from student where name='1'

min

查询满足条件的最小值

select min(age) from student where name='1'

 sum

求和

select sum(age) from student where name='1'

avg

平均数

select sum(score) from course where c_id=3

  SQL 中增加 HAVING 子句,WHERE 关键字无法与聚合函数一起使用。

 

分组查询

select 分组列名,聚合函数,聚合函数2...  from 表名
where 查询条件
group by 分组列名
having 聚合函数或列名(条件)
-- 查询得的列只是分组后的列

 

 

 分页查询

limit

用来限定查寻结果的起始行,以及总行数,在sql语句最后位置

select * from student limit 4,3;
-- 从第四行开始,包含3行
select * from student limit 4;
-- 若至于一个参数,从从起始行开始查找4条记录

 

 MySql,Oracle,SqlServer的分页关键字

  • mysql:limit
  • oracle:rownum
  • sqlserver:top

 

 查找student表中有没有交‘小红’的人

select * from student where name ='小红'

select count(id) from student where name ='小红'

select count(id)  from student where name ='小红' limit 1

 

标签:16,--,08,appName,张晟源,student,where,id,SELECT
From: https://www.cnblogs.com/shenmimao/p/16590581.html

相关文章

  • Javaweb08-Ajax项目-分页条件查询 + 增删改
    1、登录1.1登录form表单<formaction="<%=request.getContextPath()%>/loginAnime"method="get"><tableborder="1px"align="center"width="40%"cellspacing="......
  • 16 Django页面优化1
    需要用到bootstrapmodels.pyclassTransactionRecord():"""交易记录"""charge_type_class_mapping={1:"success",2:"danger",......
  • ubuntu16.04中文乱码问题解决
    1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修......
  • 2022-08-15 第六小组 高佳誉 学习笔记
    Mysql数据库数据库数据库【按照数据结构来组织、存储和管理数据的仓库】。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据对于公司......
  • 20220816 springboot_idea_lombok_转Entity 生成的ToDominObject没有用有参构造方
    1问题:使用lombok,DDD设计思想整合mapStruct时,转Entity生成的ToDominObject没有用有参构造方法构造对象 2解决方案:2.1未解决_原因猜想因为生......
  • LeetCode 169 Majority Element
    Givenanarraynumsofsizen,returnthemajorityelement.Themajorityelementistheelementthatappearsmorethan⌊n/2⌋times.Youmayassumethatthe......
  • CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)
    CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)一、今日目标:复现一个代号为MS15-034的漏洞。二、漏洞描述:在2015年4月安全补丁日,微软发布的众多安全更新中,修复了HTTP......
  • 归档:220813 | 社恐铁锹的第一次新知讲授:矩阵快速幂
    铁锹:呃,其实我的名字是英文缩写,不是铁锹,你们不要再给我乱起外号了什么是矩阵?一个\(n\timesm\)的矩阵是由数组成的\(n\)行\(m\)列的方阵。什么是矩阵乘法?假设有......
  • 20220815
    现在的你,是十年前你的决定,十年后的你,是现在你的决定。种一棵树,最好是十年前,其次是现在。想要改变,从此刻开始,一切还不晚。星光不问赶路人,时光不负有心人,愿十年后的今天不为......
  • 2022-08-15 第三组 陈迪 学习笔记
    Myspl数据库:数据库:数据库【按照数据结构来组织、存储和管理数据的仓库】。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据对于......