MariaDB基础

MariaDB基础

关系型数据库的基础概念:

1)数据类型:作用:存储格式、数据范围、所能参与的运算、排序方式    
    字符型:
        定长字符型:CHAR(#),BIARNY(#)
        变长字符型:VARCHAR(#),VARBINARY(#)
    数值型:
        精确数值型:
        近似数值型:
    日期时间型:
        DATE
        TIME
2)数据库的设计范式:
    第一范式:字段是原子性的;
    第二范式:存在可用的主键;
    第三范式:任何字段都不应该依赖于其它表的非主键字段;

3)数据约束:向数据表中插入数据时要遵守的限制规则
    主键:primary key,表上一个或多个字段的组合,填入主键字段中的数据,必须不同于已经存在的其它行的相同字段上的数据,而且也不能为空;一个表只能存一个主键;
    惟一键:unique key,表上一个或多个字段的组合,填入其中字段中的数据,必须不同于已经存在的其它行的相同字段上的数据,但可以为空;一个表可以有多个惟键;
    外键:foreign key,一个表中的外键字段中所能够插入的数据取值范围,取决于引用的另一个表上主键字段上的已经存在数据集合;

MariaDB的基础应用:

MariaDB程序组成:C/S结构

C:Client:客户端程序
            mysql
            mysqladmin
            mysqldump
            mysqlbinlog
S:Server:服务端程序
            mysqld
            mysqld_safe
            mysqld_multi
管理工具程序:
            myisampack
            myisamchk
            ...
套接字地址:mysql支持的如下三类
            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交互式界面在shell命令行进行操作
示例:]# mysql -e 'CREATE DATABASE IF NOT EXISTS mydb; SHOW DATABASES;'
mysql客户端的另一种执行方式;sql脚本;比如写一个包含了sql语句的脚本;如下写一个文件/tmp/test.sql,然后利用重定向的方式交给mysql执行
    CREATE DATABASE alidb;
    CREATE TABLE alidb.tbl1 (id TINTINT);
    INSERT INTO alidb.tbl1 VALUES (1),(99);
    ]# mysql < /tmp/test.sql


客户端命令:在客户端执行;
    mysql> help 
    \?:获取可用的命令帮助;
    \q:退出客户端程序;
    \d CHAR:自定义语句结束符;
    \g:语句结束标记;
    \G:语句结束标记,竖排显示结果;
    \! SHELL_CMD:运行shell命令;
    \s:当前连接及服务器相关的状态信息;
    \.:执行一个sql脚本
服务端命令: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
                    data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']

                约束定义:
                    PRIMARY KEY(col1[,col2, ....])
                    UNIQUE KEY 
                    FOREIGN KEY 
                    CHECK(expr)
                索引定义:
                    {INDEX|KEY} 
                    {FULLTEXT|SPATIAL}
                    字段是必须的,索引和约束是可选的 
                设定表选项
                    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
示例:定义一个表

MariaDB [(none)]> CREATE DATABASE mydb;

MariaDB [(none)]> use mydb;

MariaDB [mydb]> CREATE TABLE tbl1(id SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, name CHAR(30) NOT NULL, age TINYINT UNSIGNED, gender ENUM('F','M'),UNIQUE KEY(name,gender),INDEX(name));

命令解析:

CREATE DATABASE mydb; 创建一个数据库

MariaDB [(none)]> use mydb;进入数据库

CREATE TABLE tbl1:创建一个名为tbl1的表

(…):使用小括号扩起来给定一个字段定义,以学生信息为例括号里边的内容如下;

id:第一个字段叫id

SMALLINT:假设学生数量不超过六万个,使用SMALLINT表示小整型

UNSIGEND:假设学生的学号不会有负数出现,使用UNSIGNED;UNSIGNED是SMALLINT的修饰符,必须要紧跟在SMALLINT的背后,中间不能隔任何字符

NOT NULL:不允许为空

