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)
yywyyw
上一篇 2016-11-01 10:24
下一篇 2016-11-01 11:07

相关推荐

  • grub详解

    grub详解 1、GRUB(Boot Loader): grub:grub 0.x:grub1 legacy传统的版本 grub 1.x:grub2 grub legacy: 第1阶段:mbr 第1.5阶段:mbr之后的扇区中,让第一阶段中的boot loader能识别第二阶段所在分区上的文件系统 第2阶段:磁盘分区(/boot/grub/) 配置文件/et…

    2017-09-03
  • RAID及LVM的实现

    RAID及LVM的实现 第一部分 : RAID介绍及创建 1、mdadm工具 2、创建RAID 5及删除RAID 第二部分 : LVM的实现 1、基本命令 2、LVM创建及扩容和缩减 3、LVM快照 RAID介绍及创建 1、mdadm工具 mdadm [mode] <raid device> [options] <任意块设备> [mo…

    Linux干货 2017-08-22
  • 架构师第一天之:Nginx

    nginx: 诞生背景: prefork机制不能支持过大的并发请求, C10K问题的解决 官方站点: http://nginx.org 二次开发版: tengine,openresty 特性: 模块化设计,较好的拓展性 高可靠性:master/worker架构 支持热部署:不停机更新配置文件,更换日至文件,更新服务器版本 低内存消耗:10000个keep-a…

    Linux干货 2016-10-29
  • Vim编辑器初步接触

    一、概要     vim(IMproved)编辑器是vi(visual interface)编辑器的增强版,它是Linux系统编辑文本文件重要的工具之一,也是最基础的编辑工具。它可以执行输出、删除、查找、替换、块操作等众多文本操作。学会它之后,你使用Linux系统的路将更加平坦。 二、使用方法   …

    Linux干货 2015-04-03
  • Linux命令小总结

                     随着对Linux学习的深入,Linux命令也越来越多的。虽然我们可以通过man等帮助查询我 忘记的命令,但写脚本本质是由命令有序的堆砌而运行的。下面让我来总结一番我们学习过的命令 &nb…

    2017-07-30
  • Linux系统启动流程初识

    centos系统启动流程 本篇仅仅讲解centos5和6 centos7并不适用 Linux系统的组成部分:内核+根文件系统 内核功能: 进程管理 内存管理 网络管理 驱动程序 文件系统 安全功能 有以下目录结构的文件系统可以被识别为根文件系统,但根文件系统本身不存在 rootfs:/bin/ /sbin /etc/ /sys/…

    Linux干货 2016-09-11