首页 > 数据库 >Java登陆第三天——SQL之DQL

Java登陆第三天——SQL之DQL

时间:2023-11-10 20:00:12浏览次数:31  
标签:语句 Java name chinese student SQL DQL select

SQL语句

SQL概括起来可以分为以下四组。(都是SQL,因为功能的不同,为了更好学习划分了类别)

DDL——数据定义语言。用于定义数据的结构。 指的是增,删,改数据库
DML——数据操作语言。用于检索或修改数据。 指的是增,删,改数据
DQL——数据查询语言。用于查询各种形式的数据。 指的是查询数据
DCL——数据控制语言。用于定义数据库用户的权限。 指的是管理数据库权限

SQL大小写不敏感!!
SQL大小写不敏感!!
SQL大小写不敏感!!

全凭个人习惯

DQL

专门用来查询数据的SQL。

基础查询语句

--查看MySQL版本
select version();

--基础查询,如果字段名填 * 就是所有字段:select * from 表名;
select 字段名 from 表名;

--可以增加查询条件 操作符是WHERE。
select 字段名 from 表名 where 逻辑语句;
--逻辑语句就是:字段名+逻辑运算符和某值,构成一个布尔表达式。

--去重
select distinct 字段名 from 表名;

--从小到大排序 ORDER BY,默认排	序就是从小到大
SELECT 字段名 FROM 表名  ORDER BY 待排序的字段名;

--从大到小排序 在字段名后+DESC
SELECT 字段名 FROM 表名 ORDER BY 待排序的字段名 DESC;

现UserTest库中有一表student,其建表语句和数据如下:

create table student(
id int not null,
name varchar(20) not null default '不知道',
chinese float not null default 0.0 ,
english float not null default 0.0,
math float not null default 0.0
);
insert into student(id,name,chinese,english,math) values(1,'赵信',88.9,72.6,68.3);
insert into student(id,name,chinese,english,math) values(2,'阿卡丽',62.1,49.6,66.6);
insert into student(id,name,chinese,english,math) values(3,'武器',77.1,60.0,32.6);
insert into student(id,chinese,english,math) values(4,99.2,45.1,77.9);
insert into student(id,name,chinese,english,math) values(5,'李刚',50.1,44.4,28.9);

image

栗子:查询name为不知道的所有成绩。
SQL语句:

select * from student where name='不知道';

程序运行结果:
image

栗子:查询所有人的name和chinese成绩
SQL语句:

select name,chinese from student;

程序运行结果:
image

栗子:查询english成绩和math成绩都大于60的人的name。
SQL语句:

select name from student where english>60 and math>60;

程序运行结果:
image

栗子:查询name是两个字的人
SQL语句:

select name from student where name like '__';

程序运行结果:
image

栗子:插入一位同学的成绩,丽桑卓,id为6,chinese77.1,english88.9,math100
然后查询name和chinese,要求从小到大排序

SQL语句:

insert into student(id,name,chinese,english,math) values(6,'丽桑卓',77.1,88.9,100);
select name,chinese from student order by chinese;

程序运行结果:
image

栗子:查询chinese并去重
SQL语句:

select distinct chinese from student;

程序运行结果:
image

注:因为武器和丽桑卓name不同,所以distinct不会去重。
image

表达式查询语句

--在SQL中你甚至可以使用表达式。
select [表达式] from 表名;

--使用 as 关键字。
--允许给字段取别名(不会影响到原表,类似虚拟一张表格。别名为中文时,可以不加引号。)
select 字段名 [as 字段别名] from 表名;

image

栗子:查询name以及chinese+english+math这三科成绩的和。
SQL语句:

select name,(chinese+english+math) from student;

程序运行结果:
image
上述情况是浮点数精度问题

栗子:查询name以及chinese+english+math这三科成绩的和。
和的别名:总分

SQL语句:

select name,(chinese+english+math) as '总分' from student;

程序运行结果:
image

聚合函数

在表达式的基础上,提供了一些系统自带的函数。
聚合函数一般分为两种:数学函数,字符串函数

SELECT 函数(字段) FROM 表名 [where 逻辑语句];

常见的数学函数如下:

数学函数名 说明 (字段也叫列)
COUNT 某一列的数量
SUM 某一列的总和,该列数据类型必须为数值
AVG 某一列的平均值,该列数据类型必须为数值
MAX 某一列的最大值
MIN 某一列的最小值
ABS 绝对值

image
栗子:求math最高分。
SQL语句:

select max(math) from student;

程序运行结果:
image

栗子:求全班人数。
SQL语句:

select count(*) from student;

程序运行结果:
image

如果COUNT函数中填写*不会忽略null。
如果COUNT函数中填写字段名会忽略null

(建表时字段约束都不允许为NULL= =,所以不好展示)

分组查询

分组查询一般是搭配聚合函数一起使用的。

--关键字 GROUP BY 分组字段名,意为按照某字段分组
select 聚合函数(字段名) from 表名 [where 逻辑语句] group by 分组字段名;

--在分组的基础上,可以使用 having 再次过滤
select 聚合函数(字段名) from 表名 [where 逻辑语句] group by 分组字段名 having 逻辑语句;

准备数据

-- 创建订单表
create table t_order(
  id int not null AUTO_INCREMENT COMMENT '订单id',
  user_id bigint not null comment '下单人id',
  user_name varchar(16) not null default '' comment '用户名',
  price decimal(10,2) not null default 0 comment '订单金额',
  the_year SMALLINT not null comment '订单创建年份',
  PRIMARY KEY (id)
) comment '订单表';

