zoukankan      html  css  js  c++  java
  • 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 '用户名'@'主机名';

    一点点学习,一丝丝进步。不懈怠,才不会被时代所淘汰!

  • 相关阅读:
    9.5 dubbo事件通知机制
    9.4 dubbo异步调用原理
    13.1 dubbo服务降级源码解析
    第十八章 dubbo-monitor计数监控
    12.4 客户端响应解码
    12.3 服务端响应编码
    12.2 服务端请求解码
    12.1 客户端请求编码
    git生成并添加SSH key
    Java并发之原子操作类汇总
  • 原文地址:https://www.cnblogs.com/fqh2020/p/11572700.html
Copyright © 2011-2022 走看看