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子句

原文地址:https://www.cnblogs.com/sq5288/p/11448564.html