C++总复习--9--C++程序设计--MySQL数据库

C++总复习--9--C++程序设计--MySQL数据库

1.SQL语句的编写

(1)DDL

     create    drop    alter   show

  (2)DML

    insert   delete  update  select

  (3)DCL

    grant   revoke

2.MySQL存储引擎

(1)MyISAM

   (2) InnoDB

3.事务


1.SQL

(1)DDL    数据定义语言

           create   drop(回收)   alter(修改)   show

  1. 创建

       create    结构标识(database,table,index)   name;

       drop      结构标识  name;

(2)DML   数据操作语言

             inster    delete   update     select

1.添加数据

                 insert  into table_name  values (xxx),(xxx);(values代表数据集合)

                 (*****)load   大批量插入

                 load  data  infile  “xxx/xxx/xxx(文件路径)”  into  table table_name;

2.删除数据

            delete from table_name [where];

            truncate(DDL语句)(无log,所以不能恢复)

            truncate table table_name ;

3.修改数据

update table_name set  field_name = new_val [where];

(field_name字段名称 ,new_val 新的数据)

4.查询数据

(1)普通查询

      Select * from table_name [where];

      Select field_1,field_2,field_3  from  table_name  [where];

(2)去重   distinct

     Distinct  field_1;

(3)排序   order by   desc(降序)  | asc(升序)

select  field  from  table_name [where]  order  by  sort_field [desc | asc];

5.分组   group  by

          Select  sum(xxx) from table_name

          Group  by  field;(filed比如按年龄来划分,就写age)

(1)多表查询

(1.1)等值查询

                        select  field_1,...,field_n

                        from table_name_1,...,table_name_n

                        [where ];

等值查询:次数m*n

(1.2)连接查询

缩小左右表的范围,缩小后的范围内进行匹配

m/x   n/y    mn/xy

      (1.2.1)外连接查询

       左外连接查询    范围缩小后  左表的数据全部存在

                     右表匹配成功   用右表的数据

                     右表匹配失败   右表补NULL

     右外连接查询    范围缩小后  右表的数据全部存在

                     左表匹配成功   用左表的数据

                     左表匹配失败   左表补NULL

 

      全外连接查询    范围缩小后  右表的数据全部存在

                    左右表匹配成功   用左表的数据

                   左右表匹配失败 对应一方补NULL

 

  (1.2.2)内连接查询

    内连接查询

   范围缩小后,匹配成功的项

6.联合查询  union (有去重)  |  union all

(3)DCL  数据控制语言

1.授予权限

     grant  privileges  on  DB_NAME.TABLE_NAME to user_name;

2.回收权限

      revoke  privileges on  DB_NAME.TABLE_NAME from user_name;

       

 

MySQL

2.存储引擎

数据的一种存储方式

 

MyISAM

       不支持外键,不支持事务,支持全文索引,B+树,表锁

InnoDB

       支持外键,支持事务,不支持全文索引,B+树,行锁

MEMORY

     内存中,临时表,varchar当成char     哈希索引

     不支持text和blob字段,如果存储该类型字段,交给MyISAM这个存储引擎,数据存放磁盘上

ARCHIVE

      数据1:10压缩存储,适用于日志数据

只支持  insert和select

 

MyISAM   B+树   非聚集索引

                索引和数据分离开来设计

                叶子结点  存储数据的地址

                关键字不重复Dev,可做主索引

.frm    创建表的基本信息

.myi    表对应的索引

.myd   存储数据的文件

InnoDB     聚集索引

               数据和索引结合

                把索引当成数据的一部分存储

                叶子结点   存放数据

1.创建一个InnoDB的表

       Insert 数据

     系统建立索引

  1. 主键   主键索引
  2. 唯一键  唯一索引
  3. 添加一个隐藏的字段,6个字节,行id,auto_increment(可自增长类型)

辅助索引

       允许关键字重复

      叶子结点:数据的地址

2.索引的优化

   1.哪种情况应该建立索引

   2.哪种情况不应该建立索引

3.索引的分类

   组合索引

     最左前缀原则

4.索引的注意事项

  (1)索引不会包含有NULL值的列

  (2)使用短索引

(3)索引列排序,如果where中用了索引,order by中列是不会使用索引的。

(4)like语句操作,like “%aaa%”不会使用索引,like “aaa%”可以使用索引

(5)不要在列上进行运算,where YEAR(adddate)<2007,不会用到索引,

where adddate<’2007-01-01’,会用到索引

 

3.事务

     一组SQL语言的集合

A   原子性   要么全部成功   要么全部失败

C   一制性   保证数据的完整性约束

I   隔离型    消除事务间的相互影响

D  持久性    保证事务执行的结果能在磁盘上永久的存储

 

1.隔离性

   (1)没有隔离性会发生什么情况

      脏读                            A事务读取了B事务执行过程中的结果   

      不可重复读  修改        A事务读取了B事务执行前和执行后两个不同阶段的结果   

      幻读  insert | delete     A事务读取了B事务执行前和执行后两个不同阶段的结果   

(2)四个隔离级别

     未提交读     脏读  不可重复读   幻读

     已提交读     不可重复读  幻读

     可重复读     幻读(是用间隙锁解决的)    MySQL

     可序列化

2.原子性

      日志

     redo    log    事务将要执行的每一步操作

     undo   log     事务执行过程中的每一个状态点

锁机制

  1. MyISAM    表锁 (非索引)
  1. read   读锁    共享读锁
  2. write   写锁   独占写锁

2.InnoDB   行锁(索引支持)   

       1.read  读锁  共享锁

       2.write  写锁  排它锁

乐观锁和悲观锁

间隙锁

 

触发器(2*3=6种)

time            before    after                

event          Insert     delete    update       

能触发触发器

insert:

                 insert  replace  load

delete:

                delete

update:

                  update

存储过程和存储函数

 

猜你喜欢

转载自blog.csdn.net/qq_41103495/article/details/107997954