mysql基础

 

mysql基础

数据模型:

数据模型:层次模型、网状模型、关系模型、……

关系模型:

二维关系:表
    行:row, entity
    列:colume, attribution

索引:数据结构,辅助完成数据查找;
    较少的代价,完成数据查找
    但是带来的副作用时,导致数据修改速度变慢。
    原始数据发送改变,索引也要改变。

数据库管理系统

DMBS:DataBase Management System RDBMS:Relational DBMS

关系型数据库:

    SQL引擎:向用户提供逻辑视图

    存储引擎:Storage Engine
        将数据以块级别存储在磁盘设备上。一定程度上有类似文件系统的功能。

注:关系型数据提供两种视图,向用户提供逻辑布局,存储上提供物理布局。并能够将物理布局完美的映射到逻辑布局
    逻辑布局:逻辑上是表结构
    物理布局:物理上存储上的数据流

SQL接口(SQL引擎):

客户端要与SQL交互,就能够与SQL的API交互。交互的方式使用SQL协议进行交互。 SQL解释用户的SQL语句,交给存储引擎处理。

SQL:Structure Query Language
    结构化查询语言

    ANSI:SQL-标准,SQL-86, SQL-89, SQL-92, SQL-99, SQL-03, ...

SQL代码:支持脚本

    存储例程:storage routing
        存储过程:storage procedure 过程没有返回值
            过程调用使用call
        存储函数:storage function  函数有返回值
            函数调用使用select

    触发器:trigger
        有一个监视器,监视对象一旦满足某个条件或动作就执行某个行为。
    事件调度器:event scheduler
        类似系统计划任务,定期或周期性的执行某个代码

SQL引擎和存储引擎的关系像shell和内核之间的关系。

事务:一个由单个或多个SQL语句组成的不可分割原子操作(一般为写入语句),Transaction;

        A:20000
        B: 3000
        A给B转账5000,A要减去5000,B要加上5000

关系型数据库是否满足事物,要通过ACID测试      
ACID:
    A: 原子性;不可分割,要么都执行,要么都不执行。
    C:一致性;从一个一致状态转到另一个一致状态。
    I:隔离性;只有一个事物结束,才能执行另一个事物
        比如一个人用A的账户给B转账10000,另一个人在异地取款1500.两个事物不能交叉进行。
    D:持久性;存储到设备中,不能事物结束后,还没写入设备。否则断电数据丢失。

满足事物性的数据库,并发性较低。隔离是有级别的,隔离级别低并发较高,隔离级别高并发则较低。

博客作业:amp的各种部署方式;

回顾: fpm、amp编译安装、MariaDB fpm: pm=static|dynamic /pm-status ?json, ?xml, ?html, ?full

    amp编译安装:
        考虑:如何做到服务开机自启?

        Unit File, Init Script?

    MariaDB:
        事务:ACID


基础概念:

数据类型: 作用:存储格式、数据范围、所能参与的运算、排序方式

