为了满足关系范式:通常一个大的数据集会拆成在一个库(集合内)中多张表表来存储,每一张表就是由行和列组成的二维关系,表与表之间也有关系,查询有时候需要做表链接,而表链接这个过程需要依赖于索引到各种算法来实现尽可能少的产生中间数据。

一、数据库层次关系

1、数据库系统 dbms: database managemnet system

2、数据库 database: 一个数据库系统中有多个数据库;

3、数据表 table: 多行多列的表格;一个数据库中有多个表;

4、字段 field: 一列数据;一个表有多个列;

5、行 row: 一行数据;一个表有多行;

6、数据 data: 具体数据;

3、大小写及命令细节

1、mysql不区分大小写

2、如果是生成文件夹的命令,文件夹名称有大小写之分,不同系统对文件名称有大小写区分;

3、标识符:建议使用字母、数字、下划线,不以数字开关;

4、标识符与系统关键字冲突,最好使用反引号:``

5、数据库名、表名、视图名,建议小写,及下划线命名方式;

https://blog.51cto.com/sonlich/1970069

4、数据的组织结构 :层次型、网状型、关系型、

5、事务:多个操作被当作一个整体对待

A:原子性

C :一致性

I:隔离性

D:持久性

6、SQL:Structure  Query Language

  结构化查询语言

  SQL解析器

  数据存储协议:应用层协议 C/S架构

    S :server 监听于套接字,接受并处理客户端的应用请求

     C : 程序接口:GUI 、CLI

       应用层编程接口 :ODBC  Open DataBase Connection

二、基础概念

 约束:constraint  向数据表提供的数据要遵守的限制

  主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行:必须提供数据 即NOT NULL;

  唯一键 :一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行:允许为NULL;

  外键:一个表中的某个字段可填入数据取决于另一个表的主键已有的数据;

  检查性:

索引:将表中的一个或多个字段中的数据复制一份另存,并且此需要按特定次序排序存储

关系运算

    选择:挑选出符合条件的行(部分)

    投影:挑选出需要的字段(列)

 数据抽象

    物理层:决定数据的存储格式,即RDBMS在磁盘上如何组织文件

        表和文件并不是一一对应的,如何存储是在物理层决定

       对磁盘而言,看到的内容使二进制数据流

    逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系

    视图层:描述DB中的部分数据

       对用户而言,看到内容是文件

 关系模型的分类

    关系模型

    实体-关系模型

    基于对象的关系模型

    半结构化的关系模型

安装MySQL :

  源代码:编译安装 需cmake

    https://blog.51cto.com/xiexiaojun/1679995

  二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用

     https://blog.51cto.com/sonlich/1970069

https://blog.51cto.com/xiexiaojun/1660813

三、MariaDB,开源RDBMS的实现

特性

  插件式存储引擎【表类型】:逻辑概念转换成磁盘格式【表--->文件】,提供逻辑概念的约束得以执行

  存储引擎也称之为“表类型”

  a)支持更多的存储引擎:
    mysql标准的存储引擎:MyISAM【不支持事务】,InnoDB【事务,间隙锁】
    MariaDB:Aria【myisam的升级版:崩溃后恢复】,InnoDB(XtraDB的别名)   b)诸多的扩展和新特性
  c)较多的测试组件
  d)truly open source

3.1、安装和使用MariaDB

https://blog.51cto.com/xiexiaojun/1679995

  CentOS 7直接提供:yum  -y install mariadb-server

  CentOS 6  通用二进制安装

  CentOS : 通用二进制格式安装MariaDB

        、获取源码
