Mysql数据库简单使用

1.数据库概念

  数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。用于存储和管理数据的仓库。

2.关系型数据库

  oracle、MySQL、sql-server,数据有关联,通常用表来存储

3.非关系数据库

  redis、MongoDB、Hbase,数据无关联,通常采用键值对key-value的方式来存储,效率高

4.MySQL

1)启动命令

  mysql -u 用户名 -p 密码

2)数据类型

  常用的数据类型:int整数类型 double(5,2)小数类型 varchar字符串 date日期,只包含年月日
datetime日期类型 包含年月日时分秒 timestamp:时间戳类型 包含年月日时分秒

3)DDL,操作数据库、表

4.3.1操作数据库:crud

   1.c(create):创建
    create database if not exists 数据库名;
    2.r(retrieve):查询
    show databases;查询数据库 //查询所有的数据库
    show create database 数据库名//查看数据库的编码
    3.u(update):修改
    alter database 数据库名称 character set 字符集名称;
    4.d(delete):删除
    drop database 数据库名称
    //判断数据库是否存在
    drop database if exists 数据库名称
    5.使用数据库
    select database(); //查询当前正在使用的数据库
    use 数据库  //使用数据库

4.3.2操作表:crud

    1.c(create):创建
    create table 表名(
        列名1 数据类型1,
        列名2 数据类型2,
        ...
        列名n 数据类型n
    );
    2.r(retrieve):查询 
    show tables;//查询所有的表
    desc 表名;//查询表结构
    3.u(update):修改
    alter table 表名 rename to 新的表名;//修改表名
    alter table 表名 character set utf8;//修改表的字符编码
    alter table 表名 add 列名 数据类型;//添加一列
    alter table 表名 change 列名 新列名 新数据类型;//修改列名称、类型
    alter table 表名 modify 列名 新数据类型;//修改类型
    alter table 表名 drop 列名;//删除列
    4.d(delete):删除
    drop table 表名;
    drop table if exists 表名;

4)DML:增删改表中的数据

   1.添加数据
    insert into 表名(列名1,列名2) values(值1,值2);
    //列名要和值一一对应
    //如果表名后面不写列名,默认给所有的列添加值
    2.删除数据
    delete from 表名 where 条件;
    //如果不加条件则删除表中的所有记录
    truncate table 表名;//先删除表,再创建一张一样的表
    3.修改数据
    update 表名 set 列名1=值1,列名2=值2...where 条件;
    //如果不加条件,则会修改表中的所有数据

5)DQL:查询表中的数据

   select * from 表名;//查询表中的所有数据
    1.语法
    select 字段列表 from 表明列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定
    2.基础查询
        1.多个字段的查询
        select 字段1,字段2 from 表名;
        distinct //去除重复的结果集
        计算列:
        一般可以使用四则运算计算一些列的值。
        ifnull(表达式1,表达式2)//表达式1:哪个字段需要判断是否为null,表达式2:如果该字段为null后的替换值
        as //起别名 as也可以省略
    3.条件查询 
        1.where子句后跟条件
        2.运算符
        <,>,>=,<=,=,!=,<>
        between...and  //在什么范围内
        in(a,b,c)
        null不能使用=来判断,要用is来判断
        like:模糊查询
        占位符:_:单个任意字符 %:任意多个字符
        3.排序查询
        order by 子句
        升序:asc
        降序:desc
        如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件
        4.聚合函数
        将一列数据作为一个整体,进行纵向计算。
            1.count:计算个数
            2.max:计算最大值
            3.min:计算最小值
            4.sum:计算和
            5.avg:计算平均值
        5.分组查询
            1.语法:group by 分组字段;
            2.注意:
                1.分组之后查询的字段:分组字段、聚合函数
                2.where和having的区别?
                where在分组之前进行限定,如果不满足条件,则不参与分组,having在分组之后进行限定,如果不满足结果,则不会被查询出来
                having后面可以使用聚合函数where不行
        6.分页查询
        limit 开始的索引,要显示的数目
        公式:开始的索引=(当前的页码-1)*每页显示的条数
        limit 是一个mysql“方言”

