当前位置:网站首页>Linux-MySQL数据库之高级SQL 语句一
Linux-MySQL数据库之高级SQL 语句一
2022-06-25 15:37:00 【游戏编程】
实验环境准备
create table stu (id int,name varchar(10)primary key not null,score decimal(5,2),address varchar(20),hobbid int(5));
insert into stu values(1,'zhao',100,'riben',2); insert into stu values(2,'qian',59.99,'taiguo',2); insert into stu values(3,'sun',75,'mianduan',3); insert into stu values(4,'li',99,'ouzhou',4); insert into stu values(5,'zhou',10,'huisuo',5); insert into stu values(6,'wu',11,'nanjin',3); insert into stu values(7,'zheng',80,'cv',3); insert into stu values(8,'wang',88,'cv',7);

一、order by语句
(增、删、改、查)
对MysQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。例如只取10条数据、对查询结果进行排序或分组等等。
按关键字排序
PS:类比于windows任务管理器,使用SELECT语句可以将需要的数据从MySQL数据库中查询出来,如果对查询的结果进行排序,可以使用ORDER BY语句来对语句实现排序,并最终将排序后的结果返回给用户。这个语句的排序不光可以针对某一个字段,也可以针对多个字段
语法
SELECT column1,column2,... FROM table_name ORDER BY column1,column2,...---- ORDER BY ----按关键字排序语法:SELECT "栏位" FROM "表名" [WHERE "条件"] ORDER BY "栏位" [ASC, DESC];#ASC 是按照升序进行排序的,是默认的排序方式。#DESC 是按降序方式进行排序。1、单个字段排序
order by还可以结合where进行条件过滤,筛选地址是cv的学生按分数降序排列

2、多个字段排序
语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再按照第二个字段进行排序,ORDER BY
后面跟多个字段时,字段之间使用英文逗号隔开,优先级是按先后顺序而定但order by 之后的第一个参数只有在出现相同值时,第二个字段才有意义。
查询学生信息先按兴趣id降序排列,相同分数的,id也按降序排列

查询学生信息先按兴趣id降序排列,相同分数的, id按升序排列

二、升序与降序(ASC和DESC)
ASC:
是按照升序进行排序的,是默认的排序方式,即ASC可以省略。SELECT语句中如果没有指定具体的排序方式,则默认按ASC方式进行排序。

DESC:
是按降序方式进行排列。当然 ORDER BY前面也可以使用WHERE子句对查询结果进一步过滤。

三、select查询
---- SELECT ----显示表格中一个或数个栏位的所有资料语法:SELECT "栏位" FROM "表名";1、查看所有

2、查看部分字段

四、and/or-且/或
---- AND OR ----且 或语法:SELECT "栏位" FROM "表名" WHERE "条件1" {[AND|OR] "条件2"}+ ;1、and

2、or

3、嵌套/多条件

五、distinct(查询不重复记录)
---- DISTINCT ----不显示重复的资料语法:SELECT DISTINCT "栏位" FROM "表名";SELECT DISTINCT Store_Name FROM Store_Info;
六、where
--- WHERE ----有条件查询语法:SELECT "栏位" FROM "表名" WHERE "条件";
七、group by(对结果进行分组)
通过SQL查询出来的结果,还可以对共进行分组,使用GROUP BY 语句来实现,GROUP BY通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数( COUNT) 、求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY分组的时候可以按一个或多个字段对结果进行分组处理。
语法
SELECT column_name,aggregate_function (column_name)FROM table_name WHERE column_nameoperator valueGROUP BY column name;---- GROUP BY ----对GROUP BY后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的列,必须出现在GROUP BY后面。语法:SELECT "栏位1", SUM("栏位2") FROM "表名" GROUP BY "栏位1";1、按hobbid相同的分组,计算相同分数的学生个数(基于name个数进行计数)

2、结合where语句,筛选分数大于等于80的分组,计算学生个数

3、结合order by把计算出的学生个数按升序排列
全班同学成绩表count (name) :
计数score分数:
score>=80 :优秀
score >=60 and score <80 :优-
select count(name),score,hobbid from stu where score >=80 group by hobbid ;select count(name),score,hobbid from stu where score >= 80 group by hobbid order by count(name) asc;

