MySQL/MariaDB基础知识

数据库:即数据存储的仓库或集合

数据库的组成:

1.  数据库

2.  数据表

3.  记录

4.  字段

5.  索引

6.  查询

7.  视图

8.  过滤器

1.  数据库 :  由一个或多个表组成以文件的形式存储在磁盘上的物理文件;

2.  数据表  :   一组按行排列的相关数据,由一组数据记录组成;

3.  记录     : 表中的一行称为一个记录(记录即行),由若干个字段组成;

4.  字段    : 表中的一列称为一个字段,也叫域,每个字段都有相应的描述信息,如数据类型,大小,宽度等;

5.  索引    : 将一个或多个字段抽取出来的一种特殊的数据结构,为了提高数据检索的效率;

6.  查询     : 从一个或多个表中获取需要的记录的SQL语言;

7.  视图     :  即虚表,包含已知表中的部分列;

8.  过滤器  : 根据给出的条件输出指定的数据;

如何安装MySQL/MariaDB?

1.基于包管理器格式的程序包直接安装,如:rpm包,deb包等;
               CentOS 6中:

]# yum install  mysqld-server

CentOS 7中:

]# yum install  mariadb-server

2.官方提供的通用二进制程序包;直接解压缩程序包即可使用;
          3.源代码包编译安装;

MySQL/MariaDB的程序环境:

1. 服务器端程序:mysql-server, mariadb-server
                  1) 服务启动脚本:
                           /etc/rc.d/init.d/mysqld
                    2)常用的二进制文件:
                          /usr/bin/mysql_install_db
                          /usr/bin/mysql_secure_installation
                          /usr/bin/mysqld_multi
                          /usr/bin/mysqld_safe
                     3) 数据目录:
                          /var/lib/mysql
                      4)主配置文件:
                         /etc/my.cnf

2. 客户端程序:mysql, mariadb
            常用的二进制文件:
                /usr/bin/mysql
                /usr/bin/mysqladmin
                /usr/bin/mysqlbinlog
                /usr/bin/mysqldump

如何启动数据库服务:

CentOS 6中:

]# service mysqld[-service] start            "[]"可省略;

CentOS 7中:
                ]# systemctl start mariadb[-service]    "[]"可省略;

mysql相关基本命令:

1.客户端命令

1)mysql命令 - 基本的交互式命令行客户端工具;
                   格式:mysql [options] [db_name]
                   常用选项:
                       --database=db_name, -D db_name
                         指定登录数据库后使用哪个数据库;不写则为null;

例:]# mysql -D ytc

......

MariaDB [ytc]>   //登录后直接进入了名为ytc的数据库;

--execute=statement, -e statement
                         连接至mysql服务器并将后面的SQL语句交给服务器运行之后返回执行结果并直接退出交互式登录模式,返回bash命令提示符;
                       --host=host_name, -h host_name
                         用于指定此次mysql程序所连接的mysql服务器的主机名称或主机IP地址;默认是localhost(127.0.0.1);
                       --user=user_name, -u user_name
                         用于指定连接mysql服务器时使用的用户名;默认的用户名为:'root'@'localhost'
                         mysql的用户名:[email protected]
                         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服务器;

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

例:

]# mysql -utest -h172.16.75.1 -p 123456   //表示以test用户的身份登录数据库服务器172.16.75.1,密码为123456

注意:默认情况下,所有用户均为空密码,并且还有匿名用户存在,因此,为了增强安全性,可以使用mysql_secure_installation命令完成账户安全初始化;

mysql服务器仅能让root用户在本地登录,并且移除匿名用户和test数据库;

客户端命令: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语句都必须以指定的结束标记结尾,默认是";"

2) mysqladmin命令:
                   mysqladmin - client for administering a MySQL server
                     常用选项:
                     -u, -h, -p, -P, -D, -S
                     各选项功能同mysql命令的选项功能;

常用子命令:
                    create db_name:创建数据库;
                    drop db_name:删除数据库;
                    flush-hosts:清除服务器缓存中所有信息;
                    flush-logs:清除日志,让日志滚动;
                    flush-privileges:刷新授权表;
                    flush-tables:为表加锁;
                  password new-password:为指定的用户设置新密码;
                  start-slave:在msyql的集群服务中的从节点启动用于实施复制功能的线程;
                    stop-slave:在msyql的集群服务中的从节点关闭用于实施复制功能的线程;
                    shutdown:停止服务;

