Mysql的特点:
优点
镜像复制:内容动态复制到其他计算机
GIS函数
全文检索: 简化对文本字段内单词的搜索
缺点
不支持自定义数据类型
不支持XML
数据表类型
MyISAM: 静态(预定义固定长度、存储效率高)。 压缩(减少存储空间)
InnoDB: 支持事务,数据行级锁定机制,外键约束, 不支持全文索引和GIS数据
Heap:存在于内存中,存取速度快,主要用于零食表
事务用于InnoDB,锁定用于MyISAM,使用lock table 和unlock解上锁,只有InnoDB引擎才允许使用外键
数据类型
Bit数据类型
严格:integer decimal numeric
近似:float real double
日期
同时包含日期和时间: datetime.
Timestamp显示类型不正确,可能为整数值或datetime类型,用于修改记录的时间戳
字符串
enum, set, blob 和text类型。 enum和set数据类型: 从n个字符串中选择一个或N个
存储过程
存储过程包含参数,事务,循环,游标,循环,嵌套调用
1. 显示所有的存储过程 show procedure status
2. 显示存储过程的详细信息 show create procedure sp_name
3. 游标的使用:
声明变量,所有的声明必须在非声明的语句前面
declare cur1CURSOR FOR SELECT name FROM test.level ;
CONTINUE HANDLERFOR SQLSTATE '02000' SET tmpname = null;
OPEN cur1;
/*游标向下走一步*/
FETCH cur1 INTOtmpName;
/* 循环体这很明显把游标查询出的 name都加起并用; 号隔开*/
WHILE ( tmpnameis not null) DO
set tmpName = CONCAT(tmpName ,";") ;
set allName = CONCAT(allName ,tmpName) ;
/*游标向下走一步*/
FETCHcur1 INTO tmpName;
END WHILE;
CLOSE cur1;
select allName;
-- 如果出现异常,或自动处理并 rollback, 但不再通知调用方了
4. 用户变量以 @ 开头,对大小写不敏感。 系统变量有两种,全局变量影响整体操作 @@global. 变量名,会话变量影响客户端连接 @@session. 变量名
5. 存储过程可以有参数,参数类型为 out 和 in
6. 启动和停止事务 start transaction commitroolbak