MySQL

  MySQL是多用户多线程的DBMS,默认支持的存储机制是 InnoDB,InnoDB
通过建立行级锁保证事务的完整性,通过共享锁处理 select
语句,以提供事务安全的存储机制。

 引擎管理和处理数据,MySQL支持多种引擎:

 ·  InnoDB :提供可靠的事务处理,但不支持全文本搜索。

 ·  MyISAM:性能高、支持全文本搜索,但不支持事务处理。

工具的安装和使用

 ·
命令行应用程序安装教程:mysql-5.7.15-winx64.zip, 安装教程,常用指令

  net start/stop mysql  // 登录/退出mysql
  mysql [-h 主机名] -u 用户名 -p  (mysql@sqh)
  create user 用户名 identified by '密码'; // 创建用户

 ·  图形化交互界面工具:mysql-workbench 或 Navicat for MySQL

某些基本操作

 ·  show databases:数据库实例包含的数据库;

 ·  use/select 数据库名:选择/查看数据库信息;
 ·  show tables:数据库中包含的数据表;

 ·  show columns from 表名:表列信息;

 ·  analyze table 表名; 检查表键是否正确;

 ·  optimize table 表名; 优化表空间;

 ·  show processlist;显示活动的线程;

函数

 ·  系统函数

  select Now()/Date()/Time();   // 时间日期
  select Version();   // 版本信息

 ·  处理函数

  Concat():字符串拼接
  Substring();截取子串
  Locate():查找子串

关键字

 ·insert

 MySql支持在单个insert语句中插入多个values值,且效率高。

 ·wherehaving
 where 子句过滤行,having 子句过滤组;只能在 having
子句中使用组函数(聚合函数);
 ·orin

 in 优于 or,速度快,可以包含select子句,与not操作符结合简化SQL语句;

 ·likeregexp

 like利用通配符*_进行字符串匹配,完全匹配列值;regexp,正则表达式,部分匹配列值,利用^xxx$可完全匹配列值,效果等效于like,其中^和$是定位符分别对应首和尾。binary
regexp可区分大小写。

 ·limit

 限制选取的行数,MySQL-5新增 limit … offset … 语法;

 ·auto_increment

 自动增加,每个表只允许有一列且必须被索引。返回值:(1)last _ insert _ id();
(2)after insert 触发器:

多表查询

 ·  交叉连接 cross join:笛卡尔乘积,无连接条件; 
 ·  自然连接 natural join:以 2
表中的所有同名列为连接条件,内部连接的一种; 
      using 子句连接:显式指定某些同名列为连接条件; 
 ·  左、右、全外连接 left/right/full join: 
      on 子句连接:常用连接方式;

约束

  MySQL 使用 auto_increment 支持自增长特性,支持除 check 外的 4
种完整性约束:
·  not null:非空约束;
·  unique:唯一约束;
·  primary key:主键约束;
·  foreign key:外键约束,参照完整性;
  级联删除:删除主表记录时,关联的从表记录也删除,则需要在建立外键约束的后面增加
on delete cascade 或 on delete set
null,前者是级联删除,后者是将从表的关联列的值设置为null。
  具体使用可参见 www.350.vip ,MySQL –
约束;

索引


模式Schema中的一个数据库对象,从属于数据表。通过快速路径访问方法快速定位数据、加快对表的查询。缺点是索引的存储占用空间、索引的维护有系统开销。

视图

  一个或多个数据表中记录的逻辑显示。通过 with check option
子句强制不允许修改视图的数据。
 ·  提供数据的独立性;
 ·  简化查询;
 ·  限制对数据的访问,提供对相同数据的不同显示;
  视图的 本质
是一条被命名的SQL查询语句。利用 子查询 建立视图,同样可以建立表:

   create or replace view 视图名
      as 子查询语句
   查看视图创建语句:show create view 视图名;
   更新视图:create or replace view 视图名;

存储过程

 MySql以call调用存储过程。

  查看存储过程创建语句:show create procedure 存储过程名;
  查看存储过程附加信息:show procedure status like '存储过程名';

游标

 MySql游标只能用于存储过程和函数。

 内部定义顺序:局部变量,游标,句柄。

触发器

 trigger只能关联表,常用的NEW(可更新、可读)表和OLD(只读)表是针对当前触发器的局部表,在高速缓存中存储新插入或删除的行数据的副本。创建:

  create trigger 触发器名 after/before insert/delete/update on 表名
  for each row 
  begin 
      SQL处理语句;
  end;

 其中,before用于数据验证,保证操作的合法性和待操作数据的正确性。

事务

 MySql以start
transaction标识事务开始。

全文本搜索

 MySql要求被检索的列在创建表时必须加索引,即利用 fulltext(列名)
启用全文本搜索,会自动维护更新该索引,通过 Match(列名)
Against(‘模式串’) 执行全文本搜索。

 优点

 ·  fulltext速度比like快; 
 ·  明确控制文本匹配,对检索结果按等级值智能排序;

 查询扩展:模糊匹配,MySql对数据和索引进行2遍扫描完成搜索。 Match(列名) Against(‘模式串’ with query
expansion) 

 布尔文本搜索:无需定义fulltext索引,利用全文本布尔操作符明确控制文本匹配模式,效率低。 Match(列名) Against(‘模式串’ in
boolean mode) 

 


参考

·  21分钟MySQL 入门教程- wid –
博客园;
·  

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注