您的位置:首页 > 运维架构 > Linux

菜鸟学Linux 第073篇笔记 client,数据类型,变量

2017-01-09 20:56 543 查看
菜鸟学Linux 第073篇笔记 client,数据类型,变量

小标题
client、mysql数据类型、服务器变量、存储引擎、sql模型

MySQL客户端

mysql
--user, -u
--host, -h
--password, -p
--port
--protocol
--database DATABASE, -D
--html 返回结果以html格式显示
--xml 返回结果以xml格式显示

mysql>
交互式模式
批处理模式(脚本模式)
脚本写法和在mysql>模式输入一样;号结尾,只是不用进入交互模式便可执行
执行mysql脚本方式
命令行下
# mysql < /path/name.sql
进入交互模式下引用脚本
mysql> \. /path/name.sql
mysql> source /path/name.sql

mysql>
命令两类
客户端命令
\c 提前终止语句执行
\g 无论语句结束符是什么,直接将此语句送至服务器端执行
\G 无论语句结束符是什么,直接将此语句送到服务器端执行,以竖排方式显示
\. 引用.sql结尾的Mysql语句脚本
\s Get status information from the server.
\! Execute a system shell command.
\W Show warnings after every statement.
\w Don't show warnings after every statement.
\# 对新建的对象支持补全的功能
\d 定义结束符

服务器语句;有语句结束符,默认为;号
help Key-word

mysql提示符含义
mysql> 正常输入命令
-> 少结束符
'> 少单引号的后一半
"> 少双绰号的后一半
`> 少反绰号的后一半

mysql让其支持补全
(不推荐,只是说有这样一种功能,因为支持补全需要将这些数据加载到内存)
名称补全 \#

mysqladmin
# mysqladmin [options] command [arg] [command [arg] ] ...
create DATABASE-NAME;
drop DATABASE-NAME;
ping
# mysqladmin -uroot -h192.168.11.122 -p -ping测试服务器是否可以ping通
processlist 显示正在执行的线程列表
status
--sleep N(second)
--count N(次数)
extended-status 显示状态变量和其值
variables 显示服务器变量
flush-privileges 让mysql重读授权表
flush-status 重置大多数的服务器状态变量
flush-tables 关闭已经打开的表
flush-threads 重置线程缓存
flush-logs 二进制和中继日志滚动
flush-hosts 清除主机的错误信息,主机尝试多次连接失败,mysql会禁止其一段时间登录
kill 杀死某线程
reload = flush-privileges
refresh = fush-logs and flush hosts 同时执行
shutdown 关闭mysql服务器进程
version 版本号和状态信息
start-slave 启动复制,启动从服务器复制线程
SQL thread
IO thread
stop-slave 停止复制线程

mysqldump(备份), mysqlimport(导入), mysqlcheck(导入)

开发视角:
数据类型
约束
创建数据库、表、索引、视图
SELECT 语句

存储引擎:也被称为表类型
MyISAM(表类型):
不支持事务,表锁
.frm 表结构定义文件
.MYD 表数据
.MYI 索引

InnoDB表 事务,行锁
.frm 表结构
.ibd 表空间(数据和索引)

mysql: mysql库: MyISAM
mysql> SHOW TABLE STATUS LIKE 'user'\G; 显示表所使用的存储引擎
mysql> SHOW ENGINES;

程序语言连接数据的方式:
动态SQL 通过函数或方法与数据库服务器建立连接,将语句发至服务器
嵌入式SQL 连接之前需要编译
JDBC (Java database connection), ODBC(open database connection)

客户端组件 mysql, mysqladin, mysqldump, mysqlimport, mysqlcheck
服务器 mysqld, mysqld_safe, mysqld_multi(多实例)

my.cnf查找顺序
/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> --default-extra-file=/path/to/somefile --> ~/my.cnf

[mysqld]
[mysql]
[clent]

#mysqld --help --verbose 显示可以在my.cnf文件中配置的参数

记得勤查看错误日志

DBA 方向
开发DBA 数据库设计、SQL语句、存储过程、存储函数、触发器...
管理DBA 安装、升级、备份恢复、用户管理、权限管理、监控、性能分析、基准测试...

数据类型
数值型
精确数值
int
decimal
近似数值
float
double
real
字符型
定长 CHAR(#), BINARY(区分大小写)
变长 VARCHAR(#), VARBINARY(区分大小写)
text, blob
ENUM, SET

日期时间型
date
time
datetime
timestamp
布尔型

详解
String Data Types
TINYINT 255
SMALLINT 65535
MEDIUMINT 16M
INT 4G
BIGINT 非常大!
DECIMAL
FLOAT (fixed)
DOUBLE (fixed)
BOOL

Numeric data type attributes
NOT NULL
NULL
DEFAULT
AUTH_INCREMENT
UNSIGNED

String Data Types
CHAR 255
VARCHAR 65535
BINARY 255(fixed)
VARBINARY 65535(variable)
TINYBLOB 255(variable)
BLOB 65535(variable)
MEDIUMBLOB 16Mb(variable)
LONGBLOB 4GB(variable)
TINYTEXT 255
MEDIUMTEXT 16777215
LONGTEXT 40亿
ENUM
SET (不支持索引)

Character string type attributes
NOT NULL
NULL
DEFAULT
CHARACTER SET
COLLATION

Date and Time Data Types
DATA
TIME
DATATIME
TIMESTAMP
YEAR

AUTO_INCREMENT
整形
非空
无符号
主键或唯一键
mysql> SELECT LAST_LAST_INCRET_ID();

CREAT TABLE test(ID INT UNSIGNED AUTO_INCREMENT NOTNULL PRIMARY KEY,Name CHAR(20));

域属性,修改符

定义数据类型意义:
1. 存入的值类型
2. 占据的存储空间
3. 定长还是变长
4. 如何比较及排序
5. 是否能够索引

重点掌握数据存储类型的格式、表示的范围大小、所能够接受的修饰符

SQL语句
mysql> SHOW CHARACTER SET;
显示当前mysql服务器所支持的所有字符集
mysql> SHOW COLLATION;
各个字符集的排序规则

SQL模型
ANSI QUOTES 单绰号标识字符串,双引号和反引号引用字段名称,表名等
IGNORE_SPACE built-in function内建函数忽略空白字符
STRICT_ALL_TABLES 设置后不允许写非法字符
STRICT_TRANS_TABLES 向支持事务的表中插入非法数据会被拒绝
TRADITIONAL
mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode'; 查询SQL模型

服务器变量
按作用域分为两类
全局变量(管理员权限)
SHOW GLOBAL VARIABLES
会话变量(用户可修改)
SHOW [ SESSION ] VARIABLES

按生效时间划分为两类
动态 可即时修改
静态
写在配置文件中
通过参数传递给mysqld

动态参数调整生效方式
全局: 对当前会话无效,只对新建立会话有效
会话: 即时生效,但只对当前会话有效,关闭后失效

服务器变量@@
显示: SELECT @@{GLOBAL|SESSION}.sql_mode;
设定: SET {GLOBAL|SESSION} 变量名='value'
SET GLOBAL sql_mode='strict_trans_tables';s
设置后当前会话无效,重新建立会话生效
SET SESSION sql_mode='strict_trans_tables';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息