标签:add l命令 rpc 被占用 投影 style lang const defaults
1、数据库系统 dbms: database managemnet system
2、数据库 database: 一个数据库系统中有多个数据库;
3、数据表 table: 多行多列的表格;一个数据库中有多个表;
4、字段 field: 一列数据;一个表有多个列;
5、行 row: 一行数据;一个表有多行;
6、数据 data: 具体数据;
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 6: 通用二进制格式安装MariaDB 1、获取源码 官方站点:www.mariadb.org 2、安装MariDB 1)添加用户 2)准备数据库 3)展开及配置 3、测试启动服务并登陆MariaDB 4、安全初始化 5、通用配置 1、获取源码 2、安装MariaDB 1) 添加用户: # groupadd -r -g 306 mysql # useradd -r -g 306 -u 306 mysql 2) 准备数据库: # 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 1 2 # mkdir -p /mydata/data # chown mysql.mysql /mydata/data # mount -a 3) 展开及配置: 展开: # tar xf mariadb-5.5.57-linux-i686.tar.gz -C /usr/local/ # cd /usr/local/ # ls //查看文件 # ln -sv mariadb-5.5.57-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 2、客户端程序 mysql CLI、GUI(phpMyadmin) mysqladmin mysqlbinlog 二进制日志管理 mysqldump CLI交互式客户端程序: mysql使用 mysql [-uUSERNAME] [-hHOST] [-pPASSWORD] 注意: 1、mysql用户名: ‘USERNAME‘@‘HOST‘ HOST:支持通配符: % 匹配任意长度的任意字符 _ 匹配任意单个字符 例如: 172.16.0.0/16网络用通配符表示 172.16.% 172.16.0.% 172.16.%.% 2、不给-u: 默认用户名为root 不给-h: 默认HOST为localhost或127.0.0.1 不给-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 1+1; > SELECT 0.99^365 > SELECT 1.0^365
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 范围: 0 - 2^64-1
近似: 单精度浮点[float]、双精度浮点[double]
修饰
NOT NULL :非空约束
DEFAULT NULL :设定默认值
https://blog.51cto.com/sonlich/1970069
标签:add l命令 rpc 被占用 投影 style lang const defaults
原文地址:https://www.cnblogs.com/liuzhiyun/p/11828246.html