zoukankan      html  css  js  c++  java
  • MySQL数据库简识

    MySQL:关系型数据库
         (由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品)
            开源 免费 不要钱 使用范围广,跨平台支持性好,提供了多种语言调用的 API
    关系型数据库RDBMS与数据库之间的关系:
        RDBMS这个是关系型数据库,mysql数据库存储数据的方式:一个数据仓库(叫数据库),一个数据库存了很多的数据(这些数据以数据表的形式存在)
     
    数据库
    • 当前主要使用两种类型的数据库:关系型数据库、非关系型数据库
    • 所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
    • 数据库里面的数据以表格的形式存在   
        对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
     
    SQL语言
    SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作
    • SQL语句主要分为:
      • DQL:数据查询语言,用于对数据进行查询,如select
      • DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
      • TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
      • DCL:数据控制语言,进行授权与权限回收,如grant、revoke
      • DDL:数据定义语言,进行数据库、表的管理等,如create、drop
      • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
    • 对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可
    • SQL 是一门特殊的语言,专门用来操作关系数据库
    • 不区分大小写
     
    视图
    定义通俗的讲,视图就是一条SELECT语句执行后返回的结果集。
    视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);
    作用:方便操作,特别是查询操作,把复杂的sql语句可以使用视图来代替,增强可读性;如果数据库的字段修改,不需要修改我们写的python代码
     
    定义视图:create view 视图名称 as select语句; (建议以V_开头)
    查看视图:show tables;
    使用视图:select * from 视图名称;
    删除视图:drop view 视图名称;
     
     
    事务
    定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

    事务四大特性(简称ACID)

    • 原子性(Atomicity)
    • 一致性(Consistency)
    • 隔离性(Isolation)
    • 持久性(Durability)
    开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中
    开启事务命令begin; 或者start transaction;
    回滚事务命令rollback;(放弃缓存中变更的数据)
    提交事务命令commit;(将缓存中的数据变更维护到物理表中)
     
     
    索引
    定义:索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
              更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
     
    查看索引:show index from 表名;
    创建索引:create index 索引名称 on 表名(字段名称(长度));
    删除索引:drop index 索引名称 on 表名;
     
    附:
    {开启运行时间监测:set profiling=1;}
    {查看执行的时间:show profiles;}
     
      
    权限管理对用户的管理
    -- 查看有哪些账户
            1 使用root账户登录
            2 使用mysql数据库
            3 用户的信息存放在 user 表中
                    Host表示允许访问的主机
                    User表示用户名
                    authentication_string表示密码,为加密后的值
              -- select host,user,authentication_string from user;(查询语句)
     
    -- 创建账户、授权
            创建账户并授予所有权限(部分权限)
            -- grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';(语法格式)
                -- 注意
                -- 1 访问主机通常使用 百分号% 表示此账户可以使用任何ip的主机登录访问此数据库
                -- 2 访问主机可以设置成 localhost 或具体的ip,表示只允许本机或特定主机访问
     
            创建账户并授予所有权限(所有权限) all privileges
            --grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';(语法格式)
            -- 注意 访问链接设置成 % 十分危险 不要使用
                grant all privileges on python10.* to "p10"@"%" identified by "123";
     
    注:如果远程依然连不上,可能原因:
    1) 网络不通
    通过 ping xxx.xxx.xx.xxx可以发现网络是否正常
    2)查看数据库是否配置了bind_address参数
    本地登录数据库查看my.cnf文件和数据库当前参数show variables like 'bind_address';
    如果设置了bind_address=127.0.0.1 那么只能本地登录
    3)查看数据库是否设置了skip_networking参数
    如果设置了该参数,那么只能本地登录mysql数据库
    4)端口指定是否正确
                
            -- 查看用户有哪些权限
            -- show grants for '用户'@'访问主机';
     
    -- 修改权限
            1 使用root账户登录
            2 修改用户权限
            -- grant 权限名称 on 数据库 to 账户@主机 with grant option;(语法格式)
                grant update on python10.* to "python10"@"localhost" with grant option;
            3 刷新权限
                flush privileges;
     
    -- 修改密码
            1 使用root账户登录
            2 选择mysql数据库
            3 使用password()函数进行密码加密 对user表进行修改
            -- update user set authentication_string=password('新密码') where user='用户名';(语法格式)
            例:update user set authentication_string=password('222') where user='用户名';
            4 刷新权限
                flush privileges;
     
    -- 删除用户
            1 使用root账户登录
            2 删除用户
                第一种方式  drop user '用户名'@'主机';(语法格式)  卸载
                            例:drop user 'oldyang'@'%';
                            drop user "python10"@"localhost";
                第二种方式    delete from user where user='用户名';(语法格式)  手动删除
                            例:delete from user where user='laowang';
                            -- 操作结束之后需要刷新权限
                            flush privileges
                            
            -- 推荐使用语法1删除用户, 如果使用语法1删除失败,采用语法2方式
        
    -- 远程登录(谨慎使用)
     
     
    MySQL主从
        从的数据库服务器会实时备份主的数据库服务器数据
  • 相关阅读:
    钢铁雄心4陆战攻略
    装甲军团1跳出问题
    Git:解决报错:fatal: The remote end hung up unexpectedly
    保存网页到zotero研究
    面向服务软件工程
    华为matebook x pro监听耳机电流声
    战争游戏红龙修改手册
    manjaro20安装teamviewer出现sudo teamviewer –daemon start无响应
    manjaro20WPS缺少字体
    manjora20不小心卸载,重新安装terminal,软件商店/软件中心linux类似
  • 原文地址:https://www.cnblogs.com/qingchang/p/9072655.html
Copyright © 2011-2022 走看看