1.1基础查询

语法:select 查询列表 from 表名;
注意:
1、查询列表可以是:表中的字段、常量值、表达式、函数
2、查询的结果是一个虚拟表格

完整的写法是:先声明使用哪个库,再写SQL语

如果你不想在SQL面向于SQL软件开发,而是只想在工作中从数据库上抓取文件,这里可以不写
这是键盘上数字键1那个符号,不是单引号,可以省略

什么时候必须使用呢?例如:
当字段名与关键字同名时,必需使用这个符号声明你这是字段而不是关键字
例如:字段名为NAME,SQL关键字也有NAME

1.SELECT 商品编码 FROM `销售表`
2.SELECT 商品编码,店号 FROM 销售表
3.SELECT * FROM 销售表

小技巧:
当你写了多条SQL语句时,只要执行其中的一句或几句,将鼠标选中它再运行。

1.2 查询字段重命名 AS

语法:select 原名 as 别名 from 表名; # 可以用AS,建议用AS,方便你自己阅读
语法:select 原名 别名 from 表名; # 可以用空格

作用:
1、数据库字段一般都是英文名,你查询后的数据为了阅读方便,一般情况下抓取数据时会改成中文
2、高阶操作,多表抓取字段时可能会有重名的

注意:别名中包含特殊符号时,要用双引号括起来。【例如空格、#号等】SELECT 商品编码 AS 编码 FROM `销售表`

1.3 去重复 DISTINCT

语法:SELECT DISTINCT 字段 FROM 表名;
例如:SELECT DISTINCT 日期 FROM `销售表`;

SELECT DISTINCT 日期 FROM `销售表`

1.4 字段连接 CONCAT()

注意:不能使用+号连接,这里+号只能用做运算

字段链接使用CONCAT()函数
SELECT CONCAT(字段1,字段2,…) AS 别名 FROM 表名;
SELECT CONCAT(字段1,'_',字段2,…) AS 别名 FROM 表名;
SELECT CONCAT(店号,店名) AS 店铺 FROM `店铺表`;
假设字段中的值有可能为空时怎么办?

判断字段是否为空时,使用IFNULL()函数

SELECT CONCAT(商品编码,'、',IFNULL(销售数量,0)) AS 别名 FROM `销售表`;

1.5 条件查询 where

select 查询列表 from 表名 where 筛选条件;

执行顺序:先找表,筛选,查询

例如:销量大于250
SELECT * FROM `销售表` WHERE 销售数量 > 250;
SELECT 日期,商品编码 FROM `销售表` WHERE 销售数量 <> 250; #可以使用!=

例如:销量在150至250之间的 【这里只是举例,实际中不这样写。方法后面会讲】
SELECT * FROM `销售表` WHERE 销售数量 >= 150 and 销售数量 <= 250;

1.5.1 like 通配搜索

例如:商品编码里有A的
SELECT * FROM `销售表` WHERE 商品编码 LIKE '%a%'; # 不区分大小写
例如:商品编码第一个字符为A的
SELECT * FROM `销售表` WHERE 商品编码 LIKE 'a%'; # 第一个字符
例如:商品编码第三个字符为B的第五个字符为C的
SELECT * FROM `销售表` WHERE 商品编码 LIKE '__b_c%'; # 一个下划线代替一个字符,就像Excel中的?号通配符

特殊情况:(使用\转义字符)或(ESCAPE关键字)
例1:第二个字符为下划线
SELECT * FROM `销售表` WHERE 商品编码 LIKE '_\_%';
SELECT * FROM `销售表` WHERE 商品编码 LIKE '_$_%' ESCAPE '$'; # $可以写成26个字母中任意一个
例2:第二个字符为百分号
SELECT * FROM `销售表` WHERE 商品编码 LIKE '_\%%';
SELECT * FROM `销售表` WHERE 商品编码 LIKE '_$%%' ESCAPE '$'; # $可以写成26个字母中任意一个

1.5.2 between…and 两个值或日期之间

例如:销量在150至250之间的 【与之前学过的AND效果是一样的】
SELECT * FROM `销售表` WHERE 销售数量 BETWEEN 150 AND 250;
SELECT * FROM `销售表` WHERE 销售数量 >= 150 and 销售数量 <= 250;
注意事项:
(1)between…and 这两个值是包含本身的,就相当于是大于等于或小于等于。
(2)这两个值的位置不能交换,他的意思是大于等于左边,小于等于右边。
拓展:例如销量不在150至250之间的。【配合NOT把它反过来】
SELECT * FROM `销售表` WHERE 销售数量 NOT BETWEEN 150 AND 250;

1.5.3 in 指定条件范围

