RDBMS:关系型数据库管理系统
C/S:通过专有协议
关系运算:选择、投影
SQL语句常用有三种类型:DDL、DML、DCL
为了提升SQL的功能,各个厂家还为SQL提供了编程接口:存储过程、存储函数、触发器、事件调度器、过程式编程(选择、循环)
三层模型:物理层、逻辑层、视图层
MariaDB
插件式存储引擎
单进程多线程;线程包括:连接线程和守护线程
配置文件:集中式的配置,能够为Mysql的各应用程序提供配置信息。
[mysqld]
[mysqld_safe]
[mysqld_multi]
[server]
[mysql]
[mysqldump]
[client]
各个字段参数格式:parameter = value
查找路由:/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> --default-extra-file=/path/to/somedir/my.cnf --> ~/.my.cnf
注:每次都从头到尾都查一遍,并非查到前一个,后一个就不查找了。
安装数据库后的设定:
(1) 为root用户设定密码;
方法一:mysql> SET PASSWORD
方法二:mysql> update mysql.user SET passowrd=PASSWORD('your_pass') WHERE cluase;
方法三:mysqladmin
(2) 删除所有匿名用户
mysql> DROP USER ''@'localhost';
上述两步骤可运行命令:mysql_secure_installation来完成这些操作。
(3) 建议关闭主机名反解功能;
元数据数据库:mysql
mysql --> mysqld
客户端程序:
mysql:交互式的CLI工具;
mysqldump:备份工具,基于Mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存在文本文件中;
mysqladmin:基于mysql协议管理mysqld;
mysqlimport:数据导入工具;
非客户端类的管理工具: # 不能通过远程管理,只能在server本地主机上运行
myisamchk,myisampack
如何获取程序默认使用配置:
~]# mysql --print-defaults
~]# mysqld --print-defaults
客户端类应用程序的可用选项:
-P,--port
--protocol=
-S,--socket=
-D,--database= # 进入后进接进入某数据库
-C,--compress
mysql -e "SQL" # 不进入数据库,执行命令;
mysql的使用模式:
交互式模式
可运行命令有两类:
客户端命令:
h,help
服务器端命令:
SQL,需要语句结束符;
脚本模式:
# mysql -uUSERNAME -hHOST -pPASSPWORD < /path/from/somefile.sql
mysql> source /path/from/somefile.sql
服务器端(mysqld):工作特性有多种定义方式
命令行选项
配置文件参数
获取可用参数列表:
~]# mysqld --verbose --help
获取运行中的mysql进程使用各服务器参数及其值:
mysql> SHOW GLOBAL VARIABLES;
mysql> SHOW [SESSION] VARIABLES;
注意:其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效;
有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独的设置;
修改服务器变量的值:
mysql> help SET
全局:
mysql> SET GLOBAL system_var_name=value;
mysql> SET @@global.system_var_name=value;
会话:
mysql> SET [SESSION] system_var_name=value;
mysql> SET @@[session.]system_var_name=value;
状态变量:用于保存mysqld运行中的统计数据的变量;
mysql> SHOW GLOBAL STATUS;
mysql> SHOW [SESSION] STATUS;
MySQL数据类型:字符型、数值型、日期时间型、内建类型
字符型: # ENUM,SET也是字符型
数值型:
日志时间型:
字符类型的修饰符:
NOT NULL:非空约束
NULL:允许为空,默认为NULL
DEFAULT 'STRING':指明默认值;
CHARACTER SET ' ':指定字符集; # 如果不指定会从全局继承
COLLACTION:使用的排序规则; # 如果不指定会从全局继承
查看所有字符集和排序规则:
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;
数值修饰符:
NOT NULL
NULL
DEFAULT NUMBER
AUTO_INCREAMENT:使用时要满足以下条件
UNSIGNED:不符号
PRIMARY KEY | UNIQIE KEY
NOT NULL
mysql> SELECT LAST_INSERT_ID() # 用来查看已经自增至哪个数值了;
日期时间型修饰符:
NOT NULL
NULL
DEFAULT
内建类型SET和ENUM的修饰符:
NOT NULL
NULL
DEFAULT
SQL MODE:定义mysqld对约束等的响应行为;
修改方式:
mysql> SET GLOBAL sql_mode='MODE'; # 修改全局模式,对新建立联接的会话生效(重新连接mysql即可)
mysql> SET @@global.sql_mode='MODE'
需要修改权限,仅对修改后新创建的会话有效,对已经建立的会话无效;
mysql> SET SESSION sql_mode='MODE'; # 修改会话模式,只对当前会话有效。
mysql> SET @@session.sql_mode='MODE';
常用 MODE:TRANDITIONAL、STRICT_TRANS_TABLES(对所有支持事物的表做严格约束)、STRICT_ALL_TABLES
SHOW GLOBAL VARIABLES LIKE 'sql_mode';
注:所有命令修改的变量(无论全局还是会话)只是临时有效,要想永久有效,需要定义在配置文件中;
SQL:DDL,DML
DDL:数据定义语言;
CREATE,ALTER,DROP
可用上述命令的DB组件:数据库、表、索引、视图、用户、存储过程、存储函数、触发器、事件调试器等
DML:数据操作语言;
INSERT,DELETE,UPDATE,SELECT
索引:实现级别在存储引擎上;
分类:
稠密索引、稀疏索引
B+索引、hash索引、R树索引、FULLTEST索引
聚集索引、非聚集索引
简单索引、组合索引
创建表:CREATE TABLE
(1)直接创建;
(2)通过查询现存的表创建:新表会被直接插入查询而来的数据;表结构没有关系。
(3)通过复制现在的表的表结构创建:不复制数据;
注意:Storage Engine是指表类型(说明即使是同一数据库,不同表也可以使用不同引擎),以及在表创建时指明其使用的存储引擎;
查看表结构:
DESC tb1_name
查看表的状态:
SHOW TABLE STATUS LIKE 't1' G
SHOW命令可以使用LIKE和WHERE子句