官方站点:www.mariadb.org
、安装MariDB
)添加用户
)准备数据库
)展开及配置
、测试启动服务并登陆MariaDB
、安全初始化
、通用配置 、获取源码
、安装MariaDB
) 添加用户:
# groupadd -r -g mysql
# useradd -r -g -u mysql ) 准备数据库:
# btrfs
# lvm2 快照,数据库备份 # fdisk -l /dev/[sh]d[a-z] //查看所有磁盘
# fdisk /dev/sda //管理指定磁盘
# partx -a /dev/sda
# partx -a /dev/sda # pvcreate /dev/sda3
# vgcreate vg0 /dev/sda3
# lvcreate -L 10G -n mylv vg0 # 查看可被格式的文件系统类型
# cat /proc/filesystems
**没有xfs,xfs比ext文件易扩展,易用
# 查看模块
# lsmod # 安装使用xfs文件系统
# yum search xfs //xfsprogs.i686 : Utilities for managing the XFS filesystem
文件系统组成: 模块、用户空间的管理工具、POSIX
# yum -y install xfsprogs # 安装后查看内核中的模块
# rpm -ql xfsprogs //只提供程序,并未提供模块
# modinfo xfs //没有此模块
# modprobe xfs //如果有则可以安装 # mke2fs -t ext4 /dev/vg0/mylv
# vim /etc/fstab
/dev/vg0/mylv /mydata/data ext4 defaults
# mkdir -p /mydata/data
# chown mysql.mysql /mydata/data
# mount -a 3) 展开及配置:
展开:
# tar xf mariadb-5.5.-linux-i686.tar.gz -C /usr/local/ # cd /usr/local/
# ls //查看文件
# ln -sv mariadb-5.5.-linux-i686 mysql
# ll //查看链接
# cd mysql
# ll //查看权限
# chown -R mysql:mysql ./*
# ll //确认 元数据生成:
# scripts/mysql_install_db --help
--user=user_name
--basedir=path //指明mariadb的安装目录
--datadir=path //MariaDB的数据库的目录
--defaults-extra-file=name //配置文件 # /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/mydata/data/ # ls /mydata/data //查看文件是否生成 准备配置文件:
配置文件读取路径: /etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
# mkdir /etc/mysql
# ls support-files/ //查看提供的文件
1) my*.cnf //均为配置 large(512M内存), meduim(256M), small(64M) 内存4G innodb-heavy-4G.cnf
2) mysql.server //提供的服务脚本 # cp support-files/my-large.cnf /etc/mysql/my.cnf 修改配置文件: 配置文件类ini格式, 相同配置段出现多次时,最后一个配置段为最终生效段. [client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock //客户端通过/tmp/mysql.sock与服务端通信
[mysqld]
port = 3306 //服务端监听的端口
socket = /tmp/mysql.sock //服务端监听在unix socket
# Try number of CPU's*2 for thread_concurrency 线程数为CPU核心数的2倍
thread_concurrency = 4 --------
datadir = /mydata/data //数据库的目录
innodb_file_per_table = on //innodb的特性,每个文件当作一个表
skip_name_resolve = on //跳过IP-->反解为主机名.授权只基于IP即可,加速 准备服务脚本
# ls support-files/ //查看服务脚本的位置及权限
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list mysqld 4)测试启动服务
# ss -tnl //查看3306端口是否被占用
# service mysqld start /usr/local/mysql/bin/mysqld_safe_helper: Can't create/write to file '/var/log/mysqld.log' (Errcode: 13)
# touch /var/log/mysqld.log
# chown root.mysql /var/log/mysqld.log
# chmod 660 /var/log/mysqld.log # /usr/local/mysql/bin/mysql
MariaDB [(none)]> 5) 安全初始化
MariaDB [(none)]> SELECT User,Host,Password FROM mysql.user;
+------+-----------------------+----------+
| User | Host | Password |
+------+-----------------------+----------+
| root | localhost | |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | localhost.localdomain | |
+------+-----------------------+----------+
6 rows in set (0.00 sec)
注意:在本地主机上root,及一个匿名用户没有对应的密码 # /usr/local/mysql/bin/mysql_secure_installation # /usr/local/mysql/bin/mysql -uroot -hlocalhost -pmagedu
MariaDB [(none)]> 6)通用配置
查看安装目录
# ls /usr/local/mysql
bin data include lib mysql-test scripts sql-bench
COPYING EXCEPTIONS-CLIENT INSTALL-BINARY man README share support-files 1、导出PATH变量
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
# . /etc/profile.d/mysql.sh
2、导出库文件
# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib
# ldconfig [-v]
3、导出头文件
# ln -sv /usr/local/mysql/include /usr/include/mysql
4、导出man手册
# vim /etc/man.config
MANPATH /usr/local/mysql/man

