天天看点

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

菜鸟学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

命令两类

客户端命令

\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

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

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';

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1890557如需转载请自行联系原作者

Winthcloud