字符型:
    定长字符型:CHAR(#),BIARNY(#)
    变长字符型:VARCHAR(#),VARBINARY(#)
    对象存储:
        TEXT
        BLOB
    建类型:ENUM,SET

数值型:

    精确数值型:
        INT:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT

    近似数值型:
        FLOAT
        DOUBLE

    日期时间型:
        DATE
        TIME
        DATETIME
        TIMESTAMP
        YEAR

修饰符:NOT NULL, DEFAULT,
类型符:UNSIGNED

数据库的设计范式:

第一范式:字段是原子性的;
第二范式:存在可用的主键;
第三范式:任何字段都不应该依赖于其它表的非主键字段;

数据约束:向数据表中插入数据时要遵守的限制规则
    主键:primary key,表上一个或多个字段的组合,填入主键字段中的数据,必须不同于已经存在的其它行的相同字段上的数据,而且也不能为空;一个表只能存一个主键;

    惟一键:unique key,表上一个或多个字段的组合,填入其中字段中的数据,必须不同于已经存在的其它行的相同字段上的数据,但可以为空;一个表可以有多个惟键;

    外键:foreign key,一个表中的外键字段中所能够插入的数据取值范围,取决于引用的另一个表上主键字段上的已经存在数据集合;
        检查条件约束:check,自定义的逻辑表达式;

MariaDB的基础应用:

MariaDB程序组成:

        C:Client
            mysql
            mysqladmin
            mysqldump
            mysqlbinlog
            ...
        S:Server
            mysqld
            mysqld_safe
            mysqld_multi

管理工具程序:

            myisampack
            myisamchk
            ...

基于套接字通信

IPv4:PORT
IPv6:PORT
Unix_Sock:/var/lib/mysql/mysql.sock, /tmp/mysql.sock

命令行客户端程序mysql

mysql [OPTIONS] [database]

    常用选项:
    -uUSERNAME
    -hHOST
    -pPASSWORD          
    -Ddb_name           
    -S sock_file_path
    -P port         
    -e 'STATEMENT'

命令:

客户端命令:在客户端执行;
mysql> help 
    \?:获取可用的命令帮助;
    \q:退出客户端程序;
    \d CHAR:自定义语句结束符;
    \g:语句结束标记;
    \G:语句结束标记,竖排显示结果;
    \! SHELL_CMD:运行shell命令;
    \s:当前连接及服务器相关的状态信息;
    \. 

服务端命令:SQL语句,发往服务端运行,并取回结果;需要显式的语句结束符;

    DDL:数据定义语言,主要用于数据库组件,例如数据库、表、索引、视图、触发器、事件调度器、存储过程、存储函数;
            CREATE, ALTER, DROP

    DML:数据操纵语言,CRUD操作,主要用于操作表中的数据;
            INSERT,DELETE,UPDATE,SELECT

    DCL:数据控制语言
            GRANT, REVOKE

SQL语句:

    获取帮助:
        mysql> help KEYWORD
        mysql> help contents

数据库管理:

        CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name  [DEFAULT] CHARACTER SET [=] charset_name 

        ALTER {DATABASE | SCHEMA} [db_name] CHARACTER SET [=] charset_name

        DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

        相关命令:
            SHOW CHARACTER SET 
            SHOW COLLATION
            SHOW CREATE DATABASE db_name

表管理:

        表创建:
            CREATE  TABLE [IF NOT EXISTS] tbl_name  (create_definition,...)  [table_options]

                create_definition:由逗号分隔的列表
                    字段定义:
                        column_name column_defination
                    约束定义:
                        PRIMARY KEY(col1[,col2, ....])
                        UNIQUE KEY 
                        FOREIGN KEY 
                        CHECK(expr)
                    索引定义:
                        {INDEX|KEY} 
                        {FULLTEXT|SPATIAL}

                column_definition:      
                    data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']

                table_option:
                    ENGINE [=] engine_name

                查看数据库支持的存储引擎种类:
                    SHOW ENGINES;

                查看表状态信息:
                    SHOW TABLE STATUS [WHERE CLAUSE] [LIKE CLAUSE]
        表修改:            
                ALTER  TABLE tbl_name [alter_specification [, alter_specification] ...]

                    alter_specification:
                        (1) 表选项 
                            ENGINE=engine_name
                            ...
                        (2) 表定义 
                            (a) 字段
                                ADD 
                                DROP
                                CHANGE
                                MODIFY 
                            (b) 键和索引
                                ADD {PRIMARY|UNIQUE|FOREIGN} key (col1, col2, ...)
                                ADD INDEX(col1, col2, ...)

                                DROP {PRIMARY|UNIQUE|FOREIGN} KEY key_name;
                                DROP INDEX index_name;

                    查看表上的索引信息:
                        SHOW INDEXES FROM tbl_name;
            表删除:            
                DROP  TABLE [IF EXISTS] tbl_name [, tbl_name] ...

            查看表创建语句:
                SHOW CREATE TABLE tbl_name

索引管理:

            创建:
                CREATE  [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON tbl_name (index_col_name,...)

                    index_col_name: 
                        col_name [(length)] [ASC | DESC]

            删除:
                DROP  INDEX index_name ON tbl_name

            查看:
                SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name  [{FROM | IN} db_name]  [WHERE expr]

DML语句:

            INSERT,SELECT,DELETE,UPDATE

            INSERT:
                INSERT  [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...

            SELECT:
                (1) SELECT * FROM tbl_name;
                (2) SELECT col1, col2, ... FROM tbl_name;
                    字段别名:col1 AS ALIAS
                (3) ELECT col1, col2, ... FROM tbl_name WHERE CLUASE;
                    WHERE expr:布尔表达式;
                        col_name OPERATOR value|col_name;

                            操作符:
                                >, <, <=, >=, =, !=
                                BETWEEN ... AND ...
                                LIKE 'PATTERN':
                                    通配符:
                                        _:匹配任意单个字符;
                                        %:任意长度的任意字符;
                                RLIKE 'PATTERN':
                                IN(list)

                            组合条件:
                                and, or, not 
                (4) SELECT col1, ... FROM tbl1_name [WEHRE CLAUSE] ORDER BY col1, col2, ... [ASC|DESC]

            DELETE:
                DELETE FROM tbl_name
                    [WHERE where_condition]

            UPDATE:
                UPDATE table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
                    [WHERE where_condition]

图形管理工具:

phpMyAdmin Navicat mysql-front SQLyog  ToadForMySQL

原创文章,作者:yyw,如若转载,请注明出处:http://www.178linux.com/56571

(0)
上一篇 2016-11-01 10:24
下一篇 2016-11-01 11:07

相关推荐

  • shell脚本编程基础

    变量的种类 ——–shell—–父shell                      &…

    Linux干货 2017-04-16
  • samba

    FTP,SAMBA,NFS之间的区别 FTP        Windows/linux/unix/macOS等        发布网站,文件共享              Tcp/21 Samba  …

    Linux干货 2016-11-01
  • 浅谈筛选日志中的IP地址信息

    作为运维人员,经常会需要会对日志中的某些重要信息进行筛选,比如说ip等参数。 案例一:筛选出IP地址信息 日志信息如下: [root@C67-X64-A1 hanghang]# cat test.txt  Jul 13 08:13:09 localhost sshd[14678]…

    系统运维 2016-07-22
  • NoSQL之MongoDB

    分布式系统理论 1、 CAP: 分布式系统只能满足其中两个  Consistency :一致性 Availibility:可用性 Partitions Tolerance :分区容错性 C,A : SQL 传统的数据库。 两段机制。 C,P :悲观枷锁机制,分布式加锁机制。加锁机制与SQL不太一样。 这里的C为最终一致性。 放弃C后的特例,既可以保证可用性,…

    2018-01-09
  • shell-在线翻译脚本

            在linux过程中难免会碰到陌生的单词,此时不得不打开翻译软件或网页请求翻译,但这样切换界面比较麻烦,也浪费时间;         今天头脑发热,尝试着在网上找命令行翻译工具,但无果;…

    2017-02-19
  • 说说linux权限管理(1)

    在这篇文章当中你可以看到: 1、linux系统文件普通权限 2、文件所属主的设置,组的指定 3、特殊权限 4、acl权限 5、su命令及其注意事项和sudo权限 6、权限管理的注意点 0、首先,在linux下用户账户是分角色的,由于角色的不同,每个角色,每个用户的的权限和所能完成的任务也不同。而在实际管理中,用户的角色是通过UID(用户id号)来标识的,每个…

    Linux干货 2016-04-30