MariaDB/Mysql的用法

要使用MariaDB/Mysql,先要利用yum安装

[root@localhost ~]# yum install -y mariadb-*    //利用这条命令能把所有关于MariaDB的软件工具安装上

若本来Linux(CentOS)已经安装,可用

[root@localhost ~]# ss -tnl        //查看3306是否被监听,有就已开启服务

若没有开启则启动服务

[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>  //已经进入mysql/MariaDB的交互界面


在Mysql/MariaDB的交互界面就可以用MariaDB/Mysql的语句来进行数据库的操作。

也可以在Bash界面有条件对应使用:

    mysql [options] [db_name]来进入Mysql界面;

        -p[password]
                用于指定连接mysql服务器时,为对应用户指定身份验证所需密码;如果密码部分省略不写,执行命令后需要在新行中给出密码,这种方式相对更安全;

        -D db_name
                用于指定使用mysql客户端程序连接到mysql服务器之后,默认使用哪个数据库;如果不给定该选项,默认为NULL;

        -e statement
                连接至mysql服务器并将后面的SQL语句交给服务器运行之后返回执行结果并直接退出交互式登录模式,返回bash命令提示符;

        -h host_name
                用于指定此次mysql程序所连接的mysql服务器的主机名称或主机IP地址;默认是localhost(127.0.0.1);

        -u user_name
                用于指定连接mysql服务器时使用的用户名;默认的用户名为:'root'@'localhost'

                    mysql的用户名:USERNAME@HOSTNAME
                    USERNAME表示登录的用户名称;
                    HOSTNAME表示用户通过哪个特定的客户端主机连接到mysql服务器;
                    如:'root'@'172.16.0.1'用户
                        表示只有172.16.0.1主机可以通过root用户连接至myslq服务器;
                        HOSTNAME中可以使用通配符:
                            _:任意单个字符;
                            %:任意长度的任意字符;
                    如:'root'@'172.16.%.%'
                        表示172.16.0.0/16网段中的所有主机都可以使用root用户连接至mysql服务器;
                    如:'root'@'172.16._.%'
                        表示172.16.0.0~172.16.9.255地址的主机都可以使用root用户连接至mysql服务器;

                    注意:默认情况下,所有用户均为空密码,并且还有匿名用户存在,因此,为了增强安全性,可以使用mysql_secure_installation命令完成账户安全初始化;是的mysql服务器仅能让root用户在本地登录,并且移除匿名用                                    户和test数据库;


进入mysql/MariaDB的交互界面后,可以用mysql命令了;

    Mysql命令分为:客户端命令和服务器端命令

        客户端命令:mysql程序自身完成或执行的命令,在客户端所在地运行

                clear     (\c)
                    停止发送当前正在键入的命令或语句并直接返回提示符;
                delimiter (\d)
                    设置语句结束标记;默认的语句结束标记为";";
                ego       (\G)
                    将其前面的语句送往mysql服务器运行,并将返回的结果纵线显示;
                go        (\g)
                    无需输入语句结束标记,直接将其前面的语句送往服务器执行;
                exit,quit (\q)
                    退出mysql程序的交互式模式;
                status    (\s)
                    获取mysql服务器的状态信息;
                use       (\u)
                    将指定的数据库作为当前正在使用的数据库;
                source    (\.)
                    可以在mysql交互式模式中执行SQL脚本文件;
                ?或help    (\?)
                    获取客户端命令的帮助信息;


        服务端命令:mysql客户端程序通过mysql协议向mysql服务器端发送的SQL语句;每个SQL语句都必须以指定的结束标记结尾,默认是";"

            服务器端命令代表的SQL语句,可以分为三类:DDL,DML,DCL



DDL:数据定义语言,主要用于管理数据库及数据库的各组件;
                例如:数据库,表,视图,索引,用户,存储过程,存储函数,触发器,事件等;
    常用的SQL语句:CREATE,DROP,ALTER,SHOW


DML:数据操纵语言,主要用于管理表中的数据,实现数据的增,删,改,查等操作;
    常用的SQL语句:INSERT,DELETE,UPDATE,SELECT

DCL:数据控制语言,主要用于管理数据访问的授权;
    常用的SQL语句:GRANT,REVOKE


获取指定的SQL语句的帮助信息;

    mysql> help SQL_STATEMENT_KEYWORK
    MariaDB [(none)]> help SQL_STATEMENT_KEYWORK

         所有的SQL语句本身,不区分字符大小写;建议使用小写字母书写SQL语句;


DDL中的数据库

    创建数据库、修改数据库的属性、删除数据库


创建数据库:

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

            DATABASE | SCHEMA:
                表示要创建的对象的类型为"数据库"或"方案";
            IF NOT EXISTS:
                如果指定要创建的数据库已经存在,则不报错也不执行创建操作;
            db_name:
                要创建的数据库的名称;
            CHARACTER SET [=] charset_name:
                为新创建的数据库指定其默认的字符集;
                
                mysql> show character set
                    查看mysql服务器所支持的所有字符集及默认排序规则;
            COLLATE [=] collation_name:
                为新创建的数据库指定字符集的排序规则;

            mysql> show collation
                查看mysql服务器上每种字符集所支持的所有的排序规则;


修改数据库的属性:

    ALTER {DATABASE | SCHEMA} db_name alter_specification ...
                alter_specification:
                    [DEFAULT] CHARACTER SET [=] charset_name
                    | [DEFAULT] COLLATE [=] collation_name

            注意:如果数据库中已经有表,且表中已经插入数据时,更改数据库的字符集和排序规则可能会导致已存数据的乱码;


删除数据库:

    DROP {DATABASE | SCHEMA} [IF EXISTS] db_name            


DDL中的表:

    数据类型、创建表、修改表、删除表


数据类型:
    定义数据类型的意义:
        1.决定数据的存储格式;
        2.决定数据所能参与的运算;
        3.决定数据可以表示的有效范围;

    对于mysql来说,支持的数据类型:
        数值型:
            精确数值型:
                TINYINT(3):8bits,0~255,-128~+127
                SMALLINT(5):16bits,0~65535,-32768~+32767
                MEDIUMINT(8):24bits,0~16777735
                INT(10):32bits,
                INTEGER:48bits,
                BIGINT:64bits

            近似数值型:
                REAL
                DOUBLE
                FLOAT

        字符串型:
            变长字符型:
                VARCHAR(length):字符不区分大小写;65536个字符;
                    VARCHAR(30)
                        qhdlink$ -- 8字节存储空间;
                VARBINARY(length):字符区分大小写;65536个字符;

            定长字符型
                CHAR(length):字符不区分大小写;256个字符;
                    CHAR(30)
                        qhdlink -- 30字节空间;
                BINARY(length):字符区分大小写;256个字符;

        对象存储类型:
            TEXT:存储大量的纯文本信息;
                TINYTEXT
                TEXT
                MEDIUMTEXT
                LONGTEXT

            BLOB:存储非纯文本信息经过流式化处理之后的二进制数据;
                TINYBLOB
                BLOB
                MEDIUMBLOB
                LONGBLOB

        日期时间型:
            DATE:日期型,3字节;
            TIME:时间型,3字节;
            TIMESTAMP:时间戳类型,4字节;
            DATETIME:日期时间型,8字节;
            YEAR:年份,YEAR(2),YEAR(4)

        内置特殊类型:
            集合类型:
                SET:集合,插入的数据可以是集合中各个元素的任意组合;
                    SET('a','b','c','d')
                        a
                        aa
                        aab
                        abdc

            枚举类型:
                ENUM:枚举,只能存放列举出来的固定的字符或字符串;
                    ENUM('F','M')
                        F
                        M

    数据类型相关的修饰符:
        与整数类型相关的:
            UNSIGNED,无符号整数;
                注意:UNSIGNED修饰符必须紧跟在精确数值类型标识符之后;
            AUTO_INCREMENT [=] Value:
                整型数据的递增或递减;

        通用修饰符:
            NOT NULL:非空约束;一般是为主键做约束;
            DEFAULT Value:为字段设置默认值;

   

创建表:
            CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options]
                create_definition:
                    col_name  data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']

                table_options:
                    ENGINE [=] engine_name | AUTO_INCREMENT [=] value

            显示表的结构:
                mysql> desc stu_info;

            显示创建表的SQL语句:
                mysql> show create table stu_info;


