MySQL

1.mysql

  • 关系型数据库:就是由多张能互相连接的二维表组成的数据库。

    优点:

    1. 都是使用表结构,格式一致,易于维护。

    2. 使用通用的SQL语言操作,使用方便,可用于复杂查询。

    3. 数据存储在磁盘中,安全。

DDL--- 操作数据库

查询

show databases;

创建

  • 创建数据库

    CREATE DATABASE 数据库名称;
  • 创建数据库(判断,如果不存在则创建)

     CREATE DATABASE IF NOT EXISTS 数据库名;

    删除

  • 删除数据库

     DROP DATABASE 数据库名称;
  • 删除数据库(判断是否存在)

      DROP DATABASE IF EXISTS 数据库名称;

    使用数据库

  • 查看当前使用的数据库

    SELECT DATABASE();

    USE 数据库名称;

 

DDL---操作表

查询表

  • 查询当前数据库下所有表名称

    SHOW TABLES;

     

  • 查询表结构

    DESC 表名称;

     

创建表

CREATE TABLE 表名(
                  字段名1 数据类型,
                  字段名2 数据类型,
                  字段名3 数据类型
                  );

注意

MySQL 支持多种类型,可分为三类
- 数值
- 日期
- 字符串

char(10)   10个字符空间 存储的性能高,浪费空间
varchar(10) 2个字符空间 存储的性能低,节约空间
sore double(总长度,小数点保留几位)0~100,2
sore double(5,2)

 

删除

  • 删除表

    DROP TABLE 表名;

     

  • 删除表判断表是否存在

    DROP TABLE IF EXISTS 表名;

     

修改表

  • 修改表

    ALTER  TABLE 表名  RENAME TO 新表名;

     

  • 添加一列

    ALTER TABLE 表名 ADD 列名 数据类型

     

  • 修改数据类型

    ALTER TABLE 表名 MODIFY 列名  新数据类型

     

  • 修改列名和数据类型

    ALTER TABLE 表名 CHANGE 列名 新列名  新数据类型;

     

  • 删除列

    ALTER TABLE 表名 DROP 列名;

     

DML

  • 给指定列添加数据

    INSERT INTO 表名(列名1,列名2,...)VALUES(值1,值2,...);
  • 设置默认值

    ALTER TABLE td_user ALTER COLUMN deleted SET DEFAULT "0";

     

  • 给全部列表添加数据

    INSERT INTO 表名 VALUES(值1,值2,...);

     

  • 批量添加数据

    INSERT INTO 表名(列名1,列名2,...)VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
    INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;

     

修改数据

  • 修改数据

    UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];
    注意:修改语句中如果不加条件,则会将所有的数据修改。

     

  • 删除数据

    DELETE FROM 表名 [WHERE 条件];
    注意:修改语句中如果不加条件,则会将所有的数据删除。

     

DQL

  • 查询语法

    SELECT
    字段列表
    FROM
    表名列表
    WHERE
    条件列表
    CROUP BY
    分组字段
    HAVING
    分组后条件
    ORDER BY
    排序字段
    LIMIT
    分页限定

     

  • 基础查询

    • 查询多个字段

    SELECT 字段列表 FROM 表名;
    SELECT * FROM 表名;-- 查询所有数据
    • 去除重复记录

    SELECT DISTINCT 字段列表 FROM 表名;
    • 起别名

    AS: 也可以省略

     

  • 条件查询

    符号功能
    >  
    <  
    >=  
    <=  
    =  
    <>/!= 不等于
    between...and... 在某个范围之内
    in(....) 多选一
    is null  
    is not null 不是null
    or  
    not /!
    like 模糊查询 : _单个任意字符,%多个任意字符

     

     

     

  • 排序查询

    SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2],...;

    排序方式

    • ASC:升序(默认)

    • DESC:降序排列

      注意:如果有多个排序条件,当前边条件值一样时,才会根据第二条件进行排序。

  • 聚合函数

    函数名功能
    count(列名) 统计数量(一般选用为null的列)
    min 最小值
    max 最大值
    sum 求和
    avg 平均值

    语法:

    SELECT 聚合函数(列名)FROM 表;
    注意:null 值不参与所有聚合函数运算

     

  • 分组查询语法

    SELECT 字段名 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

     

注意: 分组之后,查询的字段为聚合函数和分组字段,查询其它字段无任何意义。

where和having区别

执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。

可判断的条件不一样:where不能对聚合函数进行判断,having可以。

执行顺序: where > 聚合函数>having

  • 分页查询

    SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;

    起始索引:从0开始

    计算公式: 起始索引=(当前页码-1)*每页显示的条数

     

约束

约束名称描述关键字
非空约束 保证列表中所有数据不能有null NOT NULL
唯一约束 保证列中所有数据各不相同 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一,自增长 auto_increment. PRIMARY KEY
检查约束 保证列中的值满足某一条件  
默认约束 保存数据时,未指定值则采用默认值 DEFAULT
外键约束 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性。  

 

  • 外键约束

    让两个表的数据之间建立链接,保证数据的一致性和完整性。

 

  1. 添加约束

    -- 创建表时添加外键约束
    CREAT TABLE 表名 (
    列名 数据类型,
    ...
    [constraint] [外键名称] foreign key(外键列名)
    references 主表(主表列名)

    );
    -- 建完表后添加外键约束
    ALTER TABLE 表名 add constraint 外键名称 foreign key(外键字段名称) references 主表名称(主表列名称);
    -- 删除外键约束
    alter tabke 表名 drop foreign key 外键名称

     

数据库设计

  • 数据库设计设计什么?

    1. 有哪些表

    2. 表里有那些字段

    3. 表和表之间是什么关系

  • 表关系有哪几种?

    1. 一对一

      实现方式:在任意一方建立外键,关联对方主键,并设置外键唯一。

    2. 一对多(多对一)

      实现方式:在多的一方建立外键,指向一的一方的主键

    3. 多对多

      实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方的主键。

     

多表查询

  • 内链接

    相当于查询的是两个表的交集数据。

-- 隐式内连接 SELECT 字段列表 FROM 表1,表2...WHERE 条件;

-- 显示内连接 SELECT 字段列表 FROM 表1 JOIN 表2 ON 条件;


- 外连接
-- 左连接 查询的是左表和交集的数据
select 字段列表 from 表1 LEFT JOIN 表2 on 条件
-- 右链接 查询的是右表和交集的数据
select 字段列表 from 表1 right JOIN 表2 on 条件
  • 子查询

- 单行单列: 作为查询条件,使用= != < > 等进行条件判断
select 字段列表 from 表 where 字段名 = (子查询);

-多行单列 : 作为条件值,使用in 等关键字进行条件判断
select 字段列表 from 表 where 字段名 in(子查询);

- 多行多列:作为虚拟表
select 字段列表 from(子查询) where 条件;

事务

  • 数据库的事务,一种机制,一个操作序列,包含了一组数据库操作命令,要么同时成功,要么同时失败。

-- 开启事物
START transaction;
或者 BEGIN;

-- 提交事务
commit;

-- 回滚事务
rollback;

事务四大特征

  • 原子性 A :最小操作单位,要么同时成功,要么同时失败

  • 一致性 C :事务完成时,必须使所有的数据保持一致

  • 隔离性 I :多个事务操作之间,操作的可见性

  • 持久性 D :事务一旦提交或者回滚,它对数据库中的数据就是永久的。

     

-- MySQL事务默认自动提交

-- 查看事务的默认提交方式
select @@autocommit;
-- 1 自动提交 0,手动提交
-- 修改事务自动提交
set @@autocommit = 0;