MySQL

内连接
使用linner join on 实现内连接
Select 列名列表 from 表1 inner join 表2 on 表1.列名 = 表2.列名

外连接
左外连接:
用法:left outer join 或 left join (outer可省略)
Select 左表列名 as 别名 , 右表列名 as 别名 from表名(左) left outer join表名(右) on 条件

右外连接
用法:right outer join 或 right join
与左外连接相反,将返回右表的所有行,如果右表的某行在左表没有所匹配的行,在左表中数据显示为空

自连接(同一个表)
Select 列名1 as 别名 , 列名2 as 别名 from A表名 left outer join A表名 on 条件

数据路建模
数据库设计步骤
需求分析
概念设计
逻辑设计
物理设计
数据库的实现
数据库的运行与维护工作

创建索引
查看索引
Show index from 表名

普通索引(单列索引、组合索引)

创建表时创建索引:
Create table 表名(列名 数据类型,……,index 索引名(列名))

Create index 索引名 on 表名 (列名)

Alter table 表名 add index 索引名(列名)

唯一索引
Create unique index 索引名 on 表名 (列名)

全文索引
Create fulltext index 索引名 on 表名 (列名)

使用索引
使用 match(列名列表) against(‘搜索的值’)
Select * from 表名 where math(列名列表) against(‘搜索的值’)

索引创建原则:
1、 在经常需要搜索的列上,可以加快搜索数度
2、 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构
3、 在经常用在连接的列上,这些列主要是一些外键,可以加快连接速度
4、 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的
5、 在经常需要排序的列上创建索引,这样查询可以利用索引的排序,加快排序查询时间
6、 在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度

Explain

使用Explain可以得到:
1、 表的读取顺序
2、 表的读取操作的操作类型
3、 哪些索引可以使用
4、 哪些索引被实际使用
5、 表之间的引用
6、 每张表有多少行被优化器查询
7、 额外开销

语法结构:
Explain 表名
Explain select 操作

Id:select 标识符
Select_type :查询中每个select 子句的类型
Table:输出的行所引用的表
Partitions:代表给定表所使用的分区
Type:查询执行计划中表使用的连接方式
Possible_keys:mysql能使用那个索引在该表中找到行数据
Key:显示mysql实际决定使用的索引
Key_len:选定的索引键的长度
Ref:显示使用哪个列或常数与key一起从列表中选择行
Rows:显示mysql认为它执行查询时必须检查的行数
Filtered:显示mysql过滤数据的百分比的值
Extra:显示包括了mysql执行查询时的其他额外信息

存储过程
修改结束标识符
Delimiter 要使用的符号
Create procedure 存储过程名称 (参数列表)
Begin
过程体(SQL代码集 <from dual 伪表>)
End

调用存储过程
Call 存储过程名称()

查询某个数据库下所有的存储过程
Show procedure status where db = ‘数据库名称’

变量分类:局部变量、用户变量、回话变量、全局变量
局部变量
在begin到end语句块之间,在该语句块里设置的变量
一般用declare来声明,可以使用defalut来说明默认值
Create procedure 存储过程名称 (参数列表)
Begin
Declare 变量名1 数据类型;
Declare 变量名2 数据类型【defalut 默认值】;
过程体(SQL代码集 <from dual 伪表>)
End

变量set
Create procedure 存储过程名称 (参数列表)
Begin
Declare 变量名2 数据类型【defalut 默认值】;
set 变量名 = 值或表达式
或<set 变量名 := 值或表达式>
End

用户变量
以‘@’开始,形式为“@变量名”

变量之间层次关系:
变量包括局部变量、用户变量。用户变量包括回话变量、全局变量

Select into 语句
Select 列名1,列名2,…… into 变量1,变量2,……From 表名 where 过滤条件

有参存储
Create procedure 存储过程名称 (参数类型 参数名 参数数据类型)
Begin
过程体 (SQL代码集)
End

参数类型
1、in 输入参数(默认)
就是由用户调用存储过程时传入的参数

2、out 输出参数
表示该参数可以将某个值传递回调用他的过程
在存储过程内部,该参数初始值为null,无论调用者是否给储存过程参数设置值

3、inout 输入输出参数
参数既是输入参数,又是输出参数

如果仅仅想把数据传给MySQL存储过程,那就使用“in”类型参数;
如果仅仅从MySQL存储过程返回值,那就使用“out”类型参数;
如果需要把数据传给MySQL存储过程,还要经过一些计算后在传给我们,此时,要使用“inout”类型参数。

MySQL存储过程参数如果不显示指定“in”、“out”、“inout”,则默认为“in”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值