修改表:

    ALTER TABLE tbl_name [alter_specification [, alter_specification] ...]

    增加表的字段:
        ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]

        示例:
            mysql> alter table stu_info add Stel_num varchar(20) not null after SAge;

    修改表的字段属性
        CHANGE [COLUMN] old_col_name new_col_name column_definition  [FIRST|AFTER col_name]
        MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

        示例:
            mysql> alter table stu_info change column Stel_num SMobile char(11) not null after Gender;
            mysql> alter table stu_info modify SAge tinyint unsigned after Gender;

    删除表的字段:
        DROP [COLUMN] col_name


删除表:

    DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...




DDL中的视图:

    创建视图、删除视图

    

    创建视图:
        CREATE VIEW view_name [(column_list)] AS SELECT clause;

    删除视图:
        DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE]

DDL中的索引

    索引类型、创建索引、查看索引、删除索引、


索引的类型:
    聚集索引、非聚集索引:
        聚集索引:索引和数据存放在一起,找到索引即找到数据;
        非聚集索引:索引和数据不存放在一起,索引通过索引指针指向数据所在位置;

    稠密索引、稀疏索引:是否索引了每一条数据记录;
        稠密索引:每条数据记录都有一条索引与之对应;
        稀疏索引:并不是每条数据记录都有一条索引与之对应,而是一条索引对应某个或某些数据块;

    主键索引、辅助索引:
        BTree:Balance Tree,B- Tree,BTree,B+Tree
            左前缀索引:

            注意:在使用BTree索引进行检索时,给出的PATTERN的最左侧字符不要出现通配符,否则,无法使用索引进行检索;只能全文遍历;

            Hash索引:

        R Tree:Spacial,空间索引;
        FULLTEXT:全文索引;

    覆盖索引:索引中的内容就是要检索的内容,通过检索索引内容即可立即找到数据,并直接返回检索结果;


创建索引:
    1.在创建表时,通过指定主键或唯一键,可以自动创建索引;
    2.如果在创建表时,没有指定主键或唯一键,则可以在表成功创建之后添加索引;

    CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_option] ...

    示例:
        MariaDB [hellodb]> create index name_index on students(Name);

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


删除索引:
    DROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name







DML中的INSERT/REPLACE、

DML中的DELETE

DML中的UPDATE

DML中的SELECE




猜你喜欢

转载自blog.51cto.com/weidehong/2149188