MySql总结 (笔记)

1.sql 的分类,各个类的作用
    DDL 数据定义语言 - create ,drop ,alter ,truncate  不支持事务
    DML 数据操作语言 - insert,delete,update ,select   支持事务
    DQL 数据查询语言 - 只有 select ,属于 DML 支持事务
    TCL 数据控制语言 - rollback rollback to commit  savapoint
    DCL 数据控制语言 - 分配用户权限的相关 sql    
2.查询 数据 的一些关键字
    and (相当于 java &&),or ,in between x and y
    distinct,like _ %(_ 代表单个未知符,%代表多个未知符号),
    order by 字段名,limit
    ifnull(x,y) age = ifnull(x,y) 判断 x 是否 null,是的话返回 y,否则返回 x
3.聚合函数有哪些,怎么使用?
    avg,sum,max,min,count
    例: select avg(sal) from emp;    select count(*) from emp;
4.怎么分组查询
    select deptno,avg(sal) from emp group by deptno;
5.怎么有条件的分组查询,
    用 having 关键字,
    存在多个关键字时排序为: select . from 表名 
        where .group by..having....order by....limit. 
    一般having 后跟聚合函数的条件
     例:select deptno,avg(sal) a from emp 
        where ename like '%c%' 
        group by deptno     
        having a>2000;
6.什么是子查询,如何使用
    嵌套在sql语句里面的查询sql语句成为子查询,子查询可以多层嵌套
    用法,
    1).一般写在 where/having 后 当做查询条件
    2).可以 写在 from 后面 当做 一张新表,但是必须起别名
        例: select * from (select * from xxx) t1;
    3).创建表的时候 被当做新表 
        例: create table newemp as (select ename,sal from emp);
7.什么是关联查询
    关联查询就是同时查询多张表的数据
8.什么是等值连接和内连接,有什么作用,怎么使用内连接与等值连接?

    等值连接和内连接都是关联查询的查询方式,效果相同.
    作用都是把把表关联起来查询.    
    
    等值连接:
        select * from A,B where A.x=B.x and A.y=abc;
    隐式内连接:
    select A.id,b.name from A ,B where A.id = B.id;
    内连接: (inner 可以省略)
    select A.id,b.name from A inner join B on where A.id = B.id;

9.什么是外连接,外连接的作用,外连接有几种方式
    把一张表中的数据全部数据显示出来,另一张相关的表只显示相关的数据
        通过一定 相等 的条件.连接起来,叫做外连接.
    select tableA.id,tableB.num from tableA right/left outer join 
        tableB on tableA.id = tableB.id;(outer 可以省略)
    两种: 
    左连接的结果是除了匹配条件的数据还包含左边表中的所有数据

        右连接的结果是除了匹配条件的数据还包含右边表中的所有数据
10.视图是什么?有什么作用?有哪几种类型?怎么创建,修改,删除?
    视图就是数据库中的一种对象,代表一段sql语句.
    有 重用 sql ,隐藏 敏感信息的作用.
    创建语法:
        create view viewName as 子查询;
    例如:
        create view v_emp_1 as
            (select * from emp where deptno=10);
    分类:
        1.简单视图,创建视图中不包含,去重,函数,分组,关联查询.
                支持 增删改查操作.
        1.复杂视图,与简单视图相反,但同样支持增删改操作
    修改视图:
        create or replace view viewName as 子查询;
    删除视图:
        drop view viewName; /  drop view if exists viewName;
    别名: 视图(中的字段)有了别名,对视图操作只能用别名!
    例:(其中 ename 有别名)
     create view v_emp_name as (select ename name from emp);
     update v_emp_name set name='abc' where name='李四';

    数据污染: 往视图中插入一条视图中不显示,
        但是原表会显示的数据称为数据污染
     避免数据污染的出现,创建视图时需要使用 with check option的关键字 
    create view v_emp_20 as (select * from emp where deptno=20)
             with check option; 

    需要注意的是,原表数据改变,视图也会跟着改变.
    
11.索引的作用,与分类 怎么对索引进行操作?
    索引的作用是提高查询速度.
    所以分为聚集索引与非聚集索引.
    聚集索引 
    数据以树状结构保存
    有主键的表会自动 给主键创建一个聚集索引,
        每个表做多一个聚集索引.
    非聚集索引
    数据以树状结构保存,不同的是树状结构保存的是磁盘地址
    创建方式: create index index_name on tableName(columnName);
    删除方式: drop index index_name on tableName;

  什么时候使用:当频繁使用多个字段作为查询条件的时候使用复合索引
    复合索引: create index index_name ont tableName(columnName1,columnName2...);
    创建表指定索引: create table t_table(id int,age int ,index index_age(age));

12.什么是事务? 事务有什么特性? 怎样操作事务?
    事务是数据库执行sql 语句的最小工作单元,不可拆分,同时成功同时失败;
    事务具有 ACID 特性,即 原子性(最小,不可拆分),一致性(同时成功或失败)
            隔离性(事务之间互不影响),持久性(事务完成后保存到数据库中)
    可以先查看自动提交状态: show variables like "autocommit";
    通过关闭自动提交 开启事务. set autocommit=0;
    编写完 DML(数据操作语言) 语句 后 编写 commit; 提交 sql 语句 让数据控执行.
    可以使用 rollback 回滚到 某个执行点. 然后通过 savepoint s1; 来保存此次回滚点
    然后,发现错误 既可以比较方便地 去 rollback to s1;
    也就是上次 命名的 回滚点;
    
13.存储程序是什么?有什么作用?  怎么创建,调用,删除存储过程?
    存储程序是一段 预编译的sql 语句 集,
    市面上有比较多 的数据库支持存储过程 例如 Oracle MySQL Mariadb DB2;
    使 sql 语句能 被被重用,在程序中多次被调用 不必再写 sql语句,
      只需调用对应的 存储过程就可以.
    而且 由于预编译 所以 执行速度 相对较快.
    
    创建需要注意的是,在命令行中 需要 重新声明 分隔符 
    DELIMITER //
    然后 create procedure procedureName(in  aa int)
    begin
        sql 语句;
    end //
    形式创建,然后也要 吧分隔符 声明 回来  DELIMITER ;
    用 set @parameterName = "aaa";的形式可以 设置参数
    当然直接传参也可以;
    


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值