-- 插入数据
insert into t_order(user_id,user_name,price,the_year) values
  (1001,'水壶',11.11,'2017'),
  (1002,'萨科',22.22,'2018'),
  (1003,'卡莎',88.88,'2018'),
  (1004,'挖掘机',33.33,'2018'),
  (1005,'扑克牌',12.22,'2018'),
  (1006,'压路机',16.66,'2018'),
  (1007,'牙膏',44.44,'2019'),
  (1008,'中年茶',55.55,'2018'),
  (1009,'纸张',66.66,'2019');

image

栗子:统计不同the_year的数量
SQL语句:

select the_year,count(*) from t_order group by the_year;

程序运行结果:
image

解析:
image

栗子:统计the_year大于2017年的的数量
SQL语句:

select the_year,count(*) from t_order group by the_year having the_year >2017;

程序运行结果:
image

栗子:统计每年最高的price
SQL语句:

select max(price) from t_order group by the_year;

程序运行结果:
image

栗子:统计每年最高的price,并忽略小于等于50
SQL语句:

select max(price) from t_order group by the_year having max(price)>50;

程序运行结果:
image

常见的字符串函数如下:
待编辑

标签:语句,Java,name,chinese,student,SQL,DQL,select
From: https://www.cnblogs.com/Ocraft/p/17824923.html

相关文章

  • Java中的接口
    注意:接口中的成员变量与成员方法默认权限都是public例子接口publicinterface_173Animal{//接口中的变量,默认是常量,并且自动加了static、final关键字publicstaticfinalintcode1=200;publicfinalintcode2=300;//相当于intcode3=300//在......
  • 新发布的Java使用率均超Java8
    Java软件供应商Azul发布了首份年度Java现状调查报告,基于对全球2062名Java专业人士和基于Java的应用程序用户进行的调查。Java软件供应商Azul发布了首份年度Java现状调查报告,基于对全球2062名Java专业人士和基于Java的应用程序用户进行的调查。调查探......
  • MySql与SQLServer数据库基础语法差异;
    1.应用Native工具将数据同步,将数据库结构和同步到MySql。视图、存储过程、函数手动创建。 2.移除数据所有数据查询的数据框架标识"dbo"; 3.MySQL中IFNULL用法,用法与SQLServer中ISNULL(expr1,expr2)用法相似.,而MySql中isnull()的返回值为1,否则返回值为0; 4.sqlserver的识别符......
  • 【mysql 1045错误】
    【mysql1045错误】1.请确认检查账户密码均正确!2.ip地址没有访问这个库的权限解决办法:进行授权1)mysql8以下的添加方式#创建用户|在root@'%'增加一个任意地址可以访问的用户root|identifiedby'密码';1grantallprivilegeson*.*toroot@'%'identifiedby'your......
  • 一文带你玩转SQL中的DML(数据操作)语言:从概念到常见操作大解析!数据操作不再难!
    前面我们介绍了SQL语句中数据定义语言(DDL)的概念以及它的常用语句,那么DML又是什么呢?二者有什么区别呢?本篇文章将为你讲述。一、DML简介DML是指数据操作语言,英文全称是DataManipulationLanguage,用来对数据库中表的数据记录进行更新。它创建的模式(表)使用数据操作语言来填充。DDL......
  • Mysql8.0 导出文件导入到 5.7
    1:创建的数据库要和导出文件编码一致,如下图 2:查看是否有其他编码如下图: 3:Invaliddefaultvaluefor'LOCK_TIME_' 报错更改mysql的my.ini 文件 设置explicit_defaults_for_timestamp=ON  重启mysqlC:\ProgramData\MySQL\MySQLServer5.7......
  • Sql server基础使用(六):补充零碎的一些东西(想到什么就补充,未完待续~~)
    对所学Sqlserver知识进行一下记录总结,某些用法之间还可以关联使用,欢迎补充和讨论。本人比较懒,结果的截图暂时就先不传了,什么时候想起来再说吧~~在写存储过程之前,先补充一些比较零碎的东西,有些在存储过程中会用到。就想到什么写什么吧,有时间就补充~~未完待续~~1.定义变量(我一般......
  • Day05-Java开发所需的前端技术
    session原理(适用于单体的身份效验)Http无状态,有会话无状态是指,请求之间相互独立,第一次请求的数据,第二次请求不能重用有会话是指,客户端和服务端都有相应的技术,可以暂存数据,让数据在请求见共享服务端使用了session技术来暂存数据存GET/s1?name=zhangHTTP/1.1Host:localhost取GET......
  • 字符集collation不同-隐式转换mysql
    适用范围1.适用于MySQL或者OceanbaseforMySQL2.适用于两表或多表join的字段字符序不同的场景。如本例:COLLATEutf8mb4_general_ci和COLLATEutf8mb4_bin`cust_no`varchar(30)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ci`cust_no`varchar(100)CHARACTERSETu......
  • 一文带你玩转SQL中的DML(数据操作)语言:从概念到常见操作大解析!数据操作不再难!
    前面我们介绍了SQL语句中数据定义语言(DDL)的概念以及它的常用语句,那么DML又是什么呢?二者有什么区别呢?本篇文章将为你讲述。一、DML简介DML是指数据操作语言,英文全称是DataManipulationLanguage,用来对数据库中表的数据记录进行更新。它创建的模式(表)使用数据操作语言来填充。DD......