函数:
1.字符函数:
2,数值运算符与函数:
3 ,比较运算符与函数:
4.日期时间函数:
5.信息函数:
6,聚合函数:
7,加密函数:
自定义函数:
自定义函数的必要两个条件:
1.参数
2.返回值
函数可返回任意类型的值 ,同样可以接受这些类型的参数
创建自定义函数:
CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body
函数体:
1,函数体由合法SQL语句构成
2 , 函数体可以是简单的SELECT或INSERT语句
3,函数体如果为复合结构则使用BEGIN_END语句
4,复合结构可以包含声明,循环,控制结构
创建无参函数示例:
创建有参函数:
CREATE FUNCTION name(参数)
返回类型
返回值
创建符合结构函数:
CREATE FUNCTION name(参数)
返回类型
BEGIN
流程语句
END
删除函数:
DROP FUNCTION [IF EXISTS] function_name
MYSQL存储过程
存储过程是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理
优点:
增强SQL语句的功能和灵活性
实现较快的执行速度
减少网络流量
创建存储过程:
CREATE [DEFINER={user | CURRENT_USER}]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter:[ IN | OUT | INOUT] param_name type
修改存储过程:
ALTER PROCEDURE sp_name [characteristic ...] COMMENT 'string'
|{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} | SQL SECURITY
{DEFINER | INVOKER}
删除存储过程:
DROP PROCEDURE [IF EXISTS] sp_name
IN,表示参数的值必须在调用存储过程时指定
OUT,表示参数的值可以被存储过程改变,并且可返回
INOUT,表示该参数的调用时指定,并且可以被改变和返回
过程体:
过程体为合法的SQL语句构成
过程体可以是任意的SQL语句
过程体如果为复合结构则使用BEGIN...END 语句
复合结构可以包含声明,循环,控制结构
创建无参存储过程:
调用存储过程:
CALL sp_name([parameter[,...]])
CALL sp_name[()]
创建带有IN参数的存储过程
创建带有IN和OUT类型参数
创建带有多个OUT的类型参数
存储过程与自定义函数的区别:
存储过程实现的功能复杂;函数的针对性更强
存储过程可以返回多个返回值;函数只能有一个返回值
存储过程一般独立执行;而函数可作为其他SQL语句的组成部分来实现
存储引擎:
MYSQL可以将数据以不同的技术存储在文件(内存)中,这种技术称之存储引擎。
每种存储引擎使用不同的存储机制,索引技巧,锁定水平,最终提供广泛不同的功能。
-MyISAM
-InnoDB
-Memory
-CSV
-Archive
1.并发控制
当一个连接对记录进行修改时保证数据的一致性和完整性.
锁:
-共享锁(读锁):在同一时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生变化。
-排它锁(写锁):在任何时候只能有个用户写入资源,当进行写锁时会阻塞其他的读写。
行锁:开销最大
表锁:开销最小
2.事务
-事务保证数据库的完整性
特性:-原子性(Atomicity)
-一致性(Consistency)
-隔离性(Isolation)
-持久性 (Durability)
3.外键
4.索引:对数据表中一行或多行的值进行排序的一种结构。
修改存储引擎的方法:
1修改MYSQL配置文件:
-default-storage-engine=engine
2创建数据表命令实现
CREATE TABLE name(....) ENGINE=engine;
修改表的存储引擎
MyISAM:存储限制可达256TB,支持索引,表级锁定,数据压缩。
InnoDB:存储限制为64TB,支持事务和索引,锁颗粒为行锁。