MySQL整理笔记


一、数据库的定义

        数据库(DataBase,DB),常见的数据库有:MySQL、Oracle、MS sqlServer。

        数据管理系统(DataBaeseManagement,DBMS):用于管理数据库中的数据,可以对数据库中的数据进行增删改查。

        SQL语言:结构化查询语言。

        执行步骤:DBMS -> 执行 -> SQL -> 操作 -> MySQL

二、MySQL的基础知识

①  注:端口号(port):是应用的唯一代表,通常和IP地址放在一起,IP定位计算机,端口定位应有,具有唯一性。MySQL的默认端口号为3306。

②启动、关闭mysql服务

net start mysql;   //打开mysql服务
net stop mysql;    //关闭mysql服务

  ③本地登录mysql

mysql -u*** -p***;  //-u后面为账号,-p后面为密码

mysql -uroot -p123;   //自己使用的账号为root,密码为123;

   ④mysql常用命令

exit                         //退出mysql
show databases              //查看mysql中有哪些数据库
use ***                    //使用***数据库
create database ***       //创建***数据库
show tables              //查看数据库中的表
select version()        //查看版本号
select database()      //查看当前使用的数据库

⑤导入".sql"文件

        source ...(把文件拉进命令行窗口)

 ⑥数据库中最基本的单元: 表 -- table

        任何一张表都有行和列:

                行(row):数据/记录

                列(column):字段

三、SQL语句的分类

DQL:查询语句(带有select关键字)

        select ...

DML:操作语句(对表中的数据进行增、删、改)   

        insert(增)、delete(删)、update(改)

 DDL:定义语句(操作表的结构,而非对表中的数据)

        create(新建)、drop(删除)、alter(修改)

 TCL:事务控制语句

        commit(提交)、rollback(回滚)

 DCL:数据控制语言

        grant(授权)、revoke(撤销)

 四、SQL语句的使用

        1.查询一个字段

select 字段名 from 表名;        //select和from是关键字,字段名和表名是标识符

        2.查询两个或者多个字段,用','隔开

select 字段名,字段名 from 表名;

        3.查询所有字段

select 字段名,...,字段名 form 表名;      //把所有字段名都写上
select * from 表名:             //使用*,表示所有。(但效率低,可读性差,开发不建议使用)

        4.给查询的列起别名(原表名不变,更改的只是展示出来的)

select 旧字段名 as 新字段名 from 表名;  //若新的字段名有空格,则用''标起
select 旧字段名 新字段名 from 表名:   //旧字段名后面空格然后再写新字段名也可以

         5.条件查询

select 字段名 from 表 where 条件;

                5.1条件表示

=           等于        between...and...    在..和..之间
<> or !=    不等于      is null             null
<           小于        and                 且
<=          小于等于     or                 或
>           大于         in                 包含
>=          大于等于     not                is not null 或  not in

                5.2模糊查询(like)

select xxx1 from xxx where xxx1 like '%A%';

'%A'   以A结尾    'A%'    以A开头
'%A%'  含有A      '_A%'   第二个为A(下划线_有n个就查第n+1个)

        6.排序(排序都在最后才执行)

①从低到高进行排序,升序(asc)
select xxx1 from XXX order by xxx1;
②从高到低进行排序,降序(desc)
select xxx1 from XXX order by xxx1 desc;
③多个排序
select xxx1,xxx2 from XXX order by xxx1 asc,xxx2 desc;
④根据字段位置进行排序
select xxx1,xxx2 from XXX order by 2;        //按照第2列开始排序,但是通常不用,不健壮

五、数据处理函数

  一、单行处理函数

        特点:一个输入对应一个输出

        1).常见的单行处理函数

  1. lower        转换小写
  2. upper        转换大写
  3. substr        取子串   (select substr(xx1,a,b) from XXX;)  //下标从1开始,不是从0
  4. concat        字符串拼接
  5. length         取长度  (length(xxx))
  6. trim             去空格
  7. str_to_date   将字符串转换为日期
  8. data_format  格式化日期
  9. format           设置千分位
  10. round            四舍五入
    1. select round(1234.567,0) from XXX;   1235
    2. select round(1234.567,1) from XXX;  1234.6
    3. select round(1234.567,-1) from XXX;  1230   //'-'则往左,保留十位
  11. rand()            生成随机数
  12. ifnull              将null转换成一个具体值
    1. ifnull(数据,当作哪个值)  

                如:A有null,则:

                select B,ifnull(A,0) *12 from XXX;

   13.  case ... when ... then .. when .. then .. else .. and

  二、分组函数(多行处理函数)  //自动忽略NULL

        特点:多个输入一个输出

  1. count        计数       count(*) :总行数
  2. sum          求和
  3. avg           平均值
  4. max           最大值
  5. min           最小值

  三、分组查询

select ... from ... group by ...;
关键字编写顺序:              执行顺序:
    select                        from
    from                          where
    where                         group by
    group by                      select
    order by                      order by

 having的使用:对已分完组的数据进一步过滤,与group by一起使用,不可单独使用。

        select

                xxx1,max(xx2)

        from

                XXX

         group by

                xxx1

          having

                max(xx2) > abc ;    (abc为新的条件)

条件where的优化策略:优先优化where,实在不行再使用having。 

查询语句的编写总结:

select .. from .. where .. group by .. having .. order by ..

(从左-右,顺序不可变,必须遵守)

上一篇:动手实现 LRU 算法,以及 Caffeine 和 Redis 中的缓存淘汰策略


下一篇:linux使用jstack来找出死循环的java代码