Mysql 介绍(中)
来源:互联网 发布:淮南seo 编辑:程序博客网 时间:2024/06/06 02:15
全部代码下载(csdn):链接
Github链接:链接
1.select语句简单介绍:
select语句从语义上就可以知道主要是用来进行查询的
- 数据表都已经创建起来了,我们已经插入了许多的数据,我们可以用自己喜欢的方式对数据表里面的信息进行检索和显示了。比如说显示我们建立的表student所有的数据:
select * from student;
显示如下:
- select语法格式:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2.简单查询:
2.1查询指定字段
第一部分介绍的 select * from student;中的*号是通配符,意思查询的全部列,平时我们经常要查询的可能只是名字或者分数,这是就可以指定字段进行查找
- 语法格式:
SELECT 字段名 FROM 表名;
- 演示如下:选择指定字段为sname,mark的两列
- 1
- 2
- 3
- 可以使用as关键字为字段定义别名:
如:
- 1
- 2
- 3
- 4
- 5
显示如下:
- 查询时可以添加常量列,比如某个学生都属于2014级自动化班:
- 1
- 2
- 3
- 4
- 5
2.2限制查询行数:也叫分页查询;
当我们数据库很大时为了显示或处理方便可以使用分页查询:
- 1.语法格式:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
index数为开始位置的前一行,count数为要检索的行数;
- 2. 演示如下:选出student的从第二行开始的3行
- 1
- 2
- 3
- 4
- 5
- 3. 还可以选择倒叙或者升序:desc降序,asc升序
- 1
- 2
- 3
- 4
- 5
- 4. 注意:
在给出order by子句时,应该保证他位于 from子句之后。如果使用limit,他必须位于order by子句之后,使用子句的次序不对将产生错误消息
3.复杂查询:
3.1查询之过滤:
数据库表一般包含大量的数据,很少需要检索表中所有行。通常会根据特定操作或报告的需要提取表数据的子集。
- 1.语法格式:
select * from student where 条件;
如:查询sid=2的学生:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 2.支持的子句操作符:
- 3.范围过滤:
为了检查某个范围的值,可使用between操作符:
语法:select from***where***between***and***
如:sid在002到004之间
演示:select * from student where sid between 002 and 004;
- 4.空值检查:
在创建表时,表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时,被称作包含空值null:
语法: select ***from***where***is***null
如:
演示:select * from student where sgender is null;
- 5.条件逻辑过滤:
为了进行更强的过滤控制,MySQL允许给出多个where子句。这些子句可以两种方式使用:以and子句的方式或or子句的方式使用:
语法:select * from student where 条件1 and(or) 条件2;
如:选择sid==001和002并且mark大于1
演示:select * from student where (sid=001 or sid=002) and mark>1;
注意:and和or的组合带来了一个问题——计算次序:and操作符的优先级高于or.所以上面演示的时候将or语句用括号包围了
- 6.In操作符:
in操作符用来指定范围,范围中的每个条件都可以进行匹配。in取合法值的由逗号分隔的清单,全部括在圆括号中
语法:select ***from***where in (清单)
如:选择出sid在(001,002,003)中
演示:select * from student where sid in (001,002,003);
为什么要使用IN操作符?其优点如下
在使用长的合法选项清单时,In操作符的语法更加清楚而且更直观 在使用IN时计算的次序更容易管理 ,IN操作符一般比OR操作符清单执行更快
IN的最大优点是可以包含其他select语句,似的能够更动态的建立where子句
- 7.not操作符:
WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后的任何条件。
如否定刚刚的in条件:
select * from student where sid not in (001,002,003);
- 8.使用通配符:
用来匹配值的一部分的特殊字符,
为在搜索句子中使用通配符,必须使用like操作符。like指示mysQL后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。
在搜索串中,%表示任何字符出现任意次数
下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符
演示如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 9.用正则表达式:
正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。关键字为regexp;正则表达式搜索与like比较相似;此去只做简单演示;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
3.2查询之计算字段:
查询可以对一些字段进行算术运算,包括加减乘除;
- concat()函数来拼接两个列。
- 1
- 2
- 3
- 4
- 5
- +,-,×,/用来计算字段:
- 1
- 2
- 3
- 4
- 5
3.3使用函数:
对获得的数据进行处理比如对获得的字符串处理,对日期处理,对数值处理;
- 1.支持的函数:
- 2.简单演示:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
3.4汇总数据(合计函数):
- 1.avg max, min, sum合计函数
Sum函数返回满足where条件的行的和
AVG函数返回满足where条件的一列的平均值
Max/min函数返回满足where条件的一列的最大/最小值
演示:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 2.count函数:
Count(列名)返回某一列,行的总数
演示:
- 1
- 2
- 3
- 4
- 5
3.5数据分组:
在SQL的语法里,GROUP BY和HAVING子句用来对数据进行汇总。GROUP BY子句指明了按照哪几个字段来分组,而将记录分组后,用HAVING子句过滤这些记录。
- 1.语法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
注意:Having和where均可实现过滤,但在having可以使用合计函数,having通常跟在group by后,它作用于组。
- 2. 简单演示:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
3.6子句顺序:
– select子句顺序–
– select–from–where–group by–having–order by–limit–
4.多表查询:
多表查询规则:1)确定查询哪些表 2)确定哪些哪些字段 3)表与表之间连接条件 (规律:连接条件数量是表数量-1)
4.1子查询:
子查询可以理解为 套查询.子查询是一个Select语句.
1.分为三种方式:
- 表达式的值与子查询返回的单一值做比较
表达式 comparision ANY|ALL|SOME - 检查表达式的值是否匹配子查询返回的一组值的某个值
[NOT]IN(子查询) - 做为计算字段使用子查询
- 表达式的值与子查询返回的单一值做比较
2.演示如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
4.2内连接查询:
通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。
- 1.定义:
内连接(inner join或者join,也可以使用逗号)只返回两个表中连接字段相等的行;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 2.演示如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
4.3外接查询:
MySQL中的外连接,分为左外连接和右连接,即除了返回符合连接条件的结果之外,还要返回左表(左连接)或者右表(右连接)中不符合连接条件的结果,相对应的使用NULL对应。
- 1.左右连接:
左连接(left join)返回左表中所有记录和右表中连接字段相等的记录
右连接(right join)返回右表中所有记录和左表中连接字段相等的记录
如果两个表中字段并不完全一一对应,想要那些没有对应的字段也显示出来就可以使用左连接和右连接查询,一个是包括左边所有,一个是包括右边;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 2.演示如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
4.4组合(联合)查询:
- 1.定义:
把两次或多次的查询结果合并起来,要求查询的列数一致,推荐查询的对应的列类型一致,可以查询多张表,多次查询语句时如果列名不一样,则取第一次的列名!如果不同的语句中取出的行的每个列的值都一样,那么结果将自动会去重复,如果不想去重复则要加all来声明,即union all。
简单理解:union 跟where的多个or条件一样;
语法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 2.演示如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
4.5 笛卡尔积(交叉连接)查询:
- 1.定义:
笛卡尔积返回的结果为被连接的两个数据表的乘积:
假设现在有两张表A和B:如下
A表:
B表:
则查询的笛卡尔积如下:select * from A,B;
- 2.语法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 3.演示如上:
- Mysql 介绍(中)
- MySQL中ONDUPLICATEKEYUPDATE 介绍
- MySQL中数据类型介绍
- MySQL中Cardinality介绍
- Mysql数据库中字段介绍
- mysql中锁的介绍
- MYSQL中常用数据类型介绍
- MySQL中视图的介绍
- mysql中dcl语句介绍
- MYSQL中MY.CNF配置文件及参数介绍(一)
- mysql介绍(myisam)
- mysql介绍(innodb)
- Mysql 介绍(上)
- Mysql 介绍(下)
- mysql 中show 命令用法详细介绍
- mysql 中show 命令用法详细介绍
- mysql 中show 命令用法详细介绍
- MySQL中字符串函数详细介绍
- ESPDUINO上传数据到oneNet云平台
- 循环队列的基本功能实现
- 那些 22 岁毕业做程序员的“普通”人,他们 50 岁左右时的人生轨迹是怎样的?
- Centos 6.5下安装docker
- 普通成员函数和内联函数调用区别(内含函数调用过程)
- Mysql 介绍(中)
- 关于编码格式的浅谈【经验】
- 简易的组装Json工具类
- 无服务器探索之路(初级):AWS Lambda服务应用场景实践之一(九)
- SSM整合报错
- Netty启动过程分析
- 谈智慧城市:物联网无所不在的互联互通、让梦想成真
- deepmind_lab 全部软件更新-----包括git curl zip unzip----msys64.rar
- UML的9种图例解析