例:

~]# mysqladmin -uytc password 123456   给名为ytc的用户设置密码
                   ~]# mysqladmin -uytc -p password '111111'
                          Enter password: [输入原来的密码]         给名为ytc的用户更改密码
                   ~]# mysqladmin create students                创建名为students的数据库

~]# mysqladmin drop students                           删除名为students的数据库

。。。。。。

2.服务器端命令

1)mysqld_safe命令:

用于启动mysql服务,定义mysql的工作特性;

工作特性:

]# mysql

mysql> show global variables;   查看特性

格式:/usr/bin/mysqld_safe [OPTIONS]
                     注意:所有给出的 OPTION(--option)都是一次性生效;如果期望配置参数永久有效,需要将此类配置参数及参数值直接定义在配置文件中(/etc/my.cnf)即可;

2) mysqld_multi命令

mysqld_multi设计用于管理多个sqmyld进程,这些进程监听不同Unix套接字上的连接文件和TCP / IP端口。它可以启动或停止服务器,或报告其当前状态。

3)DDL:数据定义语言

1. create:
                      格式:

创建数据库:

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

CHARACTER:字符集

mysql> show character set;              查看字符集

Collate:          核对

mysql> show collation;                            查看核对排序类型

例:

[[email protected] ~]# mysql -p
                         Enter password:

。。。。。。。

mysql> create database students character set = 'utf8';

Query OK, 1 row affected (0.04 sec)        创建名为students的数据库,默认字符集为‘utf8’;

创建数据表:

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

col_name:                                              字段名

data_type:                                              数据类型

[NOT NULL | NULL]                               该字段的值是否为空

[AUTO_INCREMENT]                             整型数据的递增或递减

[UNIQUE [KEY] | [PRIMARY] KEY]          定义唯一键和主键

COMMENT 'string'                                评论‘字符串’

例:

MariaDB [(none)]> use ytc;
                          MariaDB [ytc]> create table stu_info (SID tinyint unsigned not null auto_increment primary key,SName varchar(50) not null,SAge tinyint unsigned,Gender enum('F','M'));
                          Query OK, 0 rows affected (0.00 sec)     创建stu_info表

MariaDB [ytc]> select * from stu_info;    查看表内容

MariaDB [ytc]> desc stu_info;                查看表结构

2. drop:删除数据库:
                         格式:

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

例:

mysql> drop  database students;
                          Query OK, 0 rows affected (0.02 sec)     删除名为students的数据库

3.alter:

格式:

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

例:

mysql> alter database students character set = 'latin7';
                         Query OK, 1 row affected (0.01 sec)        修改students数据库的字符集为‘latin7’

mysql> show character set;              查看字符集

4. show:

格式:

SHOW {DATABASES | SCHEMAS}[LIKE 'pattern' | WHERE expr]

例:

mysql>  show databases like 'ytc';
                      +----------------+
                       | Database (ytc) |
                      +----------------+
                       | ytc            |
                      +----------------+                               查看名字ytc的数据库

例:

mysql>  show databases like 'y%';
                       +---------------+
                        | Database (y%) |
                       +---------------+
                        | ytc           |
                        | ytc123        |
                       +---------------+
                       2 rows in set (0.00 sec)                       查看名字中以“y”开头的数据库

4)DML:数据管理语言

1.select  查看表内容

格式:

SELECT select_expr [, select_expr ...] [FROM table_references] [WHERE where_condition]

1)显示整张表:
                             SELECT * FROM tbl_name;

例:

MariaDB [hellodb]> select * from students;                          显示students整张表

2)投影:显示指定的或符合要求的列;
                             SELECT col_name AS con_alias[,col_name AS con_alias,...] FROM tbl_name;

例:

MariaDB [hellodb]> select StuID,Name from students;                 显示表中StuID,Name两列

3)选择:显示符合要求或匹配条件的列并将列改用别名显示;
                            SELECT col_name AS con_alias[,col_name AS con_alias,...] FROM tbl_name WHERE condition;

例:

MariaDB [hellodb]> select StuID as a,Name as b from students;    将StuID,Name分别以别名a,b显示