PRIMARY KEY:把它定义成主键

AUTO_INCREMENT:让其自动增长:主键的修饰符

,name:逗号隔开,第二个字段叫name

CHAR(30):名字可以使用字符串,定长30个字符

NOT NULL:名字不能为空:NOT NULL的修饰符

,age:逗号隔开,第三个字段叫age年龄

TINYINT:指定年龄数量为非常小的整数

UNSIGEND:指定年龄不能为负数

,gender:,逗号隔开,第三个字段叫gender性别

ENUM性别的类型不会特别多这里指定使用枚举类型

('F','M'):指定F和M两种性别

DEFAULT 'M':假设学生中男性为多,这里设定M为默认

UNIQUE KEY(name,gender):假设学生的名字和学生的性别不能重叠,联合起来是唯一的.这里使用UNIQUE KEY设置唯一键

INDEX(name)):在姓名上额外做一个索引

使用DESC tbl1:显示表结构

MariaDB基础

MariaDB [mydb]> SHOW ENGINES; :显示表状态信息

MariaDB基础

示例:删除一个索引: ALTER TABLE tbl1 DROP INDEX name_2;

MariaDB基础

示例:新增一个表的字段(默认排序在表中的最后一个字段):MariaDB [mydb]> ALTER TABLE tbl1 ADD ClassID TINYINT UNSIGNED NOT NULL;

MariaDB基础

示例:修改一个表中的一个字段并且指定其在age字段后的位置: MariaDB [mydb]> ALTER TABLE tbl1 MODIFY ClassID TINYINT UNSIGNED NOT NULL after age;

MariaDB基础

示例:删除tbl1表中的一个索引:MariaDB [mydb]> DROP INDEX name ON tbl1;

MariaDB基础

示例:在tbl1表中为name字段的前五个字节上和gender字段创建一个名为nameandgender的索引 MariaDB [mydb]> CREATE INDEX nameandgender ON tbl1(name(5),gender);

MariaDB基础

示例:查看在tbl1表中以name开头的索引:MariaDB [mydb]> SHOW INDEXES FROM tbl1 WHERE Key_name LIKE 'name%';

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]
UPDATE:
    UPDATE table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]

示例:在tbl1表中插入一行数据:INSERT INTO tbl1 (name,ClassID) VALUE ('tom',1);

MariaDB基础

示例:在tbl1表中插入多行数据:INSERT INTO tbl1 (name,ClassID) VALUE ('jerry',1),('clinton',2);

MariaDB基础

示例:在tbl1表中插入每个字段插入数据

MariaDB基础

示例:查询tbl1中name和gender字段:MariaDB [mydb]> SELECT name,gender FROM tbl1;

MariaDB基础

示例:使用别名Stuname显示name字段查询tbl1中name和gender字段:MariaDB [mydb]> SELECT name AS Stuname,gender FROM tbl1;

MariaDB基础

示例:挑选查询tbl1表中ClassID大于2的:MariaDB [mydb]> SELECT * FROM tbl1 WHERE ClassID > 2;

MariaDB基础

示例:挑选查询tbl1表中ClassID大于等于2和小于等于5的:MariaDB [mydb]> SELECT * FROM tbl1 WHERE ClassID >=2 and ClassID <=5;

MariaDB基础

示例:挑选查询tbl1表中ClassID在2和5之间的:MariaDB [mydb]> SELECT * FROM tbl1 WHERE ClassID BETWEEN 2 AND 5;

MariaDB基础

示例:查询tbl1表中name字段包含O的:MariaDB [mydb]> select name from tbl1 where name like '%o%';

MariaDB基础

示例:查询tbl1表中name字段以r结尾的:MariaDB [mydb]> select name from tbl1 where name like '%r';

MariaDB基础

示例:使用RLIKE支持正则表达式的方法查询tbl1中name字段包含o的:MariaDB [mydb]> select name from tbl1 where name rlike '^.o.$';

