MySQL基础语句

这是第二次打卡做业了,这一次的主要内容是基础的SQL语句,可是有个概念咱们要搞清楚,就是什么是SQL、什么是MySQL。如下的语句都是基于MySQL。数据库

什么是SQL

SQL是Structured Query Language的缩写,中文叫作结构化查询语言,是专门用来操做数据库的。编程

什么是MySQL

MySQL是一款数据库软件,固然,站在语言的角度也是一门语言,是遵循SQL的一些准则便携的语言实例。SQL是标准,而MySQL是具体的实现。bash

SELECT FROM查询语句

基础用法

SElECT查询语句能够说会是数据库中使用最多的语句了。他能够查询数据表中的内容。若是你想要从数据库中查询某个信息,你最少须要提供两个信息。编程语言

  • 想要查询的字段名(域名)
  • 想要查询的表名
SELECT name 
    FROM student
复制代码

上面的这条语句就是从student表中检索一个字段名为name的列。这是最简单的用法,SELECT语句还有不少子语句,咱们会在下面介绍。固然,你也能够查询多个列,就像下面这个样子,字段名的中间使用逗号隔开就好。固然,你也可使用*号,来返回全部的列。函数

SELECT id,
           name,
           sex
    FROM student
复制代码

去重语句

咱们使用上面的查询语句会有一个很重要的问题,就是他会将全部的查询结果返回给咱们,可是也许咱们只是想要不一样的那一部分。这时,咱们可使用DISTINCT关键字,将它放在相应的字段名前便可ui

SELECT  DISTINCT id,
    FROM products
复制代码

这样的话就会将不一样的id帮你检索出来,还有一个很重要的问题,即是若是DISTINCT后面跟了多个字段名,那么这两个字段都会起做用,也就是说除非两行的这两个字段是如出一辙的,不然就会被检索出来。spa

限制结果

有些时候咱们指望检索从某个位置开始,返回这以后匹配到的指定数量的数据,这时即是限制结果起做用的时候了。code

SELECT name 
    FROM products 
    LIMIT 5;
复制代码

上面的语句即是告诉数据库只返回检索到的5个数据,limit子语句还有一个关键字,容许告诉数据库从距离起始位置多少个数量的地方开始检索数据cdn

SELECT name 
    FROM products 
    LIMIT 5 OFFSET 5 
复制代码

上面的语句就是告诉数据库从便宜起始位置5个数量的地方开始检索,而且检索的数据量不超过5个。也可使用简写的方式,LIMIT 5,5;blog

WHERE筛选语句

上面咱们已经看了基本的SELECT语句了,可是上面的没法知足咱们更多的需求,咱们使用数据库查询数据更多的时候是须要提供一些条件的,这时咱们便须要用到WHERE子语句。例如咱们从学生表中查询学号为10的学生名

SELECT name
    FROM student
    WHERE id = 10;
复制代码

最下面的WHERE语句后面跟的是条件,固然咱们也能够复合,使用AND、OR操做符(能够想象成编程语言的&&、||操做符)

AND
SELECT name
    FROM student
    WHERE age < 18 AND sex = female;
复制代码

上面的查询语句表示要查询年龄小于18岁,而且性别为男性的学生。

OR

SELECT name
    FROM student
    WHERE age < 18 OR age >20;
复制代码

上面的查询语句表示要查询年龄小于18岁,或者年龄大于20岁的学生。

BETWEEN AND

使用BETWEEN AND操做符能够将某个条件限定在必定范围以内,咱们能够将上面的查询在18到20岁年龄区间的改成使用BETWEEN AND查询

SELECT name
    FROM student
    WHERE age BETWEEN 18 AND 20;
复制代码

还有一些简答的单个操做符就再也不一一介绍了,具体能够去查相关文档

ORDER BY排序语句

