表类型:即为表的存储引擎
存储引擎类型:
              MyISAM: 不支持事务 表级别索 mysql默认的引擎 每个表都会对应一个文件--> ls data/library/
              InnoDB 支持事务 行级别加锁 外键
              Archive:做归档引擎的 对数据压缩 挖掘的 不允许索引 只支持insert select
              Federted 支持跨数据库连接表
              MERGE :       实现表联合或分开的 是一个虚拟表 临时表
              BLACKHOLE: 实现复制的中继的 并没有实现数据的真正存储
              CSV:       底层是文本文件 实现向不兼容的非sql的跨数据库转换
              Memory:内存引擎 比普通快30%
              Cluster:或NDB 运行内存中,用于集群中 实现节点之间数据的快速提取的
percona公司开发的xtradb支持事务
 
命令:
       修改表类型:改表的数据引擎 表中已有数据引擎要谨慎
       查看表的引擎:SHOW TABLE STATUS\G  
       查看当前系统引擎: SHOW ENGINES  
       修改表引擎:ALTER TABLE books ENGINE=innodb
                  ALTER TABLE class.mask ENGINE=InnoDB 不在class数据库中的 调用
主键的定义:
              create table stu (
                            id INT NOT NULL,
                            name CHAR(6) NOT NULL,
                            sex CHAR(1) NOT NULL,
                            PRIMARY KEY (name,sex)
                            );
              create table course (
                            id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
                            course VARCHAR(255) NOT NULL DEFAULT 'RH033',
                            starttime DATE NOT NULL DEFAULT '2011-01-09'
                            );
设置字段默认参数:ALTER TABLE stu MODIFY sex CHAR(1) NOT NULL DEFAULT 'm' 默认性别都为男
 
外键的定义:表与表之间定义 在表的引擎里要支持
              FOREIGN KEY () REFERENCES 外键指定的表
              ALTER TABLE stu ADD course TINYINT UNSIGNED DEFAULT '2'
              ALTER TABLE stu ADD FOREIGN KEY(course)<--键值 REFERENCES course(id)<--
       表中数据不完成时有要引用数据的完成性可以:置空SET NULL 删除DELECT field
              FOREIGN KEY (course) REFERENCES course(field| SET NULL|DELECT)
             
级联
 
数据库的视图:为一个表创建一个虚拟表 即为另一个表的镜像 原表为基表 新表就为虚表
              create view 视图名 as select 子句
              视图可以更新和添加数据(基表也会同步显示)
              create view test as selcet name
 
 
数据库的索引: 快速查找数据 更新时会较慢  安行row存储、显示数据
              存储数据: mysql会自动为行添加源数据(源数据与本身的表无关) 源数据有行idpage id
             mysql表数据存储在文件中
              1mysql读取数据时按照页面来的
              2、查询数据时要进行一个全表扫描:scanning
              12造成效率降低---->索引
              索引会对应表中的数据
              一般对查询语句经常用的字段作索引
       索引类型: BTREE:平衡树索引 逐层的
                 RTREE
                 HASH
                 FULLTEXT:全文索引
       索引的创建:
              create table 表名 index关键字
              alter table 表名字 add index 索引名
             create index 索引名 on 表名(col1col2)
              CREATE INDEX stu_age_index ON stu(age) USING BTREE
              SHOW CREATE TABLE stu;
数据库的事务:语句的组合被看做一个整体
              ACID:事务所遵循的原则
                    原子性 atomicity
                     一致性 consistency  数据不一致时会回滚的 以日志为基准
                     隔离性:   事务隔离级别 写入的过程中文件会被锁定
                            MyISAM-->表锁定
                            innodb--> 行锁定
                            读锁:共享的 写锁:独占的
                     持久性:durability 
       事务的创建:myisam不支持事务
                     启动事务 START TRANSACTTION  为提交之前其他用户是看不到的 可回滚自己看到
                     回滚: ROLLBACK
                     提交       COMMIT
                     保存修改内容: SAVEPOINT jing<--保存名
                    
                     指定到回滚到某一点:ROLLBACK TO SAVEPOINT jing 回滚到jing这一点
                     没有明确指定提交事务 隐式会自动提交数据
              事务的隔离级别:
                     read uncommitted  读未提交
                     read committed  读提交
                     repeatable read 重读  mysql默认级别
                     serialable 串行化
                     select @@xt_isolation 查询mysql的事务隔离级别
              变量:  全局变量
                     会话变量
                      变量 :静态 动态:执行过程就可修改的
                     设置: set global variable=  设置全局变量
               
mysql的开发:
              存储过程       存储函数       触发器           调度事件
              存储例程:存储过程 存储函数 把常用的命令集合起来以方便后续使用  sql语句模块化
              存储过程: stored procedures
                           \d //                             \d // 改变结束符号为//
                            create procedure name() 创建存储过程     create procedure select()
                                begin                                    begin
                                   statement;可以有多个               select * from stu;
                          end//                                      end//
                            \d ;                                 \d ;
                     调用存储过程 call name()                    call select()
                     删除存储过程 drop procedure select()//
                     存储过程: 支持自定义的变量@ set设置 系统的用@@  参数的输入
              存储函数:只能返回标量 字符串
                     if条件测试
                     调用存储函数 select name()函数名;
                     \d //
                     CREATE FUNCTION day()
                     RETUNRNS VARCHAR(255)
                     BEGIN
                      DECLARE message VARCHAR(255);
                      IF DAYOFWEEK(NOW()) BETWEENT 2 END 6 THEN
                      END IF;
                      RETURE message;
                     END//
                     调用:SECLECT day()//
              触发器:TRIGGER 执行时附加额外的动作 
                     mysql支持的触发器: insert delete  update
              调度事件:scheduled events  定时执行的 相当于crontab
              查看:SHOW CREATE PROCEDURE select; 查看存储过程
                     SHOW CREATE FUNCTION select; 查看存储函数
改变表的默认字符集
              ALTER TABLE
GUI 工具:
       SQLyog 远程连接
      phpMyAdmin
      MySQL Query Browser
      MySQL Administrator
      MySQL Workbench
 
mysql认证:1、登陆认证
          2、对象认证:连接进来是否有命令执行的权限