一、数据库的创建
  create database database_name  DEFAULT CHARACTER SET utf8;  //创建一个数据库  
  drop database database_name;  //删除数据库
 1.1 DOS常用命令
    1.1.1 数据库命令
      mysqld install      // 安装MySQL数据库服务
                net start mysql 或 net stop mysql     // 启动或停止MySQL服务
      mysql -u username -p  // 登录MySQL管理系统  
      use database_name;  // 引用数据库
所有数据库
source path(.sql文件路径)  //导入数据库文件,生成数据库,即根据sql脚本生成数据库;例如:source F:\mysql.sql
    1.1.2 数据表操作命令
      show tables;         // 显示某数据库中所有表
      desc table _name;   //显示表的字段信息
      show create table table_name;  //显示表的创建信息
1.2 查询关系运算符
• =、 !=、 <>、<、<=、>、>=;
• between   ·····  and ········;
• in(set) ; //set是集合
• is null;is not null
• and ;
• or;
• not;
• like  '%三';          //%表示任意多个字符,_表示任意单个字符
1.3 内连接和外连接
    >内连接:
join table2_name t2 on
        或:
 , table2_name t2 where
    >外连接:
 left join table2_name t2 on
        或:
right join table2_name t2 on
full join table2_name t2 on t1.id=t2.id    //全连接,MySQL不支持!
 1.4 数据库备份和恢复
    a. 备份  
      mysqldump -u root -p123 database_name>d:\myDB\demo.sql 
    b. 恢复
       mysql -u root -p123 database_name<d:\myDB\demo.sql
      或:
      进入需要还原到的目的数据库;
      source d:\myDB\demo.sql
 
二、基本表的创建
2.1 创建表
   数据类型:int,char,varchar,text(字符串类型),blob(字节类型);double(5,2)表示最多5位,其中2位小数。
    create table 表名
    (
      字段名1 数据类型 [not null] [默认值],
      字段名2 数据类型,
      字段名3 数据类型
    );
  例如:
    create table student
    (
      stu_num int auto_increment,  //自增量
      stu_name char(10) not null,
      stu_gender char(2),
      stu_score int,
      primary key(stu_num),  //主键
      foreign key(stu_name) references anotherTable_name(stu_name)  //外键
    );
2.2 常用约束
      主键约束: primary key(字段名);  //或在定义字段时直接在后面追加 primary key
    外键约束: foreign key(字段名) references 表名(字段名);
    非空约束: 字段名 数据类型 not null
    唯一性约束: 字段名 数据类型 unique
    默认约束: 字段名 数据类型 default 默认值
    自增量: 字段名 数据类型 auto_increment  //默认初始值为1,增量为1;如需从100开始,可以设置为auto_increment=100
2.3 修改表
    alter table 旧表名 rename 新表名  //修改表名
    alter table 表名 modify 字段名 数据类型;  //修改字段数据类型
    alter table 表名 change 旧字段名 新字段名 新数据类型  //修改字段名
    alter table 表名 add 新字段名 数据类型  //添加字段
    alter table 表名 drop 字段名  //删除字段
    alter table 表名 AUTO_INCREMENT=100  //设置自增量初始值为100
2.4
    drop table [if exist] 表名;
三、CRUD增删改查操作
3.1 数据插入-Insert
1. 插入单条记录
    insert into 表名(字段名,字段名,字段名)  //当插入所有字段时,字段名可以省略
    values('值1','值2','值3');
2. 插入多条记录
    insert into 表名(字段名,字段名,字段名)
    values('值1','值2','值3'),
      ('值1','值2','值3'),
      ('值1','值2','值3');
3. 插入一个查询结果
    insert into 表名()
    select xxx  //返回值个数应和需插入字段个数相同
    from xxx
 
3.2 数据删除-Delete
  delete from student(表名)
  where name='zs'; 
3.3 数据修改-Update
  update student(表名) 
  set score=90
  where name='zs';
 
3.4 数据查询-select
 1. 模式
    select number,name,score
    from student
    where age>20
    group by 字段名[字段名,字段名,字段名]  //一个或多个字段名
      having <条件表达式>    //分组后的条件
    order by 字段名 [ASC|DESC],字段名[ASC|DESC];  //默认升序
 2. 常用聚合函数
    count(*)     //计算记录个数
    count(字段名)  //对一列中的值计算个数
    sum(字段名)   //求一列值得总和(数值型数)
    avg(字段名)    //求一列值得平均值(数值型数)
    max(字段名)    //求一列值得最大值
    min(字段名)    //求一列值得最小值
 
四、视图的创建
    create view view_name(字段名,字段名,字段名)
    as <select查询语句>
  例如:
    create view stu_sub(stu_num,stu_name)  //创建视图
    as select stu_num,stu_name
      from student;
    drop view stu_sub;  //删除视图
五、触发器
    create trigger trigger_name  //创建触发器
    on table(表名)
    for insert|delete|update
    as <sql_statement>(sql语句)
  例如:
    create trigger student_backup  //学生备份表随学生表的改变而改变
    on student        
    for insert,delete,update
    as
    begin
      if((select count(*) from deleted) > 0)
      begin
        delete from student_backup
        where stu_name in(select stu_name from deleted)
      end
      if((select count(*) from inserted) > 0)
      begin
        insert into student_backup
        select *
        from inserted
      end
    end
       
六、事务
 6.1 事务四大特性
 原子性;
    一致性;
    隔离性;
    持久性。
  6.2 事务隔离级别
赃读:一个事务A读取另一个事务B未提交的数据;
    不可重复读:一个事务A读取另一个事务B提交后的数据(update);
    虚读(幻读):一个事务A读取另一个事务B插入的数据(insert),前后不一致。
以上情况均为事务A已开启,但未提交时发生!
    四个级别:
read uncommitted :赃读,不可重复读,虚读都有可能发生;
    2* read commited :避免赃读。不可重复读,虚读都有可能发生;
    4* repeatable read :避免赃读,不可重复读。虚读有可能发生;
    8* serializable :避免赃读,不可重复读、虚读;
级别越高,安全性越高,性能越差!
6.3 查看和设置事务级别
查看当前事务隔离级别:select @@tx_isolation;  //dos命令
四个级别之一;  //dos命令
设置隔离级别,必须在开启事务之前!