3.2、MariaDB程序组成

    # ls /usr/local/mysql/bin

        1、服务端程序
mysqld_safe[ps命令即可查询:"线程安全的mysql"]
mysqld_multi["多个mysql,使用不同的端口"]
       mysqld mysql协议:数据存储协议:C/S架构
实现: mysqld
进程间的通信:
同主机通信:unix socket、message queue(signal)、share memory、semphor(旗语)
跨主机:socket、rpc--监听在tcp的3306端口,支持远程通信 mysqld同主机:基于unix socket通信
服务器监听在: server地址: localhost, 127.0.0.1
二进制安装:/tmp/mysql.sock
rpm安装: /var/lib/mysql/mysql.sock 、客户端程序
mysql CLI、GUI(phpMyadmin)
mysqladmin
mysqlbinlog 二进制日志管理
mysqldump CLI交互式客户端程序: mysql使用
mysql [-uUSERNAME] [-hHOST] [-pPASSWORD] 注意:
、mysql用户名: 'USERNAME'@'HOST'
HOST:支持通配符:
% 匹配任意长度的任意字符
_ 匹配任意单个字符
例如: 172.16.0.0/16网络用通配符表示
172.16.%
172.16..%
172.16.%.%
、不给-u: 默认用户名为root
不给-h: 默认HOST为localhost或127.0.0.
不给-p: 默认PASSWORD为空

3.3、SQL接口

 SQL接口: 与mysqld相互
MariaDB [(none)]> 客户端命令:本地执行
命令名 简写格式
help (\?) //获取帮助
clear (\c) //清空输入的内容
ego (\G) 垂直显示结果
quit (\q) //退出mysql,
status (\s) //查看服务器的状态信息
system (\!) //执行shell命令
use (\u) use DB, 设定默认数据库 服务端命令:通过mysql协议发往服务器端,执行并取回结果,命令有结束符";"
> SELECT VERSION();
调用函数并执行
> SELECT +;
> SELECT 0.99^
> SELECT 1.0^

3.4、关系型数据库的常见组件、

SQL 过程是编程,自定义函数(UDF),内置函数(IDF)
数据库:database
表 :table
   行:row
   列:column
索引:index
视图:view 并行多用户访问:
    用户:USER
    权限:PRIVILEGES
------运维需掌握------------

DBA可调用的代码/函数
  存储过程:procedure 没有返回值
  存储函数:function 有返回值
  触发器:触发额外代码执行
  事件调试器:event scheduler [crontab 周期性任务计划]

3.5、SQL语句(注:对mysql命令不区分大小写)

  DDL :Data Defination Language 数据定义语言

     CREATE :创建数据库和数据库的一些对象

     DROP : 删除数据表、索引、触发程序、条件约束以及数据表的权限等(没有回收站,执行动作后数据会从磁盘中抹去)

     ALTER:修改数据表定义及属性

  DML:Data Manipulation Language 数据操作语言 (向表中插入、修改、查询)

     INSERT 、DELETE 、UPDATE 、SELECT

  DCL : Data Control Language 数据控制语言

     Grant : 允许对象的创建者给某用户或某组或所有用户 赋予某些特定的权限

     Revoke : 可以废除某用户或某组或所有用户访问权限

注意:写的格式统一,因为mysql缓存是根据MD5值存储缓存。如果两次输入的字母大小写不同时,其MD5值不同。




3.6、数据库管理

 查看 :SHOW DATABASES;

语法:

  创建数据库 :CREATE DATABASE | [IF NOT EXISTS] "db_name" [create_specification];

  删除数据库 :DROP  DATABASE | [IF NOT EXISTS] "db_name" [create_specification];    <没有回收站>只能基于备份恢复

     create_specification: 

          CHARACTER SET 'charecter set name'   字符集

          COLLATE 'collate name'  排序规则

  查看当前支持哪些字符集和排序规则:

     >SHOW  CHARACTER  SET ;

     >SHOW COLLATION ;

获取命令帮助:

3.7、表:

   CREATE TABLE tb_name  (col1 datatype 修饰符,col2 datatype 修饰符,...) ENGINE=' '

    查看所有的引擎:>SHOW ENGINE;
    查看表:SHOW TABLES [FROM db_name]
    查看表结构:DESC [db_name.]tb_name
    删除表:DROP TABLE tb_name ;

