MYSQL笔记

MySQL

1.SQL,DB,DBMS分别是什么,他们之间的关系?
    DB:
      DataBase(数据库,数据库实际上在硬盘以文件的形式存在)
    DBMS:
      DataBase Management System(数据库管理系统,常见的有MYSQL Oracle DB2 Sybase sqlsever)
    SQL:
      结构化查询语言,是一门标准通用的语言
      属于高级语言
      在执行时先编译再执行sql(sql语句的编译由DBMS完成)

    DBMS负责执行sql语句,通过执行sql语句来操作DB当中的数据。
    DBMS--(执行)-->sql--(操作)-->DB
2.什么是表(table)
    是数据库的基本组成单元,所有的数据都以表的形式组织,目的是可读性强

    一个表包括行和列
        行:被称为数据/记录(data)
        列:被称为字段(column)

    每个字段应该包括哪些属性?
        字段名,数据类型,相关的约束

3.学习MYSQL主要还是学习通用的SQL语句,SQL语句的分类
    DQL(数据查询语言):查询语句,凡是select语句都是DQL
    DML(数据操作语言):insert delete update对表中的数据增删改
    DDL(数据定义语言):create dorp alter,对表结构的增删改
    TCL(事务控制语言):commit事务,rollbake回滚事务。
    DCL(数据控制语言):grant授权,revoke撤销权限。

4.导入数据
    1.登录MySQL数据管理系统
      MySQL -uroot  -proot
    2.查看有哪些数据库(这句不是sql语句,属于MySQL的命令。)
      show databases;
    3.创建属于我们自己的数据库(use这句不是sql语句,属于MySQL的命令。)
      create database <数据库名称> ;
    4.使用数据库
      use <数据库名称>;(这句不是sql语句,属于MySQL的命令。)
    5.查看当前使用的数据库有哪些表?
      show tables; (这句不是sql语句,属于MySQL的命令。)
    6.初始化数据
      mysql>source(加上文件地址)

5.以sql结尾,这样的文件被称为“sql脚本”。什么是sql脚本呢?
    当一个文件的扩展名是.sql,并且该文件中编写了大量的sql文件,我们成为这样的文件为sql脚本。
    注意:直接使用sourec命令可以执行sql脚本。
    sql脚本中的数据量太大的时候,无法打开,请使用source命令完成初始化。

6.删除数据库:dorp database <库名>;

7.查看表的结构:
    desc <表名>;

8.表中的数据:
    查询表中的全部数据
    select * from <表名>;

9.常用命令
    select database();  查看当前使用的是那个数据库。
    select version();  查看MySQL的版本号。
    \c    结束一条语句
    exit  退出MySQL

10.查看创建表的语句
    show create table emp;

11.简单的查询语句

    语法格式
     select <字段名1,字段名2.....> from <表名>;

    提示
      1.任何一条sql语句以“;”结尾
      2.sql语句不区分大小写。
      3.字段可以参与数学运算。
     
    给查询结果的列重命名?
     select ename,<原来的列名> as <新的列名> from <表>;

    别名中有中文?(字符串使用单引号括起来,双引号不通用)
       select ename,<原来的列名> as <'中文'> from <表>;

      as 关键字可以省略,但是最好写出来

    查询所有字段?
      select *from <表名>;(Java程序中不建议)

12.条件查询。
    语法格式;
      select
        字段,字段.....
      from
        表名
      where
        条件;
      
    1.between and(1.这个是闭区间
            2.必须是左小右大
            3.可以运用到字符串<左闭右开>)

    2.在数据库当中NULL不是一个值,代表什么也没有,为空。
    空不是一个值,不能用等号衡量。
    必须使用 is NULL或者 is not NULL 
 
    3.and和or联合起来用:
      优先于and
    
    注意!!当优先级不确定的时候现加小括号。

    4.in等同于or
      in后面的值不是区间,是特定的值
      in(1000,5000) <表示1000和5000>
      where sal in(1000,5000);

    5.not in:不在这几个值
    
    6.模糊查询 like?
      %代表任意多个字符    
      _代表任意一个字符

    找出名字中含有o的?
      select ename from emp where ename like '%o%';
    找出名字中第二个字母是A的?
       select ename from emp where ename like '_o%';
    找出名字中下划线的?(用转义)
      select ename from emp where ename like '%\_%';
    找出名字中最后一个字母是T的
      select ename from emp where ename like '%T';

13.排序(升序,降序)
    order by <> asc/desc(默认升序)
    asc表示升序
    desc表示降序
     
    按照工资的降序排,当工资一样的时候,按照名字的升序排列。
      select ename,sal from emp order by sal desc,ename asc;
      注意:越靠前的字段越能起到主导作用。只有当前边的无法排序了,
                才会启用后边得到字段。

    找出工作岗位是SALESMAN的员工,并且要求按照薪资的降序排列。
      select
               ename,job,sal----3
      from
        emp ----------------1
      where
        job='SALESMAN'------2
      order by
        sal desc; ----------4

14.分组函数?
    count 计数
    sum 求和
    avg 平均值
    max 最大值
    min 最小值

    记住:所有的分组函数都是对“某一组”数据进行操作的
     分组函数还有一个名字:多行处理函数。
    多行处理函数的特点:输入多行,输出单行。

    1.注意!!!!!!!分组函数自动忽略NULL。!!!

    select sum(comm) from emp;

    2.找出工资高于平均工资的员工
      select avg(sal) from emp;
      select ename,sal from emp where sal>avg(sal);
      错误的无效的使用了分组函数

    原因:SQL语句中有一个语法规则
          分组函数不能直接用于在where语句之中。

    3.count(*)和count(具体的某个字段),他们之间有什么区别。
      select count(*) from emp;
        统计总记录条数
      select count(comm) from emp;
          表示统计字段中不为null的数据总数量。
    4.分组函数也能组合起来用。
      select avg(sal),max(sal),min(sal) from emp;

      

          
15.单行处理函数?
    什么是单行处理函数?
      输入一行,输出一行。

    计算每个员工的年薪?
      select ename,(sal*12+comm*12) from emp;
      重点:所有数据库都是这样规定的,只要有NULL参与运算,结果为NULL

    ifnull()空处理函数
      ifnull(可能为null的函数,被当作什么处理):属于单行处理函数
      select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;

16.group by 和 having

    group by:按照某个字段或者某些字段进行分组。
    having:对分组之后的数据再次进行过滤。

    格式
      select 分组函数<字段名> from <表名> group by <分组>;
    找出每个工作岗位的最高薪资。
      select max(sal) from emp group by job;

    注意:1.分组函数一般都会和group by同时使用,
           这也就是他被称为分组函数的原因。
          2.每一个分组函数都是在group by语句执行结束后才开始执行的。
          3.当一条SQL语句没有group by 的话,这个表自成一组。

上一篇:Oracle学习——第一讲 (常规查询)


下一篇:Git使用:Linux(Ubuntu 14.04 x64)下安装Git并配置连接GitHub