当咱们有了咱们想要数据,咱们仍是不知足,返回来一大堆数据,毫无顺序可言,这怎么看,这是ORDER BY排序语句就登场了。ORDER BY能够按照升降序排列。默认是升序,想要使用降序时可使用DESC关键字

SELECT name 
    FROM products 
    ORDER BY name;
复制代码

这样的话就会按照name字段的字典顺序排列,若是想要变为降序,只需在ORDER BY的语句后面添加DESC。

SELECT name 
    FROM products 
    ORDER BY name DESC;
复制代码

还有能够按照多个列排序

SELECT id, price, name 
    FROM products
    ORDER BY price, name;
复制代码

上面的例子就是按照多个列排序,这里问题是只有第一个排序条件相同时第二个才会起做用。

GROUP BY子句与HAVING子句

GROUP BY子句

咱们直接看一个例子

SELECT id, COUNT(*) AS count 
    FROM products
    GROUP BY id;
    
    --结果
    
    id    count 
    BRS01   3
    DLL01   4
    FNG01   2

复制代码

上面的例子返回的结果有两个列,其中第一列为id,第二列为第一列id的数量,实际上是GROUP BY帮咱们根据id分了组,而后再每一个组各自计算的数量。有个一个须要注意的地方,GROUP BY子句必须出如今WHERE子句以后,ORDER BY子句以前

HAVING子句

依然是来看例子

SELECT id, COUNT(*) AS count 
    FROM orders
    GROUP BY id
    HAVING COUNT(*) >= 2;
复制代码

上面的语句基本与上一个例子相同,只是最后一行多了HAVING子句,表示查询分组以后的数据中数量大于2的分组

函数

函数有日期处理函数、熟知处理函数、字符处理函数、聚合函数,咱们就来看看应该是使用最多的的聚合函数的用法吧

聚合函数

上面是聚合函数的类型,他们使用起来很简单,只要在查询时,将咱们的数据字段使用函数包裹起来就好。

--平均值函数
    SELECT AVG(price) AS avg_price 
    FROM products;
    
    --总数函数
    SELECT COUNT(*) AS cust 
    FROM products;
    
    --最大值函数
    SELECT MAX(price) AS max_price
    FROM products;
    
    --最小值函数
    SELECT MIN(price) AS min_price
    FROM products;
    
    -- 求和函数
    SELECT SUM(quantity) AS items_ordered 
    FROM orderItems
    WHERE order_num = 20005;

复制代码

做业

做业一

第一步:建立数据表&插入数据

CREATE DATABASE test;
USE test;
CREATE TABLE if NOT EXISTS email(
ID INT NOT NULL PRIMARY KEY,
Email VARCHAR(255)
);
INSERT INTO email VALUES('1','a@b.com');
INSERT INTO email VALUES('2','c@d.com');
INSERT INTO email VALUES('3','a@b.com');
复制代码

第二步:查询数据

SELECT Email 
	FROM email 
	GROUP BY Email
	HAVING COUNT(*) >=2;

复制代码

结果图:

做业二

第一步:建立数据表&插入数据

CREATE TABLE if not exists World(
name VARCHAR(50) NOT NULL,
continent VARCHAR(50) NOT NULL,
area INT NOT NULL,
population INT NOT NULL,
gdp INT NOT NULL
);

INSERT INTO World
  VALUES('Afghanistan','Asia',652230,25500100,20343000);
INSERT INTO World 
  VALUES('Albania','Europe',28748,2831741,12960000);
INSERT INTO World 
  VALUES('Algeria','Africa',2381741,37100000,188681000);
INSERT INTO World
  VALUES('Andorra','Europe',468,78115,3712000);
INSERT INTO World
  VALUES('Angola','Africa',1246700,20609294,100990000);
复制代码

第二步:查询数据

SELECT name,population,area
	FROM World
	WHERE area >= 3000000 
	OR (population >= 25000000 AND gdp >= 20000000);
复制代码

结果图:

相关文章
相关标签/搜索