mysql基础
一,概念
1.插件式存储引擎
2.单进程多线程 连接线程,守护线程
二,配置文件
1.集中式的配置,能够为mysql的各个应用程序提供配置信息,[mysqld] [mysqld_safe] [mysql_multi] [server] [client] [mysql] [mysqldump]
2.skip_name_resolve 变量至此_ - 连接,意义一样,尽量统一标准
3.查找路径 /etc/my.cnf --> /etc/mysql/my.cnf -->$MYSQL_HOME/my.cnf--> --default-extra-file=/path/to/my.cnf --> ~/my.cnf
4.查找到第一个,继续查找第二,第三个,不管前面的能不能找到,都会找后面的。如果多个配置文件中对同一个key有配置,后面的会覆盖前面的。
三,安装方法
1.yum 安装
2.rpm包
3.源码
4.展开可用的包
四,安装后的设定
1.为所有的root用户设定密码
mysql> SET PASSWORD;
mysql> update mysql.user SET password=PASSWORD('pass') where cluase;
mysqladmin
2.删除所有的匿名用户 DROP USER ''@'localhost';
3.建议关闭主机名反解功能
4.上述1,2可用使用命令 mysql_secure_installation
5.元数据数据库 mysql库,user,host等表
五,客户端工具
1.mysql : 交互式CLI工具
2.mysqldump :备份工具,基于mysql协议发起查询请求,并将查询的所有数据转换成insert等写操作语句保存在文本文件中
3.mysqladmin 基于mysql协议的mysqld
4.mysqlimport 数据导入工具
六,非客户端工具
1.myisamchk
2.myisampack 只读打包工具
七,常用命令
1.mysql --print-defaults 获取mysql默认配置 --no-auto-rehash 默认补全,有缺陷,每次连接mysqld都要做哈希,会导致mysql连接卡,建议关闭此项
2.mysqld --print-defaults 获取mysqld的默认配置
八,客户端工具的可用选项
1.-u --user=
2.-h --host=
3.-p --password=
4.-P --port=
5.--protocol=
6.-S --socket=
7.-D --database=
8.-C --compress 传入命令是否压缩
9.mysql -e "sql"
九,mysql的使用模式
1.交互模式
2.脚本模式 mysql -uU -pP < /path/file.sql mysql>source /path/file.sql
十,服务端参数定义方式
1.命令行选项
2.配置文件参数 获取可用参数 mysqld --help --verbose
3.获取运行中的mysql进程的各服务器参数和值 mysql> show global variables; show session variables; 部分参数支持修改,立即生效,有的不支持需要修改配置文件,修改配置文件,需要restart或reload,有些参数的作用域是全局的,有些可用用每个用户提供单独的设置
十一,修改服务端变量的值
1.mysql > help SET
2.全局 mysql > set global system_var_name=value; set @@global.system_var_name=value;
3.会话 mysql > set [session] system_var_name=value; set @@[session.]system_var_name=value
4.状态变量:用于保存mysqld运行中的统计数据的变量 mysql > show global status; show [session] status;
十二,mysql常用数据类型
1.字符型 char 定长,varchar变长(需要结束符,结束符占一个空间),text,blog,enum (内建)
2.数值型
3.日期时间型
4.内建类型
十三,SQL 模式
1.sql mode 定义mysqld 对约束等的响应行为
2.set global sql_mode='mode' 需要权限,仅对修改后创建的会话有效,对已创建的会话无效
3.set [session] sql_mode='mode'
4.常用mode traditional 传统模型,不允许对非法值插入操作,sirict_trams_tables 对支持事务的表,做严格约束,strict_all_tables 对所有的表进行严格约束
十四,SQL
1.DDL:数据定义语言 Create alter drop
2.DML:数据操作语言 insert,delete,update,select
十五,常用命令
1.show table status like 't1'\G
数据库:
CREATE, ALTER, DROP
{DATABASE|SCHEMA}
[IF EXISTS]
[IF NOT EXISTS]
表:二维关系
设计表:遵循规范;
定义:字段,索引
字段:字段名,字段数据类型,修改符
约束,索引:应该创建在经常用作查询条件的字段上;
索引:实现级别在存储引擎;
分类:
稠密索引、稀疏索引
B+索引、hash索引、R树索引、FULLTEXT索引
聚集索引、非聚集索引
简单索引、组合索引
创建表:CREATE TABLE
(1) 直接创建;
(2) 通过查询现存的表创建;新表会被直接插入查询而来的数据;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
[partition_options]
select_statement
(3) 通过复制现存的表的表结构创建;不复制数据;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name) }
注意:Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎;
同一个库中表要使用同一种存储引擎类型;
查看表结构:
DESCRIBE tbl_name;
查看表状态信息:
SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
修改表:ALTER TABLE
删除表:DROP TABLE