mysql之数据库基本理念

数据储存的问题:
    数据冗余和不一致
    数据访问困哪
    数据孤立
    完整性
    原子性问题
        例如AB2个账户,从A中向B转钱,不管如何转,A和B的总量是保持不变的。只要A减少,B就增加。
    并发访问异常
    安全性问题

文件的分层:
        表示层:看到的文件
        逻辑层:文件系统,存储引擎
        物理层:元数据+数据

关系型数据库的结构:
        表示层:库、表、索引等等
        逻辑层:存储引擎(解构)
        物理层:数据文件

关系型数据库的工作流程结构:
    发起查询(应用程序、sql用户、程序员、dba等) --> 查询管理器(各种解释器 --> 查询执行引擎) --> 存储管理器(各种管理器) --> 写入磁盘( 数据文件、索引文件、日志文件等)

关系运算:
    选择(选择元组):
        只输出符合条件的行。
        指定以某字段作为搜索码,做逻辑运算,筛选符合条件的行。

投影(选择属性):
        只输出指定字段的属性。
        显示部分指定字段,筛选符合条件的列。

自然连接:
        只输出2张表中字段名相同,属性值相同的行的连接。2张表建立了一个等值连接。
        例如有2张表,表A中字段名称USERNAME,对应的属性值为X,同一行中另一个字段为SHELL,属性值为Y,和表B中的字段名称为SHELL,属性为Y相同。B中同一行中另一个字段为SHELLTYPE,属性值为Z 。则自然连接显示为 X Y Y Z。其余输出以此类推。

笛卡尔集(交叉连接):
        参照(a+b)*(c+d)=ac+ad+bc+bd此公式。此时不考虑表之间的关系。
        假设表A中,字段有USERNAME(tom 、jerry、mike)、SHELLNUM(1、2、3)。表B中有字段QQ(qq1、qq2、qq3)、TYPE(use、lock、use)。则输出为3*3 共计9行:
            tom 1 qq1 use
            tom 1 qq2 lock
            tom 1 qq3 use
            jerry 2 qq1 use
            jerry 2 qq2 lock
            jerry 2 qq3 use
            mike 3 qq1 use
            mike 3 qq2 lock
            mike 3 qq3 user

注意:多表查询本质上就是先在内存中生成笛卡尔集,然后再查询,生成过程极大占用资源。

并(集合运算):
        2张表中都有的部分称为并。

SQL查询语句:
    DDL
        完整性定义语言

DML
    视图定义
    事物控制
    嵌入式SQL和动态SQL
    DCL

使用程序设计语言如何跟RDBMS交互:
    嵌入式SQL:
        类似与动态SQL,但其语句必须在程序编译时完全确定。比动态SQL更底层。例如ODBC(c)。注意ODBC是介于嵌入式和动态中间,不完全是嵌入式。
    动态SQL:
        程序设计语言使用函数或方法,与RDBMS服务器简历建立连接,向SQL服务器发送查询语句,将结果保存到变量中,而后进行处理。例如JDBC(java)。

时间: 2024-08-24 08:59:43

mysql之数据库基本理念的相关文章

MySQL/MariaDB数据库基于SSL实现主从复制

前言 备份数据库是生产环境中的首要任务,有时候不得不通过网络进行数据库的复制,由于MySQL/MariaDB的主从复制是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输. 部署配置 实验拓扑 实验环境 系统环境:CentOS6.6 数据库版本:mariadb-5.5.36 #注意:主从服务器数据库版本须一致:主从服务器时间须同步 #此实验从服务器只做一组为例 配置主从复制 安装mariadb [[e

MySQL创建数据库与创建用户以及授权

MySQL创建数据库与创建用户以及授权 1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和create database创建数据库的效果一样. 2.create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户 密码8位以上,包括:大写字母.小写字母.数字.特殊字符 %:匹配所有主机,该地方还可以设置成'

MySQL主从数据库同步延迟问题解决(转)

最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器. MySQL主从同步故障-Slave_SQL_Running: No http://www.linuxidc.com/Linux/2014-0

mysql导出数据库几种方法

mysql教程导出数据库教程几种方法 方法一 cmd 到mysql bin目录下用 如下命令 mysqldump --opt -h192.168.0.156 -uusername -ppassword --skip-lock-tables databasename>database.sql 把ip改成localhost就可以的 如果装了navicate那就更简单了 先连接上数据库,选中数据库 再选择转储sql 就好了 方法二进入cmd (注意在os cmd中 而不是在mysql中) ======

mysql主从数据库配置

在这里吧昨天做的主从数据库配置记录下来,免得以后折腾 数据库主从配置心得: master : 192.168.16.247 slave1 : 192.168.16.248 1 修改配置文件 /etc/mysql/my.cnf(如果my.cnf已有该配置项,则相应的进行修改) 主数据库: server-id = 1 log-bin = mysql-bin log-bin-index = mysql-bin.index #log_bin = /var/log/mysql/mysql-bin.log

MySQL备份数据库脚本

Windows @echo offmysqldump --add-drop-database --add-drop-table -u root -p123456 dbname > d:\db_backup\%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%_dbname.sql Linux #!/bin/shcd /usr/binDATE=`date +%Y-%m-%d`# 备份dbname数据库/usr

MySQL Study之--MySQL schema_information数据库

MySQL Study之--MySQL schema_information数据库   information_schema数据库是在mysql的版本5.0之后产生的,一个虚拟数据库,物理上并不存在.       information_schema数据库类似与"数据字典",提供了访问数据库元数据的方式,即数据的数据.比如数据库名或表名,列类型,访问权限(更加细化的访问方式). 案例: mysql> show databases; +--------------------+ |

MySql远程访问数据库

MySQL远程访问数据库语法如下: grant [权限] on [数据库名].[表命] to ['用户命']@['web服务器的ip地址'] identified by ['密码']; 例句: GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 切记,授完权限后要刷新数据库权限,执行如下代码: flush privileges;

Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)

Percona Xtrabackup备份mysql大数据库(完整备份与增量备份) 文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 innobackupex使用方法 完整备份及还原 增量备份及还原 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁).XtraBackup支持所有的Percona