select count(name),score from stu where score > 80 group by score;
八、limit
限制结果条目( limit )
limit限制输出的结果记录
在使用MySQL SELECT语句进行查询时,结果集返回的是所有匹配的记录(行)。有时候仅需要返回第一行或者前几行,这时候就需要用到LIMIT子句。
语法
SELECT column1,column2,... FROM table_name LIMIT [offset, ] number LIMIT的第一个参数是位置偏移量(可选参数),是设置 MysQL从哪一行开始显示。如果不设定第一个参数,将会从表中的第一条记录开始显示。需要注意的是,第一条记录的位置偏移量是0,第二条是1,以此类推。第二:个参数是设置返回记录行的最大数目。
查询所有信息显示前4行记录

结合order by语句,按id的大小升序排列显示前三行

基础select 小的升阶怎么输出最后三行

九、alias(设置别名)
设置别名( alias ——》as )
在MysQL查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者
多次使用相同的表,"可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性
语法
对于列的别名:SELECT column_name AS alias_name FROM table_name;对于表的别名:SELECT column_name (s)FROM table_name As alias_name; 在使用AS 后,可以用alias_name代替table_name,其中 AS语句是可选的。AS之后的别名,主要是为表内的列或者表提供临时的名称,在查而过程中使用,库内实际的表名或宁段名是不会被改变的
列别名设置示例:
select name as 姓名,score as 成绩from stu;
如果表的长度比较长,可以使用as 给表设置别名,在查询的过程中直接使用别名临时设置stu的别名为i
select i.name as 姓名,i.score as 成绩from stu as i;
查询stu表的记录数量,以number显示



使用场景:
对复杂的表进行查询的时候,别名可以缩短查询语句的长度2、多表相连查询的时候(通俗易懂、i减短sql语句)
此外,as还可以作为连接语句的操作符。
创建t1表,将stu表的查询记录全部插入t1表
create table t1 as select * from stu;select * from t1
#此处As起到的作用:
创建了一个新表t1并定义表结构,插入表数据(与info表相同)2、但是"约束"没有被完全"复制“过来
#但是如果原表设置了主键,那么附表的: default字段会默认设置一个0相似:
克隆、复制表结构
create table t1 (select * from info);
#也可以加入where语句判断
create table test1 as select * from info where score >=60;
在为表设置别名时,要保证别名不能与数据库中的其他表的名称冲突。
列的别名是在结果中有显示的,而表的别名在结果中没有显示,只在执行查询时使用。
作者:长情cl
游戏编程,一个游戏开发收藏夹~
如果图片长时间未显示,请使用Chrome内核浏览器。
边栏推荐
- Start using markdown
- Brief object memory layout
- The release of autok3s v0.5.0 continues to be simple and friendly
- 剑指 Offer II 091. 粉刷房子
- What is the safest app for stock account opening? Tell me what you know
- MT60B1G16HC-48B:A美光内存颗粒FBGA代码D8BNK[通俗易懂]
- Classic deadlock scenario of multithreading and its solution (philosopher dining problem)
- Constructor Pattern
- What is OA
- Sword finger offer 05 Replace spaces
猜你喜欢

LeCun预言AGI:大模型和强化学习都是斜道!我的「世界模型」才是新路
Why is it said that restarting can solve 90% of the problems

不要再「外包」AI 模型了!最新研究发现:有些破坏机器学习模型安全的「后门」无法被检测到

异步处理容易出错的点

Principle and implementation of MySQL master-slave replication (docker Implementation)
Mixed density network (MDN) for multiple regression explanation and code example

Simulating Sir disease transmission model with netlogo

Don't underestimate the integral mall, its role can be great!

Golang uses Mongo driver operation - increase (Advanced)

04. binary tree
随机推荐
Pytest测试框架笔记
Golang open source streaming media audio and video network transmission service -lal
教务系统开发(PHP+MySQL)
Talk about the creation process of JVM objects
揭秘GaussDB(for Redis):全面对比Codis
转换Cifar10数据集
Programmer vs hacker thinking | daily anecdotes
什么是oa
JVM memory region details
Day01: learning notes
Differences between = = and = = = in JS (detailed explanation)
Free books! AI across the Internet paints old photos. Here is a detailed tutorial!
Error com mysql. cj. jdbc. exceptions. Communicationsexception: solutions to communications link failure
Continuously improve the overall performance of adaoracle Oracle Oracle
Simulating Sir disease transmission model with netlogo
Binocular 3D perception (I): preliminary understanding of binocular
Sword finger offer II 091 Paint the house
golang reverse a slice
JS的遍历和分支判断(2022年6月24日案例)
国信金太阳靠谱吗?是否合法?开股票账户安全吗?