当前位置:   article > 正文

MySQL基础知识学习(二)_mysql连表查询只查匹配的

mysql连表查询只查匹配的

目录

一、连接查询

二、子查询

三、MySQL常用内置函数

四、存储过程

五、视图

六、事物

七、索引

八、基于命令行的MySQL


一、连接查询

1、基本概念

  • 连接查询可以通过连接运算符(连接条件)可以实现多个表查询
  • 内连接:查询的结果只显示两个表中满足连接条件的部分
  • 左连接:查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据使用null填充
  • 右连接:查询的结果为两个表匹配到的数据加右表特有的数据,对于左表中不存在的数据使用null填充

2、内连接(inner join 表 on 连接)

  • 语法1:
  1. select 字段1,字段2,... from1
  2. inner join2 on1.字段=2.字段
  • 语法2(隐式内连接):
  1. select 字段1,字段2,... from1,表2
  2. where1.字段=2.字段

3、左连接(left join 表 on 连接)

  • 语法:
  1. select 字段1,字段2,... from1
  2. left join2 on1.字段=2.字段

4、右连接(right join 表 on 连接)

  • 语法:
  1. select 字段1,字段2,... from1
  2. right join2 on1.字段=2.字段

二、子查询

1、定义

  • 在一个select 语句中,嵌入了另外一个select 语句,那么被嵌入的select 语句称为子查询语句

2、主查询

  • 外层的第一条select 语句为主查询

3、主查询和子查询的关系

  • 子查询是嵌入到主查询中
  • 子查询是辅助主查询的,要么充当条件,要么充当数据源
  • 子查询是可以独立存在的语句,是一条完整的select语句

(1) 标量子查询:子查询返回的结果只有一个值(一行一列),这种称为标量子查询

  1. --例子:查询大于平均年龄的学生信息
  2. select * form students
  3. where age > (select avg(age) from student);

(2)列子查询:子查询返回的结果是一列(一列多行),这种称之为列子查询

  1. --例子:查询30岁的学生的成绩
  2. select * from score
  3. where studentNo in (select studentNo from students where age=30);

(3)表级子查询:子查询返回的结果是多行多列(一个表),这种称之为表级子查询

  1. --例子:查询所有女学生的信息和成绩
  2. select * from (select * from students where sex='女') stu
  3. inner join score sc on sc.studentNo=stu.studentNo;

三、MySQL常用内置函数

1、字符串函数

(1)拼接字符串 concat(str1,str2...)

  • 参数可以是数字,也可以是字符串
  • 把所有的参数连接成一个完整的字符串

(2)包含字符个数 length(str)

  • 如果字符串包含utf8格式的汉字,一个汉字length返回3

(3)截取字符串

  • left(str,len)返回字符串str的左端len个字符,中文与英文字母个数len一致
  • right(str,len)返回字符串str的右端len个字符,中文与英文字母个数len一致
  • substring(str,pos,len)返回字符串str的位置pos起len个字符,pos从1开始计数

(4)去除空格

  • ltrim(str)返回删除左侧空格的字符串str
  • rtrim(str)返回删除右侧空格的字符串str
  • trim(str)返回删除左右两侧空格的字符串str

2、数字函数

(1)求四舍五入值round(n,d)

  • n表示原数,d表示小数位置,默认为0

(2)随机数rand()

  • 值为0-1.0的浮点数
  1. --小技巧:从学生表中随机抽出一名学生
  2. select * from students order by rand() limit 1;

 3、日期时间函数

(1)当前日期 current_date()

(2)当前时间 current_time()

(3)当前日期和时间 now()


四、存储过程

1、定义:存储过程procedure也翻译为存储程序,是一条或者多条SQL语句的集合

2、创建存储过程:

  1. create procedure 存储过程名称(参数列表)
  2. begin
  3. sql 语句
  4. end

3、使用存储过程:

call 存储过程(参数列表);

4、删除存储过程:

  1. drop procedure 存储过程;
  2. drop procedure if exists 存储过程;

五、视图

1、定义:视图本质就是对查询的封装,可以当成一张表来使用(只能在select使用)

2、创建视图:

  1. create view 视图名称
  2. as
  3. select 语句;

3、删除视图:

  1. drop view 视图名称;
  2. drop view if exists 视图名称;

六、事物

1、定义:是一个操作系列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单位

2、事物命令:

  • 开启事物:begin,开启事物后执行修改 update 或删除 delete记录语句,变更会写到缓存中,而不会立即生效
  • 回滚事物:rollback,放弃修改
  • 提交事物:commit,将修改的数据写入实际的表中

 当事物开启后,如果出现非人为因素导致语句不能执行下去,默认执行rollback


七、索引

1、定义:索引类似目录,索引是对表起作用,可以加快数据查询效率

2、创建索引:

create index 索引名称 on 表名(字段名称(长度));
  • 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
  • 字段类型如果不是字符串,可以不填写长度部分

3、调用索引:只要where条件后面用到的字段建立了索引,那么系统会自动调用

4、查看索引:

show index from 表名;

注:对于主键,系统会自动建立索引

5、删除索引:

drop index 索引名称 on 表名;

6、索引优缺点

  • 优点:索引大大提高了select 语句的查询速度
  • 缺点:会降低更新表的速度,因为更新表时,不仅要保存数据,还要保存索引文件

当表要处理大量数据时,可以先删除索引处理数据,最后再添加索引,提高处理数据效率。


八、基于命令行的MySQL

1、windows cmd窗口连接mysql

(1)进入mysql.exe所在目录

(2)输入 mysql -h [主机名] -u [用户名] -p (本地连接可以不写 -h)

参数说明
-h [主机名]

指定要连接mysql的ip地址或者主机名称;

如省略-h [主机名] 参数,mysql 会自动默认为本地连接;

-u [用户名]指定连接的用户名
-p执行命令后会提示输入密码

2、窗口常用命令(大部分与SQL命令相同)

(1)显示所有数据库:show databases;

(2)进入某个数据库:use 数据库名称;

(3)显示数据库所有表:show tables;

(4)告诉mysql数据库使用编码格式:set names gbk / utf8;(当汉字出现乱码时使用)

(5)查看表的结构:desc 表名;

(6)创建数据库:create database 数据库名 default charset [默认字符集];

  • 默认字符集是utf8、jbk等字符编码格式
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/189040
推荐阅读
相关标签
  

闽ICP备14008679号