表类型:即为表的存储引擎

存储引擎类型:

              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、对象认证:连接进来是否有命令执行的权限