数据库常用DQL语言合集

简介: 数据库常用DQL语言合集

DQL(Data Query Language)数据查询语言

DDL是数据定义语言,主要是对数据库和数据表的操作

image.png

(1)操作数据库

--创建库

create database 库名;

--创建库时判断库是否存在,不存在则创建

create database if not exists 库名;

--查看所有数据库

show databases;

--使用指定数据库

use 库名;

--查看当前指定数据库包含的数据表

show tables;

--查看数据库的结构定义信息

show create database 库名;

--删除数据库

drop database 库名;

--修改数据库的字符集为utf8

alter database 库名 character set utf8;

(2)操作数据表

--创建表

create table 表名(

字段1 类型1,

字段2 类型2,

字段3 类型3,

...........

);

--查看表结构

desc 表名;

--查看创建表的SQL语句

show create table 表名;

--修改表名

alter table 表名 rename to 新的表名;

--添加一个新的字段

alter table 表名 add 字段; 字段类型;

--修改字段名

alter table 表名 rename column 字段名 to 新的字段名;

--修改字段类型(注意类型修改前后数据是否兼容)

alter table 表名 modify column 字段名 新的字段类型;

--删除一个字段

alter table 表名 drop 字段名;

--删除表

drop table 表名;

--删除表时判断表是否存在,若存在则删除

drop table if exists 表名;

DML

DML是数据操作语言,主要是对数据表的操作

(1)插入数据(insert into)

数据表插入数据分为全字段插入数据和部分字段插入数据

①全字段插入数据(有两种方法,推荐第一种方法)

--有多少个字段,就要写多少个值,且是一一对应的

insert into 表名 values(值1,值2,值3...值n);

--此方法要写出所有字段,并一一对应插入值

insert into 表名(字段1,字段2...字段n) values(值1,值2...值n);

②部分字段插入数据

--部分字段插入数据,只写需要插入数据的字段名

insert into 表名(字段1,字段2...) values(值1,值2...);

(2)删除数据(delete / truncate)

--删除表中所有数据

delete from 表名;

--删除表中指定的数据

delete from 表名 where 字段 = 值;

--删除表中所有数据(先删除整张表,然后创建一张一样的空表,此方法更高效)

truncate table 表名;

(3)修改数据(update)

--无限制条件的修改,会修改整张表

update 表名 set 字段 = 值;

--有限制条件的修改,只修改特定记录

update 表名 set 字段 = 值 where 条件(字段 = 值);

DQL

DQL是数据查询语言,主要就是select配合其他限制条件的关键字进行查询

image.png


(1)无条件查询

--查询表中所有数据

select *from 表名;

(2)查询在...到...之间(between and / && / and)

--查询users表中年龄在18~25岁之间的记录

--方式1 between..and..

select *from users where age between 18 and 25;

--方式2 &&

select *from users where age>=18 && age<=25;

--方式3 and

select *from users where age>=18 and age<=25;

(3)指定条件查询

①单个条件(or / in)

--查询users表中年龄为18,20,25岁的记录

--方式1 or

select *from users where age=18 or age=20 or age=25;

--方式2 in

select *from users where age in(18,20,25);

②多个条件(and)

--查询users表中年龄为23,性别为女,名字为小楠的记录

select *from users where age=23 and gender='女' and name='小楠';

(4)查询不为NULL值(is not null),为NULL值(is null)

--查询users表中序号不为空的记录

select *from users where id is not null;

--查询user表中序号为空的记录

select *from users where id is null;

(5)模糊查询(like)

_:单个任意字符

%:多个任意个字符

--查询users表中姓名第一个字为李的记录

select *from users where name like '李%';

--查询users表中姓名第二个字为李的记录

select *from users where name like '_李%';

--查询users表中姓名含有李字的记录

select *from users where name like '%李%';

--查询users表中姓名是两个字的记录

select *from users where name like '__';

(6)去除重复记录查询(distinct)

--查询users表中所在城市不相同的记录

--select distinct 字段 from 表名;

select distinct city from users;

(7)排序查询(order by)

①单个条件

--查询users表中记录,并以年龄升序排序

select *from users order by age; --默认升序

--查询users表中记录,并以年龄降序排序

select *from users order by age desc;--desc降序

②多个条件

注意:多个排序条件时,只有当第一个排序条件值一样,才会执行第二个排序条件,以此类推

--查询users表中记录,并体育成绩降序,年龄降序

select *from users order by PE desc,age desc;

(8)聚合函数

①计算和(sum)

select sum(字段) (as sumvalue) from 表名;

②计算最大值(max)

select max(字段) (as maxvalue) from 表名;

③计算最小值(min)

select min(字段) (as minvalue) from 表名;

④计算平均值(avg)

select avg(字段) (as avgvalue) from 表名;

⑤计算个数(count)

select count(字段) (as totalcount) from 表名;

(9)分组查询(group by)

--查询users表中的记录,按照性别分组,查询男,女的体育成绩平均分

select gender,avg(PE) from users group by gender;

--查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数

select gender, avg(PE),count(id) from users group by gender;

--查询users表中的记录, 按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组

select gender, avg(PE),count(id) from users where PE > 60 group by gender;

--查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组,分组之后,人数要大于2个人

select gender,avg(PE),count(id) from users where PE > 60 group by gender having count(id)>2;

(10)分页查询(limit)

注意:第一条记录的索引是0

--查询users表中的前10行条记录

select *from users limit 10;

--查询users表中第2~11条记录 (从第2条记录开始累加10条记录)

select *from users limit 1,10;

--查询users表中第5~17条记录 (从第5条记录开始累加13条记录)

select *from users limit 4,13;

(11)内连接查询

如果查询数据的来源来自多张表,则必须对这些表进行连接查询,连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理,连接查询分为内连接和外连接

语法格式

--语法1 (隐式内连接)

select 字段1,字段2...

from 表1,表2...

where 过滤条件;

--语法2 (显式内连接)

select 字段1,字段2...

from 表1 inner join 表2 ...

on 过滤条件;






相关文章
|
23天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
15天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
20天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2572 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
18天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
3天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
2天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
159 2
|
19天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1570 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
21天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
942 14
|
3天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
185 2
|
16天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
711 12