3.8、数据类型、

数据类型: datatype
字符:
定长字符:
不区分大小写 char(#) 用或不用,给1个占10个
区分大小写 binary(#) 变长字符:
不区分大小写 varchar(#) 有结束符,占用一个, 给1个,占2个
区分大小写 varbinary(#) 对象存储:大文本存储
TEXT 不区分大小写
BLOB 区分----二进制的大对象
内置:
ENUM 枚举(给你几种,最多有几种选择)
SET 集合
数值:
精确:整型[int]、十进制[decimal]
int
tinyint 1byte
smallint 2bytes
mediumint 3bytes
int 4bytes
bigint 8bytes 范围: - ^-
近似: 单精度浮点[float]、双精度浮点[double] 修饰
  NOT NULL :非空约束
  DEFAULT NULL :设定默认值

https://blog.51cto.com/sonlich/1970069

   

MySQL 基础之一的更多相关文章

  1. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  2. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  3. 【夯实Mysql基础】记一次mysql语句的优化过程

    1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...

  4. MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  5. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

  6. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  7. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  8. MySQL基础学习总结

    1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...

  9. MySQL基础(五)——视图

    MySQL基础(五)--视图

  10. MySQL基础(四)——索引

    MySQL基础(四)--索引

随机推荐

  1. 【转载】JVM结构、GC工作机制详解

    文章主要分为以下四个部分 JVM结构.内存分配.垃圾回收算法.垃圾收集器.下面我们一一来看. 一.JVM结构 根据<java虚拟机规范>规定,JVM的基本结构一般如下图所示: 从左图可知, ...

  2. 解决SecureCRT 中文乱码??

    在linux服务器上搭建solr,用的是SecureCRT  连接linux服务器,发现不能输入中文,配置文件中的中文也是乱码:先以为是SecureCRT工具编码的问题,把编码改成utf-8之后发现还 ...

  3. 一些 SQLite技巧

    SQLite自增ID自段 使用方法为 INTEGER PRIMARY KEY AUTOINCREMENT 如: CREATE   TABLE  21andy ( id  INTEGER   PRIMA ...

  4. 【hadoop】在eclipse上运行WordCount的操作过程

    序:本以为今天花点时间将WordCount例子完全理解到,但高估自己了,更别说我只是在大学选修一学期的java,之后再也没碰过java语言了 总的来说,从宏观上能理解具体的程序思路,但具体到每个代码有 ...

  5. 1.后期特效合成AE概述&&工作流程&&磁盘缓存清理

    1.简介: After Effects:是一款专业的后期制作与特效合成软件: 2.AE界面介绍  2.1 项目面板   2.2 合成预览面板   2.3 时间线面板     2.4 辅助面板    2 ...

  6. 搭建React项目环境【1】

    1.安装NodeJS6.0以上自带npm依赖包管理工具 2.webstrom 2019.2 工具 1.在cmd输入node -v就可以看到node的当前版本 2.在输入node进入node环境 3.查 ...

  7. ICS2019-Linux汇编实验指导

    ICS2019-Linux汇编实验指导 环境配好了? 开始调试 一. 首先安装NASM 1. 先判断系统是否已经安装了nasm 打开终端,执行  whereis nasm :如果显示nasm: /us ...

  8. C++(四十二) — 函数模板多态

     1.函数模板(参数多态) 相当于一个函数发生器,参数多态,可以重载. 普通函数和模板函数的本质区别: 普通函数的调用,可以进行隐式的类型转换: 函数模板的调用,使用类型参数化,严格按照类型进行匹配, ...

  9. 微博MySQL优化之路

    数据库是所有架构中不可缺少的一环,一旦数据库出现性能问题,那对整个系统都回来带灾难性的后果.并且数据库一旦出现问题,由于数据库天生有状态(分主从)带数据(一般还不小),所以出问题之后的恢复时间一般不太 ...

  10. MySQL JOIN原理(转)

    先看一下实验的两张表: 表comments,总行数28856 表comments_for,总行数57,comments_id是有索引的,ID列为主键. 以上两张表是我们测试的基础,然后看一下索引,co ...