一、基本概念

1、DB

  • database,数据库

2、DBMS

  • 数据库管理系统

二、数据库存储数据的特点

  • 列->表->库
  • 表名唯一

三、MySQL配置文件

  • my.ini:服务端配置(mysqld)
    • 端口
    • 路径
    • 引擎

四、常见命令

  • show databases;
  • use tablename;
  • show tables;
  • show tables from dbname;
  • desc table_name; 查看表结构
  • 查看数据库版本
    • select version();
    • mysql —version
    • mysql -V

五、语法规则

  • 不区分大小写,建议关键字大些,表名列名大写
  • 分号结尾
  • 注释:
    • 单行:# ,—(空格)
    • 多行:/**/

六、DQL语言

1、基础查询

  • 查询结果是一个虚表 ```python select 查询列表 from 表名;

查询列表:字段、常量、表达式、函数

  1. - 别名
  2. ```sql
  3. #方法1
  4. select xx as X from tablename;
  5. #方法2
  6. select xx X from tablename;
  7. #有特殊符号
  8. select xx as "X Y" from tablename;
  • 去重

    1. select distinct
  • +号

    • 数值型直接做加法
    • 如果一个加数为字符型,会强制转换成数字类型,如果转换失败,则转换成0
    • 如果一个为null,结果肯定为null
  • concat

    • 字符型连接
    • 有一个为null结果就为null
      1. select concat(last_name,first_name) as 姓名 from employees;

      2、条件查询

  • 条件运算符:> < = != <> >= <=
  • 逻辑运算符:&& || ! and or not
  • 模糊查询
    • like:一般和通配符搭配
      • %:任意多个字符
      • _:任意单个字符
      • 转译字符 ```sql lastname like ‘_%’;

任意转义字符(escape)

lastname like ‘$_%’ ESCAPE ‘$’;

  1. - between and
  2. - 左右闭区间
  3. ```sql
  4. id BETWEEN 100 AND 200;
  • in

    • 不支持通配符
      1. id IN(10,20,30);
  • is null

    • 错误写法:= NULL,!= NULL ```sql last_name IS NULL;

last_name IS NOT NULL;

  1. - **安全等于**
  2. - <=>
  3. ```sql
  4. last_name <=> NULL;
  5. last_name <=> "aaa";

3、排序查询

  • order by 排序列表 asc|desc,放在查询子句最后面 ```sql SELECT FROM employees ORDER BY salary DESC; SELECT FROM employees ORDER BY salary ASC;

按表达式排序

SELECT ,salary12*(1+IFNULL(commission_pct,0)) 年薪 FROM employees ORDER BY 年薪 DESC;

按函数排序

SELECT LENGTH(‘john’) FROM employees ORDER BY LENGTH(‘john’) DESC;

多重排序:第一个相同的所有再按第二个排序

SELECT * FROM employees ORDER BY salary ASC, employee_id DESC;

  1. <a name="v8V1c"></a>
  2. ## 七、常见函数
  3. - 单行函数
  4. - 分组函数(聚合函数、组函数)
  5. <a name="ASP1Z"></a>
  6. ### 1、字符函数
  7. - length:获取字节个数
  8. ```cpp
  9. select length('join'); //4
  10. select length('哈哈'); //2*3= 6个字节 ,utf-8编码
  11. select length('哈哈'); //2*2= 4个字节 ,GBK编码
  12. show variables like '%char%';
  • concat

    1. select concat(A,'_',B) name from employees; //name是别名
  • upper\lower:大小写

    1. select UPPER('aa'); //AA
  • substr\ substring

    • sql中索引从1开始 ```cpp select substr(‘aaaccc’,3); //accc ,截取从3处开始所有长度

select substr(‘aaaccc’,1,3); //aaa,截取从1处3个字符

//首字符大写 select concat(UPPER(substr(lastname,1,1)),’‘,UPPER(substr(first_name,1,1)));

  1. - instr
  2. - **返回子串的起始索引,没有找到返回0**
  3. ```cpp
  4. select instr('aaaccc','aaa') as out_put; //1
  • trim

    • 去前后空格或自定义字符
      1. select trim('a' from 'aaacccaaa'); //ccc
      2. select trim('aa' from 'aaacccaaa'); //accca
  • lpad、rpad

    • 用指定的字符实现左/右填充指定长度 ```cpp select LPAD(‘aaa’,10,’‘);//**aaa

select LPAD(‘aaa’,22,’*’);//aa,右截断

  1. - replace
  2. ```cpp
  3. select replace('aaaccc','aaa','bbb'); //bbbccc

2、数学函数

  • round()

    • 四舍五入(能保留指定位数)
      1. select round(-1.55); //-2
      2. select round(1.567,2); //1.57
  • ceil

    • 向上取整 (>=的最小整数)
      1. select ceil(1.52);//2
  • floor

    • 向下取整 (<=的最大整数)
  • truncate

    • 截断,小数点后保留位数
      1. select truncate(1.65,1); //1.6
  • mod

    • 取余
      • MOD(a,b) = a-a/b*b(a/b取整)
        1. select mod(-10,-3); //-1
        2. select mod(10,-3); //1

        3、日期函数

  • select now();

    • 当前日期+时间
  • curdate();
    • 当前日期
  • curtime();
    • 当前时间
  • year(NOW());

    • n年
      1. year('1998-1-1');
      2. select year(hiredate) from employees;
  • month()

    1. select month(now());
    2. select monthname(now()); //英文名称
  • str_to_date

    • 字符 to 日期
      1. str_to_date('9-13-1999','%m-%d-%Y');
      image.png
  • date_format

    • 日期 to 字符(按要求格式化输出)
      1. select date_format(NOW(),'%y年%m月%d日');
      2. select date_format(hiredate,'%m月/%d日 %y年') from employees;

      4、其他函数

  • select version()

  • select database(); //当前数据库
  • select user(); //当前用户

5、流程控制函数