6)约束

4.6.1概念:对表中的数据进行限定,保证数据的正确性,有效性,完整性

1.主键约束
        primary key
        alter table 表名 drop primary key;
        自动增长:
        auto_increment
        alter table 表名 modify 列名 数据类型 auto_increment; 
2.非空约束
        创建表时添加not null
        创建表完后添加非空约束
        alter table 表名 modify 列名 数据类型 not null; 
3.唯一约束
        unique值不能重复
        删除唯一约束
        alter table 表名 drop index 列名;
4.外键约束
        让表与表产生关系,从而保证数据的正确性
        constraint外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
        删除外键:
        alter table 表名 drop foreign key 外键名;
        添加外键:
        alter table 表名 add constraint外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
        级联更新:on update cascade
        级联删除:on delete cascade

5.数据库范式

1.第一范式(1NF):每一列都是不可分割的原子数据项
2.第二范式(2NF):在1NF基础上,消除对非主属性对主码的部分函数依赖
函数依赖:A-->B,如果通过A的属性(属性组)的值,可以确定唯一B属性的值,则称B依赖于A
完全函数依赖:A-->B,如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值
部分函数依赖:A-->B,如果A是一个属性组,则B属性值的确定只需要依赖于A属性组中的某一些值即可
传递函数依赖:A-->B,B-->C,如果通过A的属性(属性组)的值,可以确定唯一B属性的值,如果通过B的属性(属性组)的值,可以确定唯一C属性的值,则称C传递函数依赖于A
码:如果在一张表中,一个属性或属性组,被其他属性所完全依赖,则称这个属性(属性组)为该码的表
3.第三范式(3NF):在2NF基础上,消除传递函数依赖

6.数据库的备份和还原

备份:mysqldump -u root -proot 数据库名称 > 保存的路径
还原:登录数据库->创建数据库->使用数据库->执行文件 source 文件路径

7.多表查询

   1.内连接查询
        1.隐式内连接:使用where条件消除无用数据
        2.显式内连接
        语法:select 字段列表 from 表名1 [inner] join 表名2 on 条件
    2.外连接查询
        1.左外连接:
        语法:select 字段列表 from 表1 left [outer] join 表2 on 条件
        查询的是左表所有数据以及其交集部分
        2.右外连接:
        语法:select 字段列表 from 表1 right [outer] join 表2 on 条件
        查询的是右表所有数据以及其交集部分
    3.子查询
        查询中嵌套查询
        1.子查询结果是单行单列的
        子查询可以作为条件,使用运算符去判断,运算符:> >= < <= =
        2.子查询结果是多行单列的
        子查询可以作为条件,使用运算符in去判断
        3.子查询结果是多行多列的
        子查询可以作为一张虚拟表

8.数据库事务

1)事务的基本介绍

1.概念
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
2.操作
1.开启事务:start transaction
2.回滚:rollback
3.提交:commit
3.MySQL数据库事务默认自动提交
select @@autocommit;//1代表自动提交0代表手动提交
修改默认的提交方式:set @@autocommit=0;

2)事务的四大特征

1.原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
2.持久性:当事务提交或回滚后,数据库会持久化的保存数据
3.隔离性:多个事务之间,相互独立。
4.一致性:事务操作前后,数据总量不变

3)事务的隔离级别

多个事务之间隔离,相互独立的。

9.DCL管理用户

1)管理用户

      1.添加用户
        create user '用户名'@'主机名' identified by '密码';
        2.修改用户密码
        update user set password = password('新密码') where user='用户名';
        set password for '用户名'@'主机名'=password('新密码');
        3.查询用户
        user mysql;
        select * from user;
        4.删除用户
        drop user '用户名'@'主机名';

2)授权

     1.查询权限
        show grants for '用户名'@'主机名';
        2.授予权限
        grant 权限列表 on 数据库.表名 to '用户名'@'主机名';
                 all        *.*
        3.撤销权限
        revoke 权限列表 on 数据库.表名 from '用户名'@'主机名';
posted @ 2019-09-23 15:43  本兮嘻嘻  阅读(185)  评论(0编辑  收藏  举报