mariadb(mysql):
数据结构模型:层次模型、网状结构、关系模型
关系模型:
二维关系:row, column
数据库管理系统:DBMS
关系:Relational,RDBMS
基础概念:
约束:constraint,向数据表提供的数据要遵守的限制;
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL;
一个表只能存在一个
惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL;
一个表可以存在多个
外键:一个表中的某字段可填入数据取决于另一个表的主键已有的数据;
检查性:
索引:将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储;
关系运算:
选择:挑选出符合条件的行(部分);
投影:挑选出需要的字段;
连接:
MariaDB的程序组成:
C:
mysql:CLI交互式客户端程序;
mysqldump, mysqladmin...
S:
mysqld_safe
mysqld
mysqld_multi
服务器监听的两种socket地址:
ip socket: 监听在tcp的3306端口,支持远程通信;
unix sock: 监听在sock文件上(/tmp/mysql.sock, /var/lib/mysql/mysql.sock),仅支持本地通信;
server: localhost, 127.0.0.1
命令行交互式客户端程序:mysql
mysql
-uUSERNAME: 用户名;默认为root
-hHOST: 服务器主机; 默认为localhost
-pPASSWORD:用户的密码; 默认为空密码
注意:mysql用户账号由两部分组成:'USERNAME'@'HOST'; 其中HOST用于限制此用户可通过哪些主机远程连接mysql服务;
支持使用通配符:
%: 匹配任意长度的任意字符;
172.16.0.0/16, 172.16.%.%
_: 匹配任意单个字符;
命令:
客户端命令:本地执行
mysql> help
每个命令都完×××式和简写格式;
status, \s
服务端命令:通过mysql协议发往服务器执行并取回结果
每个命令都必须命令结束符号;默认为分号;
关系型数据库的常见组件:
数据库:database
表:table
行:row
列:column
索引:index
视图:view
用户:user
权限:privilege
存储过程:procedure
存储函数:function
触发器:trigger
事件调度器:event scheduler
mysql_secure_installation:安全初始化
SQL语句:
DDL: Data Defination Language
CREATE, DROP, ALTER
DML: Data Manipulation Language
INSERT, DELETE, UPDATE, SELECT
GRANT, REVOKE
数据库:
CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME';
DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';
CHARACTER SET 'charecter set name'
COLLATE 'collate name'
查看支持所有字符集:SHOW CHARACTER SET;
查看支持所有排序规则:SHOW COLLATIONS;
获取命令使用帮助:
mysql> HELP KEYWORD;
查看:
mysql> SHOW DATABASES;
表:
CREATE TABLE [IF NOT EXISTS] tb_name (col1 datatype 修饰符, col2 datatype 修饰符) ENGINE=''
查看所有的引擎:SHOW ENGINES;
查看表:SHOW TABLES [FROM db_name]
查看表结构:DESC [db_name.]tb_name
删除表:
DROP TABLE [IF EXISTS] tb_name;
数据类型:
字符型
定长字符型:CHAR(#), BINARY(#)
变长字符型: VARCHAR(#), VARBINARY(#)
对象存储:
TEXT: 不区分大小写
BLOB:区分字符大小写
内置类型:
ENUM
SET
数值型
精确数值型
整型: int
tinyint: 1byte
smallint: 2bytes
mediumint: 3bytes
int: 4bytes
bigint: 8bytes
十进制: decimal
近似数值型
单精度浮点型
float
双精度浮点型
double
修饰符:
NOT NULL:非空约束
DEFAULT VALUE: 设定默认值