如:店号为1,3,7这三家店铺的销售数据
SELECT * FROM `销售表` WHERE 店号 = 1 or 店号 = 3 or 店号 = 4; # 这才3家店,如果你们有100家店,让你找其中40家店你怎么写?
SELECT * FROM `销售表` WHERE 店号 IN(1,3,7);
为什么用or而不是用and呢?一定有人会问,这就是逻辑思维!店号=3或店号=4 如果用and的意思就是店号是34
in的注意事项:使用in比使用or提高了语句的简洁度
(1)in列表的值类型必须是一致类型(例如里面是店号就都是店号)
(2)in列表的值不支持通配符

1.5.4 is null 为空值

例如:判断销售量为空的数据
SELECT * FROM `销售表` WHERE 销售数量 = NULL;
=号运算符不能判断NULL值,必需使用is null
SELECT * FROM `销售表` WHERE 销售数量 IS NULL;
如果想查非空值:
SELECT * FROM `销售表` WHERE 销售数量 IS NOT NULL;
注意:
条件运算符的=或<>是不能判断NULL值的,必须用 IS NULL 和 IS NOT NULL
<=>安全等于可以判断NULL值,也可以判断普通值
SELECT * FROM `销售表` WHERE 销售数量 <=> NULL;
但是这个符号可读性差,看到之后不易分清。

二、排序查询 ORDEY BY

1、升序
SELECT 字段名 FROM 表名 ORDEY BY 字段名 ASC (ASC可以省略默认升序)
2、降序
SELECT 字段名 FROM 表名 ORDEY BY 字段名 DESC
注意1:在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则报错
注意2:只有limit子句放在ORDER BY后面,其它情况下,ORDER BY 放最后
拓展:添加筛选条件
例如:店号为1,3,7店的数据,按销售数量降序
SELECT * FROM `销售表` WHERE 店号 in(1,3,7) ORDER BY 销售数量 DESC;
注意2:ORDER BY后面可以是字段,也可以是表达式,也可以是别名
例如:
SELECT *,销售数量*售价 AS 销售金额 FROM 表名 ORDEY BY 销售数量*售价 DESC # 此案例不要去做,我们还没讲跨表操作
SELECT *,销售数量*售价 AS 销售金额 FROM 表名 ORDEY BY 销售金额 DESC # 此案例不要去做,我们还没讲跨表操作

2.1 升序 ASC

升序
SELECT 字段名 FROM 表名 ORDEY BY 字段名 ASC
(ASC可以省略默认升序)
例如:SELECT * FROM `销售表` ORDER BY 销售数量 ASC;

2.2 降序 DESC

降序
SELECT 字段名 FROM 表名 ORDEY BY 字段名 DESC
例如:SELECT * FROM `销售表` ORDER BY 销售数量 DESC;
拓展:添加筛选条件
例如:店号为1,3,7店的数据,按销售数量降序
SELECT * FROM `销售表` WHERE 店号 in(1,3,7) ORDER BY 销售数量 DESC;

2.3 排序优先级

排序优先级
SELECT 字段名 FROM 表名 ORDER BY 字段名1 DESC,字段名2 ASC
ORDER BY语句中,优先排序的字段放在前面,不同字段可以指定不同的排序规则,如果没有指定排序规则,则默认为升序(ASC)排列。
例如:SELECT * FROM `销售表` ORDER BY 销售数量 DESC,日期 ASC;

2.4 按长度排序 LENGTH( )

例如:按商品名称的长度排序列
SELECT * FROM 商品表 ORDER BY LENGTH(商品名称); # 升序
SELECT * FROM 商品表 ORDER BY LENGTH(商品名称) DESC; # 降序

2.5 中文列排序 INSTR( )

中文列排序(例如字段名为月份:值包含一月、二月、三月、四月、五月)
SELECT 字段名 FROM 表名 ORDER BY INSTR('五月,四月,三月,二月,一月',月份)
INSTR函数有些类似于工作表函数FIND,查找一个字符串在另一个字符串中的位置,和FIND不同的是,当找不到相关值时,结果返回0,而非
错误值。INSTR(str, substr),返回substr在str中的位置,若不存在,则返回0。
例如:
SELECT * FROM `测试` ORDER BY INSTR('五月,四月,三月,二月,一月',月份)

2.6 按列的位置排序

ORDER BY 还支持按相对位置进行排序
SELECT 商品名称,进价,售价 FROM `商品表` ORDER BY 2,3

