标签:重复 /etc/ 数据 规则 概念 std soc proc extra
数据库 : Database表 : table
行 : row列 : column索引 : index视图 : view用户 : user权限 : privilege存储过程 : procedure存储函数 : function触发器 : trigger事件调度器 : event schedule类似于OS的shell接口,操作数据库的数据接口,也提供了编程功能
ACID
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。
数据库为C/S架构,如下:
约束 : Constraint
主键 : 一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,且必须提供数据,即NOT NULL唯一键 : 一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,允许为null外键 : 一个表中的某字段可填入数据取决于另一个表中的主键已有的数据。检查性约束 : 表达式约束,取决于表达式的要求索引 : 将表中的一个或多个字段中的数据复制一份另存,并且这些字段需要按特定的次序排序存储,常见的索引类型:
树形索引(MariaDB默认为Btree索引)bash索引
关系运算
选择 : 挑选出符合条件的行(部分)投影 : 挑选出需要的字段连接 : 将多张表关联起来
数据抽象 :
物理层 : 决定数据的存储格式,即RDBMS 在磁盘上如何组织文件逻辑层 : 描述DB存储什么数据,以及数据间存在什么样的关系视图层 : 描述DB中的部分数据关系模型实体关系模型基于对象的关系模型半结构化的关系模型
=============
表类型")
MYISAM --> Aria
INNODB --> XtraDB
通用二进制格式安装过程
a. 准备数据目录
以/mydata/data为例;
b. 配置mariadb
# groupadd -r -g 306 mysql
# useradd -r -g 306 -u 306 mysql
# tar xf mariadb-VERSION.tar.xz -C /usr/local
# ln -sv mariadb-version mysql
# cd /usr/local/mysql
# chown -R root:mysql ./*
# scripts/mysql_install_db --datadir=/mydata/data --user=mysql
# cp supper-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
c. 准备配置文件
配置格式:类ini格式,为各程序均通过单个配置文件提供配置信息;
[prog_name]
能用二进制格式安装,配置文件查找次序:
/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
OS提供的mariadb rpm包安装的配置文件查找次序:
/etc/mysql/my.cnf --> /etc/my.cnf --> --default-extra=/PATH/TO/conf_file --> ~/my.cnf
以上两者越靠后就是最后生效的.
# mkdir /etc/mysql
# cp support-files/my-large.cnf /etc/mysql/my.cnf
添加三个选项:
[mysqld]
datadir = /mydata/data
innodb_file_per_table = on
skip_name_resolve = on
Client
mysql : CLI交互式客户端程序mysqldump : 备份工具mysqladmin: 管理工具mysqlbinlog : 查看二进制日志工具Server
mysqld: 服务端进程mysqld_safe : 服务端进程,默认也是运行的此进程mysqld_multi : 服务端进程, 多实例mysql_upgrade : 升级工具ip socket
unix socket
options
-uUSERNAME : 用户名,默认为root-hHOST : 服务器主机,默认为localhost-pPASSWD : 用户的密码dDB_NAME: 连接到服务端之后,指明默认数据库-e ‘SCRIPT‘ : 连接至MYSQL运行某命令后,直接退出,并返回结果注意: mysql的用户帐号由两部分组成,‘username‘@‘hostname‘,其中host用于限制此用户可通过哪些主机连接当前的MSYQL服务器
支持通配符:
% : 匹配任意长度的任意字符
172.16.%.%
_ : 匹配任意单个字符内置命令
\u DB_NAME : 设定哪个库为默认数据库\q : 退出\d CHAR : 设定新的语句结束符\g : 语句通用结束标记\G : 语句结束标记,但以竖排方式显示\s : 返回客户端与服务端的连接状态\c : 取消命令运行通过mysql协议发往服务器执行并取回结果,每个命令都必须有结束符,默认为";",示例如下:
for i in {1..100};do AGE=$[$RANDOM%100];mysql -uroot -pM8T9cw -e "insert mydb.student(id,name,age) value ($i,\"stu$i\",$AGE);"; done
获取命令帮助
help字符型
CHAR(#) : 不区分字符大小写BINARY(#) : 区分字符大小写VARCHAR(#) : 不区分字符大小写,需要在字符长度加1,最多65536个字符VARBINARY(#) : 区分字符大小写,需要在字符长度加1,最多65536个字符TEXT : 可存文本(2^32)个字符,只能存纯文本,不区分大小写
TINYTEXTTEXTMEDIUMTEXTLONGTEXTBLOB : 文本(2^32)个字符,可以存储图片内置类型
SET : 集合ENUM : 枚举数值型
精确数值型
INT
TINYINT : 一个字节SMALLINT : 二个字节MEDINUMINT : 三个字节INT : 四个字节BIGINT : 八个字节FLOAT : 单精度DOBULE : 双精度日期时间型
DATE : 日期型TIME : 时间型DATETIME : 日期时间型TIMESTAMP : 时间戳(从过去到现在经过的秒数)YEAR(2) : 2位年数YEAR(4) : 4位年数数据类型修饰符
NOT NULL : 非空DEFAULT value : 默认值AUTO_INCREMENT : 自增长UNSIGNED : 无符号,通常用于Int后面,进行修饰为正整数PRIMARY KEY : 主键定义UNIQUE KEY : 唯一键定义==========
使用格式create database | schema [if not exists]‘DB_NAME‘;
drop database | schema ‘DB_NAME‘;
show databases;create database mydb;drop database mydb;show character set;show collation;alter database testdb character set utf32;alter database testdb collate utf32_sinhala_ci;使用格式create table [if not exists] tb_name (col1 datatype 修饰符, col2 datatype 修饰符) engine=‘ ‘
show enginesshow tables;show tables from mysql;desc students;create table students(id int unsigned not null primary key, name varchar(30) not null, age tinyint unsigned not null,gender enum(‘F‘,‘M‘))alter table students add second_name char(30);alter table students drop second_name;alter table students2 add primary key (id);alter table students2 drop primary key;alter table students2 add index name (name);alter table students2 drop index name;drop index name on students2;alter table students drop second_name;alter table students drop index name;修改字段字义属性
alter table students modify name char(20);alter table students2 change name new_name char(20) after id;alter table students2 change name new_name char(20);
modify : 只可以修改字段定义的属性
change : 可以修改字段名称和定义的字段属性
show table status like ‘students2‘\Galter table students2 engine[=]myisam;desc students;show tablesshow tables from mysql;drop table students2;insert weizi value(1,‘zhen‘,30,‘F‘);insert weizi values(3,‘wei‘,30,‘F‘),(4,‘ping‘,31,‘F‘);insert weizi (id,name) value (5,"weizi");delete from weizi where name="zhen";delete from weizi where age is null;delete from weizi where age > 30;delete from weizi where id >=50 and age <=20;delete from weizi order by age asc limit 5;update weizi set age=35 where id=3 and age=30;update weizi set age=age-5 where age=35;update weizi age=age-age;update weizi set age=age-5 where order by id desc limit 10;update weizi set age=age-15 where name not like ‘stu%‘;select col1,col2,....from tb1_name [where clause] [order y ‘col_name‘] [limit [m,]n]
* : 表示所有字段as : 字段别名, col1 as alias1操作符:
==<><=>=!=between....and...条件逻辑操作
andornot模糊匹配
like
%_rlike ‘pattern‘ : 基于正则表达式匹配is nullis no nulldesc : 降序asc : 升序select name,age from students where age >30 and age<80;select name,age from students where age between 30 and 80;select name from students where name like ‘%ang%‘;select name from students where name rlike ‘^.*ang.*$;select name,age from students where age is null;select name,age form students where age is not null;select id,name from students order by name;select id,name from students order by name desc;username@host
管理权限数据库表字段存储例程grant pri_type,...on [object_type] db_name.tbl_name to ‘user‘@‘host‘ [identified by ‘PASSWD‘]
pri_type
all privileges : 表示全部权限db_name.tbl_name的表示方法:
*.* : 所有库的所有表db_name.* : 指定库的所有表db_name.tbl_name : 指定库的特定表db_name.routine_name : 指定库上的存储过程或存储函数object_type
tablefunctionproceduregrant all privileges on mydb.* to ‘zhenping‘@‘172.16.%.%‘ identified by ‘MT8ddd‘;revoke pri_type,.... on db_name.tb_name from ‘user‘@‘host‘;revoke all privileges on mydb.* from ‘zhenping‘@‘172.16.%.%‘;show grants for ‘user‘@‘host‘;flush privileges;1 Mariadb服务进程启动时会读取mysql库中的所有授权表至内存中;
2 grant和revoke等执行权限操作时会保存于表中,mariadb的服务进程会自动重读授权表
3 对于不能够或不能及时重读授权表,可手动让服务进程重启授权表,使用flush privileges
作者:魏镇坪
链接:http://www.jianshu.com/p/e59afa955a2d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
标签:重复 /etc/ 数据 规则 概念 std soc proc extra
原文地址:http://www.cnblogs.com/logo-fox/p/7813898.html