• Linux:Day39(上) mysql基础


    RDBMS:关系型数据库管理系统

      C/S:通过专有协议

      关系运算:选择、投影

      SQL语句常用有三种类型:DDL、DML、DCL

        为了提升SQL的功能,各个厂家还为SQL提供了编程接口:存储过程、存储函数、触发器、事件调度器、过程式编程(选择、循环)

      三层模型:物理层、逻辑层、视图层

      MariaDB

        插件式存储引擎

        单进程多线程;线程包括:连接线程和守护线程

      配置文件:集中式的配置,能够为Mysql的各应用程序提供配置信息。

        [mysqld]

        [mysqld_safe]

        [mysqld_multi]

        [server]

        [mysql]

        [mysqldump]

        [client]

          各个字段参数格式:parameter = value

        查找路由:/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> --default-extra-file=/path/to/somedir/my.cnf --> ~/.my.cnf

          注:每次都从头到尾都查一遍,并非查到前一个,后一个就不查找了。

      安装数据库后的设定:

        (1) 为root用户设定密码;

          方法一:mysql> SET PASSWORD

          方法二:mysql> update mysql.user SET passowrd=PASSWORD('your_pass') WHERE cluase;

          方法三:mysqladmin

        (2) 删除所有匿名用户

          mysql> DROP USER ''@'localhost';

          上述两步骤可运行命令:mysql_secure_installation来完成这些操作。

        (3) 建议关闭主机名反解功能;

      元数据数据库:mysql

      mysql --> mysqld

        客户端程序:

          mysql:交互式的CLI工具;

          mysqldump:备份工具,基于Mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存在文本文件中;

          mysqladmin:基于mysql协议管理mysqld; 

          mysqlimport:数据导入工具;

        非客户端类的管理工具:  # 不能通过远程管理,只能在server本地主机上运行

          myisamchk,myisampack

        

        如何获取程序默认使用配置:

          ~]# mysql --print-defaults

          ~]# mysqld --print-defaults

        客户端类应用程序的可用选项:

          -P,--port

          --protocol=

          -S,--socket=

          -D,--database=  # 进入后进接进入某数据库

          -C,--compress

          mysql -e "SQL"  # 不进入数据库,执行命令;

        mysql的使用模式:

          交互式模式

            可运行命令有两类:

              客户端命令:

                h,help

              服务器端命令:

                SQL,需要语句结束符;

          脚本模式:

            # mysql -uUSERNAME -hHOST -pPASSPWORD < /path/from/somefile.sql

            mysql> source /path/from/somefile.sql

        服务器端(mysqld):工作特性有多种定义方式

          命令行选项

          配置文件参数

            获取可用参数列表:

               ~]# mysqld --verbose --help

          获取运行中的mysql进程使用各服务器参数及其值:

            mysql> SHOW GLOBAL VARIABLES;

            mysql> SHOW [SESSION] VARIABLES;

            注意:其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效;

                有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独的设置;

          修改服务器变量的值:

            mysql> help SET

            全局:

              mysql> SET GLOBAL system_var_name=value;

              mysql> SET @@global.system_var_name=value;

            会话:

              mysql> SET [SESSION] system_var_name=value;

              mysql> SET @@[session.]system_var_name=value;

          状态变量:用于保存mysqld运行中的统计数据的变量;

            mysql> SHOW GLOBAL STATUS;

            mysql> SHOW [SESSION] STATUS;

    MySQL数据类型:字符型、数值型、日期时间型、内建类型

      字符型:    # ENUM,SET也是字符型

      

        

      

      

       数值型:

      

      

       日志时间型:

      

            

       

       字符类型的修饰符:

        NOT NULL:非空约束

        NULL:允许为空,默认为NULL

        DEFAULT 'STRING':指明默认值;

        CHARACTER SET ' ':指定字符集;  # 如果不指定会从全局继承

        COLLACTION:使用的排序规则;  # 如果不指定会从全局继承

      查看所有字符集和排序规则:

        mysql> SHOW CHARACTER SET;

        mysql> SHOW COLLATION;

      

      数值修饰符:

        NOT NULL

        NULL

        DEFAULT NUMBER

        AUTO_INCREAMENT:使用时要满足以下条件

          UNSIGNED:不符号

          PRIMARY KEY | UNIQIE KEY

          NOT NULL

          mysql> SELECT LAST_INSERT_ID()  # 用来查看已经自增至哪个数值了;

        

      日期时间型修饰符:

        NOT NULL

        NULL

        DEFAULT

      内建类型SET和ENUM的修饰符:

        NOT NULL

        NULL

        DEFAULT

    SQL MODE:定义mysqld对约束等的响应行为;

      修改方式:

        mysql> SET GLOBAL sql_mode='MODE';  # 修改全局模式,对新建立联接的会话生效(重新连接mysql即可)

        mysql> SET @@global.sql_mode='MODE'

        需要修改权限,仅对修改后新创建的会话有效,对已经建立的会话无效;

        mysql> SET SESSION sql_mode='MODE';  # 修改会话模式,只对当前会话有效。

        mysql> SET @@session.sql_mode='MODE';

      常用 MODE:TRANDITIONAL、STRICT_TRANS_TABLES(对所有支持事物的表做严格约束)、STRICT_ALL_TABLES

        SHOW GLOBAL VARIABLES LIKE 'sql_mode';

      注:所有命令修改的变量(无论全局还是会话)只是临时有效,要想永久有效,需要定义在配置文件中;

    SQL:DDL,DML

      DDL:数据定义语言;

        CREATE,ALTER,DROP

        可用上述命令的DB组件:数据库、表、索引、视图、用户、存储过程、存储函数、触发器、事件调试器等

      DML:数据操作语言;

        INSERT,DELETE,UPDATE,SELECT

      索引:实现级别在存储引擎上;

        分类:

          稠密索引、稀疏索引

          B+索引、hash索引、R树索引、FULLTEST索引

          聚集索引、非聚集索引

          简单索引、组合索引

    创建表:CREATE TABLE

      (1)直接创建;

      (2)通过查询现存的表创建:新表会被直接插入查询而来的数据;表结构没有关系。

      (3)通过复制现在的表的表结构创建:不复制数据;

      注意:Storage Engine是指表类型(说明即使是同一数据库,不同表也可以使用不同引擎),以及在表创建时指明其使用的存储引擎;

    查看表结构:

      DESC tb1_name

    查看表的状态:

    SHOW TABLE STATUS LIKE 't1' G

    SHOW命令可以使用LIKE和WHERE子句

  • 相关阅读:
    Unsupported major.minor version 51.0(JDK版本错误)
    String、StringBuilder和StringBuffer的区别
    循环依赖常问问题,spring三级缓存解决循环依赖解析图
    ens33网卡失效ipaddr查询不到ip: 出现:ens33: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:0c:29:2c:8d:e1 brd ff:ff:ff:ff:ff:ff
    redis被攻击,导致redis连接不上,RDB异常解决方案
    项目集成seata和mybatisplus冲突问题解决方案:(分页插件失效, 自动填充失效, 自己注入的id生成器失效 找不到mapper文件解决方案)
    seata服务端搭建和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案
    通过串口(蓝牙WiFi)与Arduino通信
    Python callable函数判断某个对象是否可调用
    Python 通过PyUserInput模拟键鼠操作
  • 原文地址:https://www.cnblogs.com/sq5288/p/11448564.html
Copyright © 2020-2023  润新知