3.1 常用文本函数
在UTF8字符集中,一个英文字母点1个字节,一个汉字占3个字节。
在GBK字符集中,一个英文字母点1个字节,一个汉字占2个字节。
函数是可以嵌套的,函数的返回值可以充当另一个函数的参数
1、返回字符串左边的字符
语法:LEFT(字符串或字段,长度)
SELECT LEFT('孙兴华',2)
SELECT LEFT(商品名称,1) FROM `商品表`
2、返回字符串长度
语法:LENGTH(字符串或字段) 目前为止就这一个指的是字节,其它都是指的字符
SELECT LENGTH('孙兴华')
SELECT LENGTH(商品名称) FROM `商品表`
3、字段连接或字符串连接
语法:CONCAT(字段1,字段2,…)
SELECT CONCAT(字段1,'_',字段2,…) AS 别名 FROM 表名;
4、大写和小写转换
语法:LOWER(字段) # 转小写
语法:UPPER(字段) # 转大写
SELECT LOWER(`商品编码`) FROM `销售表`
SELECT UPPER(`商品编码`) FROM `销售表`
5、去掉左边和右边的空格
语法:TRIM(字段名或字符串) # 左右两边
语法:LTRIM(字段名或字符串) # 左
语法:RTRIM(字段名或字符串) # 右
SELECT TRIM(' 孙兴华 ')
SELECT TRIM('a' FROM 'aa孙aa')
SELECT LTRIM(`商品编码`) FROM `销售表`
SELECT RTRIM(`商品编码`) FROM `销售表`
3.1 常用文本函数
2020年3月30日 9:52
分区 初级 的第 23 页 6、字符截取 substr
语法:SUBSTR(字符或字段,起始位置,结束位置)
语法:SUBSTR(字符或字段,起始位置)
SQL与其它编程语言例外,索引从1开始!!!
SELECT SUBSTR('跟着孙兴华学习Python进阶',3,3) AS 姓名
SELECT SUBSTR('跟着孙兴华学习Python进阶',5) AS 姓名
7、返回子串第一次出现的索引,如果找不到返回0
语法:INSTR(字符串,子串)
SELECT INSTR('孙兴华坚持中文讲课因为孙兴华英文不好','孙兴华')
8、左填充和右填充
语法:LPAD(字符串,字符位数,‘占位’) # 左填充
语法:RPAD(字符串,字符位数,‘占位’) # 右填充
SELECT LPAD('孙兴华',8,'*')
SELECT RPAD('孙兴华',8,'*')
SELECT LPAD('孙兴华',2,'*') # 返回:孙兴
SELECT RPAD('孙兴华',2,'*') # 返回:孙兴
9、替换
语法:REPLACE(字符串,替换谁,换成什么)
SELECT REPLACE('孙兴华和孙兴华和孙兴华','孙兴华','华兴孙')

上述代码均拷贝至《跟着孙兴华学习MySQL》关系型数据库教程[初级篇完结]

详情请去看连接https://www.bilibili.com/video/BV1Dk4y1d71j?p=6&spm_id_from=pageDriver

本人菜鸡一枚正在努力学习找工作!!

加油!冲!

mysql基础自学的更多相关文章

  1. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  2. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  3. 【夯实Mysql基础】记一次mysql语句的优化过程

    1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...

  4. MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  5. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

  6. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  7. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  8. MySQL基础学习总结

    1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...

  9. MySQL基础(五)——视图

    MySQL基础(五)--视图

随机推荐

  1. PWA & TWA

    PWA & TWA https://www.bilibili.com/video/av68082979/ Service Worker workbox.js https://developer ...

  2. WEB 面向开发者的结构化数据

    通常用于google搜索 See also: video 探索搜索库

  3. NGK内存将为全球投资者创造新的财富增长机会

    2020年,随着BTC的持续上涨带动了整个区块链市场的持续加温,同时金融市场也对金融体制做出了改变,关于金融和区块链的结合越来越被人们所认可,在此基础上,DeFi行业借此迎来了快速发展,据不完全统计, ...

  4. 翻译:《实用的Python编程》01_06_Files

    目录| 上一节(1.5 列表) | 下一节 (1.7 函数) 1.6 文件管理 大多数的程序需要从某处读取输入.本节讨论文件访问. 文件输入和输出 打开一个文件: f = open('foo.txt' ...

  5. 记录一次gitlab版本回退以及代码冲突解决流程

    版本回退 git clone -b 分支名 项目地址 克隆需要回退的分支代码 git pull    保证代码提交记录最新 git log --pretty=oneline    以行的形式展示提交记 ...

  6. 在测试自定义starter时,若出现无法找到helloservice的Bean的解决方法

    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoc ...

  7. eclipse安装mybatis的插件

    在help中打开Eclipse Marketplace... 输入mybatis后搜索,点击install即可 功能说明: 1.查找某一个方法 在dao接口中 按住Ctrl键,鼠标指到方法名称上 选择 ...

  8. How DRI and DRM Work

    How DRI and DRM Work Introduction This page is intended as an introduction to what DRI and DRM are, ...

  9. 【图像处理】使用OpenCV进行图像处理教程(一)

    OpenCV是进行图像处理的工具,也是计算机视觉领域近十几年不断发展和完善的产物.面对这个已基本成熟的开源库知识体系,我们新生代有必要不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 从这篇 ...

  10. 【转载】Java泛型详解

    [转载]http://www.importnew.com/24029.html 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考 ...