WHERE子句用于指明选择时依据的条件:
                             col_name 操作符 value

操作符:
                            1) 比较操作符:>, <, >=, <=, ==, !=
                            2) 逻辑操作符:and, or, not
                            3) 特殊操作符:
                            BETWEEN...AND...
                            LIKE "PATTERN",其中"PATTERN"中可以适当添加通配符,如:%或_;
                            RLIKE "PATTERN",使用正则表达式对字符串进行模式匹配;在使用RLIKE进行数据检索时,索引不生效,检索效率低,速度慢,不推荐使用;
                            IS NULL或IS NOT NULL:判断指定字段是否为空;

例:
                           MariaDB [hellodb]> select * from students where Age>20;

//查看年龄大于20的学生信息

MariaDB [hellodb]> select * from students where SAge >= 20 and SAge <=30;

MariaDB [hellodb]> select * from students where Age between 20 and 30;

//查看年龄大于20小于30的学生信息

MariaDB [hellodb]> select * from students where Gender = "M";

//查看性别为男的学生信息

MariaDB [hellodb]> select * from students where Name like 'H%';

//查看名字以H开头的学生信息

MariaDB [hellodb]> select * from students where Name like '%g';

//查看名字以g结尾的学生信息

MariaDB [hellodb]> select * from students where Name rlike '^S';

//查看名字以S开头的学生信息

MariaDB [hellodb]> select * from students where Name rlike 'n$';
                             //查看名字以n结尾的学生信息

MariaDB [hellodb]> select * from students where ClassID is not null;
                            //查看ClassID不为空的学生信息

4)排序:
                         SELECT col_name AS con_alias[,col_name AS con_alias,...] FROM tbl_name WHERE condition [ORDER BY {col_name | expr | position} [ASC | DESC], ...]

例:
                           MariaDB [hellodb]> select * from students order by Age ;

MariaDB [hellodb]> select * from students order by Age asc ;

MariaDB [hellodb]> select * from students order by Age ASC;

//以年龄大小升序排序

例:

MariaDB [hellodb]> select * from students order by Age desc ;

MariaDB [hellodb]> select * from students order by Age DESC;

//以年龄从大小降序排序

2.修改表数据内容:
                  UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...

[WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

例:
                MariaDB [hellodb]> update students set Name='Obama' where StuID=5;
                MariaDB [hellodb]> update students set Age=SAge+1;
                MariaDB [hellodb]> update students set Age=Age+100 where StuID in (1,3,5,7);

注意:修改数据时,一定要考虑清楚是否要添加where条件子句;如果不写where子句,默认修改全表;

3. insert/replace插入内容

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

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

例:
                MariaDB [hellodb]> insert into students values (1,'tom','M',25),(2,'jerry','F',28);
                MariaDB [hellodb]> insert into students (SName) values ('Alice'),('James');
                MariaDB [hellodb]> insert into students set SName='zhangsan',Gender='M',SAge=20;

注意:
                1.如果向表中插入的value是字符串,则value必须使用引号引用;
                2.如果向表中插入的value是数字,则value一定不能用引号引用;

4. delete删除表内容

DELETE FROM tbl_name  [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

例:

MariaDB [hellodb]> delete from students where StuID > 3;

5) DCL:数据控制语言,主要用于管理数据访问的授权;
                    1.grant

格式:

GRANT priv_type [(column_list)][, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_specification [, user_specification] ...

例:

MariaDB [hellodb]> grant select,insert,update on *.* to 'myuser'@'172.16.%.%' identified by '123456';

2.revoke:授权回收:
                          格式:

REVOKE priv_type [(column_list)][, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...

例:

MariaDB [hellodb]> revoke insert on *.* from 'myuser'@'172.16.%.%';

原文地址:http://blog.51cto.com/yuantianchi/2149168

时间: 2024-08-11 10:31:12

MySQL/MariaDB基础知识的相关文章

MySQL/MariaDB基础性知识及DDL操作详解

前言 MySQL/MariaDB是一个开放源码的小型关联式数据库管理系统,由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL/MariaDB作为网站数据库. 基础架构 MySQL核心组件 连接池:认证.线程重用.连接数限制.内存检查.缓存 SQL接口:DDL, DML, 关系型数据库的基本抽象 parser: 查询转换.对象权限检查 优化器:访问路径,性能相关的统计数据 caches和buffers:与存储引擎自身相关的I/O性

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

mysql系列--基础知识大总结

注:本文为mysql基础知识的总结,基础点很多若是有些不足够,还请自行搜索.后续增加 一.mysql简介 数据库简介 数据库是计算机应用系统中的一种专门管理数据资源的系统 数据库是一组经过计算机处理后的数据,存储在多个文件中,而管理数据库软件被称为数据库管理系统----DBMS 而MYSQL ORACLE等就是数据库管理系统 mysql是一款数据库管理软件  免费使用 sql sql(结构化查询语言) 数据库管理系统通过sql语言来管理数据库中的数据.sql语言是一种数据库查询和长须设计语言.其

MySQL/MariaDB基础

数据库管理系统很早就有了,在最开始时,数据库管理的结构是层次化的,即层次模型,它是一个树形结构,可以通过有限次的查找来定位需要的数据,然而,这种查找还是需要遍历才能实现,所以这种模型应用时间不长久:之后有了网状模型,也就是多个树的集合:层次模型和网状模型都称为非关系型数据库.之后由Edgar Frank Codd提出了一个关系型数据库的模型,从此之后就有了关系模型,其中Oracle公司就是以此为原型开发了Oracle数据库:到现在又提出了反关系模型--No-SQL,它是非关系型的数据库,例如:键

mysql数据库基础知识总结

这里把自己学的mysql数据库的知识总结一下,当是给自己复习一遍,也是方便以后查询 安装和配置mysql就不说了,可以借鉴这位博友的安装过程   https://www.cnblogs.com/by330326/p/5608290.html 一.mysql基本命令 1.创建命令 create user '用户名' @'ip' identified by '密码';  创建用户 ip是指用户登录mysql的电脑ip,可以写%,本地写localhost grant 权限(select/insert/

mysql 学习基础知识汇总

DBMS模型: 层次模型 网状模型 关系模型 以文件来存取数据的困难:数据冗余和不一致性,数据访问困难,数据孤立,数据完整性问题,原子性问题,并发访问问题,安全性问题 XML(扩展标机语言) 关系模型: 关系模型 E-R实体-关系模型 对象模型 半结构化数据模型 文件:对于文件来说可以从三个层次来分析 1.表示层 文件 2.逻辑层 文件系统:存储引擎 3.物理层 元数据 数据块 E-R图的表示方法 实体:  矩形表示 属性:   椭圆表示 联系:   菱形表示 各实体间的对应关心:1:1    

MySQL数据库基础知识学习笔记(一)

1.MySQL基础与sql语句实战 MySQL是一种关系型数据库管理系统,在互联网公司里非常流行.Linux下用yum命令安装 实操:连接数据库172.16.41.89登录mysql命令:Mysql -u root -p 回车,然后输入密码 查看数据库:Show databases; 新建数据库:Create databases xiaoning defsult charset=utf8;然后再次show databases 查看一下,xiaoning 已经被创建 语句:Create table

MySQL/MariaDB基础(2)

MariaDB查询缓存 缓存中的数据是开源形式的,以键值对(k/v)的形式存在 key:查询语句的hash值: value:查询语句的查询结果: 缓存中的数据主要是通过整个查询语句的hash值的比较,完全相同则命中:这样通过缓存响应客户端请求,可以提高检索效率:当然,也不是所有的查询数据都可以缓存,那么哪些数据不能够缓存呢? 1.要查询的数据库中可能包含敏感信息:如MySQL数据库中的各系统表: 2.在查询语句中包含有用户自定义的函数(UDF) 3.存储函数: 4.用户自定义变量: 5.对于临时

MySQL/MariaDB基础第二次

1MariaDB查询缓存缓存中的数据是开源形式的,以键值对(k/v)的形式存在key:查询语句的hash值:value:查询语句的查询结果:缓存中的数据主要是通过整个查询语句的hash值的比较,完全相同则命中:这样通过缓存响应客户端请求,可以提高检索效率:当然,也不是所有的查询数据都可以缓存,那么哪些数据不能够缓存呢? 1.要查询的数据库中可能包含敏感信息:如MySQL数据库中的各系统表:2.在查询语句中包含有用户自定义的函数(UDF)3.存储函数:4.用户自定义变量:5.对于临时表发起的查询请