MariaDB基础

示例:在tbl1表中挑选出ClassID字段是1和2的:MariaDB [mydb]> select name,ClassID from tbl1 where ClassID in (1,2);

MariaDB基础

示例:以名字查询tbl1中的name和ClassID字段,并且升序排序:MariaDB [mydb]> select * from tbl1 order by ClassID,name;

MariaDB基础

示例:以名字查询tbl1中的name和ClassID字段,并且逆序排序:MariaDB [mydb]> select * from tbl1 order by ClassID,name desc;

MariaDB基础

示例:以ClassID查询tbl1表中的ClassID字段,并且逆序排序:MariaDB [mydb]> select * from tbl1 order by ClassID desc;

MariaDB基础

示例:以ClassID字段逆序和name字段升序查询tbl1表:MariaDB [mydb]> select * from tbl1 order by ClassID desc,name;

MariaDB基础

示例:以ClassID字段逆序和name字段逆序查询tbl1表:

MariaDB基础

示例:删除tbl1表中ClassID字段中为5的:MariaDB [mydb]> delete from tbl1 where ClassID = 5;

MariaDB基础 MariaDB基础

示例:把tbl1表中id为2的age更新为17:MariaDB [mydb]> update tbl1 set age=17 where id=2;

MariaDB基础

示例:把tbl1表中id为1的age更新为18,ClassID更新为3:MariaDB [mydb]> update tbl1 set age=18,ClassID=3 WHERE id=1;

MariaDB基础

原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/58121

(0)
上一篇 2016-11-07 09:40
下一篇 2016-11-07 09:54

相关推荐

  • Linux之旅1

    Linux之旅1  一、描述计算机的组成及其功能 计算机的组成: 1、计算机主要由:CPU(控制器、运算器)、存储器、输入设备、和输出设备(输入设备、和输出设备又称为I/O设备)四部分组成; 计算机个组成部分的功能: CPU:主要有控制器和运算器组成; 控制器:控制器是整个计算机的中枢神经;其功能是对程序规定的控制信息进行解释,根据其要求进行控制,…

    2016-09-12
  • 学习札记:用户管理,权限管理和ACL欢乐”斗地主”

    补充:touch /etc/nologin 启动系统维护功能,其他用户不能登陆,除了管理员,可以自定义内容,在普通用户登陆的时候可以看到相关维护提示,解除维护模式的话,必须要删除该文件,另外可以创建/run/nologin达到相同的效果(仅限于CentOS 7), 用户属性修改 usermod [OPTION] login -u UID: 新UID -g G…

    Linux干货 2016-08-04
  • N23-卡卡琦-第二周

    1、文件管理类命令 常规命令:copy、mv、rm (1).copy 文件复制 用法: 注意:复制文件只是复制文件的数据而不是元数据,但是可以保留元数据的信息。 单源复制:目录是否存在都可以 多源复制:目录必须是存在的 -i:提醒用户操作确认(交互式) -f:强行覆盖 -r:递归复制目录 -p:保留源数据 -a:用于实现归档,做备份 -d:不跟踪符号链接所指…

    Linux干货 2016-12-11
  • 初识varnish

      实验拓扑 varnish主机    地址192.168.150.137 后端web主机     web1静态服务192.168.150.138     web2动态服务192.168.150.140 varnish的安装及开启 varnish主机: ~]# yum info varni…

    Linux干货 2017-01-05
  • Linux硬链接和软链接的区别

    一.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个…

    Linux干货 2016-10-29
  • ​Linux基础知识之screen命令详解

    该博文以CentOS6.8_x86_64系统为基础,Xshell5远程登录CentOS6.8系统,以root身份登录系统,以Xshell5发起screen帮助,用系统命令行界面去连接。 screen命令:         打开新的screen: screen -S [SESSION]   (打开一个名叫hel…

    Linux干货 2016-07-29