数据库
: Database表
: table
行
: row列
: column索引
: index视图
: view用户
: user权限
: privilege存储过程
: procedure存储函数
: function触发器
: trigger事件调度器
: event schedule相似于OS的shell接口,操做数据库的数据接口,也提供了编程功能mysql
ACID正则表达式
设计关系数据库时,听从不一样的规范要求,设计出合理的关系型数据库,这些不一样的规范要求被称为不一样的范式,各类范式呈递次规范,越高的范式数据库冗余越小。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。知足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步知足更多规范要求的称为第二范式(2NF),其他范式以次类推。通常说来,数据库只需知足第三范式(3NF)就好了。sql
数据库为C/S架构,以下:shell
约束
: 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)个字符,只能存纯文本,不区分大小写
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
BLOB
: 文本(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
: 惟一键定义==========bash
使用格式
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 engines
show 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'\G
alter table students2 engine[=]myisam;
desc students;
show tables
show 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...
条件逻辑操做
and
or
not
模糊匹配
like
%
_
rlike 'pattern'
: 基于正则表达式匹配is null
is no null
desc
: 降序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
table
function
procedure
grant 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來源:简书著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。