mysql基础自学
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基础自学的更多相关文章
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- 【夯实Mysql基础】记一次mysql语句的优化过程
1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...
- MySQL基础(非常全)
MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...
- mysql 基础篇5(mysql语法---数据)
6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...
- MySQL 基础语句
MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
- MySQL基础学习总结
1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...
- MySQL基础(五)——视图
MySQL基础(五)--视图
随机推荐
- mobile chart & f2
mobile chart & f2 https://www.yuque.com/antv/f2/getting-started https://antv.alipay.com/zh-cn/f2 ...
- disable html input & pointer-events
disable html input & pointer-events css https://developer.mozilla.org/en-US/docs/Web/CSS/pointer ...
- js {}与class属性描述符的区别
let data = { name: "ajanuw", change() { this.name = "Ajanuw"; }, get message() { ...
- NGK 路演美国站,SPC空投与NGK项目安全
最近,NGK全球巡回路演在美国最大城市纽约市落下帷幕,本次路演有幸邀请了NGK方面代表迈尔逊,纽约当地区块链大咖维克多以及美国当地社群意见代表乔治等人. 路演一开始,美国当地路演师Viko首先致辞,V ...
- yaml配置和ini配置的数据源配置和数据获取
1.前言 关于yaml和ini的相关理论暂不做记录,不影响代码编写,百度即可. 2.关于配置文件的选择 yaml 和 ini 都使用过, 但是yaml更符合人类使用,已要弃用ini,后期各项目均采用y ...
- ElasticSearch 聚合分析
公号:码农充电站pro 主页:https://codeshellme.github.io ES 中的聚合分析(Aggregations)是对数据的统计分析功能,它的优点是实时性较高,相比于 Hadoo ...
- c#winform主题实现的一个方法
winform的主题实现没有bs里面那么舒服,下面做了一个简单实现,记录一下. 1.一个接口,需要做主题的控件.窗体都要实现这个接口 /// <summary> /// 使用主题的控件.窗 ...
- 如何创建一个Maven项目(eclipse版本)
1 Maven概念 Maven是一个构建项目和管理项目依赖的工具 2 Maven运行原理 这里需要引入两个词汇,叫 本地仓库.中央仓库 本地仓库:就字面意思,存储在自己电脑上的文件夹(需要自己手动创建 ...
- Tango with Django 1.9 中文——1.概述
译者注:英文书地址https://leanpub.com/tangowithdjango19/,作者为Leif Azzopardi 和 David Maxwell.本文仅为尝试.学习和交流,著作权利归 ...
- 大话Spark(5)-三图详述Spark Standalone/Client/Cluster运行模式
之前在 大话Spark(2)里讲过Spark Yarn-Client的运行模式,有同学反馈与Cluster模式没有对比, 这里我重新整理了三张图分别看下Standalone,Yarn-Client 和 ...