①.、对于命令控来说,在cmd命令下行下操作很方便,但有时需要直接在命令行床空执行mysql这样的命令,会出现"mysql不是内部或外部命令"这样的错误提示,原因是mysql其实是一个exe文件,存放于myql安装路径/bin下,所以呢需要将mysql的安装路径配置到path环境变量中,如此以后就不用每次都cd到mysql路径下了;
已经连接上mysql了,此时此刻呢我们可以使用dml、sql语言来创建我们自己的数据库了;
创建成功!
注意,创建table之前一定要use databasename;
你能用这个命令得到mysqld服务器缺省缓冲区大小:
shellmysqld--help
这个命令生成一张所有mysqld选项和可配置变量的表.输出包括缺省值并且看上去象这样一些东西:
如果有一个mysqld服务器正在运行,通过执行这个命令,你可以看到它实际上使用的变量的值:
shellmysqladminvariables
back_log
connect_timeout
mysqld服务器在用Badhandshake(糟糕的握手)应答前正在等待一个连接报文的秒数.
delayed__timeout
一个InsertDELAYED线程应该在终止之前等待Insert语句的时间.
delayed__limit
在插入delayed__limit行后,InsertDELAYED处理器将检查是否有任何Select语句未执行.如果这样,在继续前执行允许这些语句.
delayed_queue_size
应该为处理InsertDELAYED分配多大一个队列(以行数).如果排队满了,任何进行InsertDELAYED的客户将等待直到队列又有空间了.
flush_time
如果这被设置为非零值,那么每flush_time秒所有表将被关闭(以释放资源和sync到磁盘).
interactive_timeout
服务器在关上它前在一个交互连接上等待行动的秒数.一个交互的客户被定义为对mysql_real_connect()使用CLIENT_INTERACTIVE选项的客户.也可见wait_timeout.
join_buffer_size
key_buffer_size
long_query_time
如果一个查询所用时间超过它(以秒计),Slow_queries记数器将被增加.
max_allowed_packet
一个包的最大尺寸.消息缓冲区被初始化为net_buffer_length字节,但是可在需要时增加到max_allowed_packet个字节.缺省地,该值太小必能捕捉大的(可能错误)包.如果你正在使用大的BLOB列,你必须增加该值.它应该象你想要使用的最大BLOB的那么大.
max_connections
max_connect_errors
如果有多于该数量的从一台主机中断的连接,这台主机阻止进一步的连接.你可用FLUSHHOSTS命令疏通一台主机.
max_delayed_threads
不要启动多于的这个数字的线程来处理InsertDELAYED语句.如果你试图在所有InsertDELAYED线程在用后向一张新表插入数据,行将入,就像DELAYED属性没被指定那样.
max_join_size
可能将要读入多于max_join_size个记录的联结将返回一个错误.如果你的用户想要执行没有一个Where子句、花很长时间并且返回百万行的联结,设置它.
max_sort_length
在排序BLOB或TEXT值时使用的字节数(每个值仅头max_sort_length个字节被使用;其余的被忽略).
max_tmp_tables
(该选择目前还不做任何事情).一个客户能同时保持打开的临时表的最大数量.
net_buffer_length
通信缓冲区在查询之间被重置到该大小.通常这不应该被改变,但是如果你有很少的内存,你能将它设置为查询期望的大小.(即,客户发出的SQL语句期望的长度.如果语句超过这个长度,缓冲区自动地被扩大,直到max_allowed_packet个字节.)
record_buffer
每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区.如果你做很多顺序扫描,你可能想要增加该值.
sort_buffer
table_cache
tmp_table_size
如果一张临时表超出该大小,MySQL产生一个Thetabletbl_nameisfull形式的错误,如果你做很多高级GROUPBY查询,增加tmp_table_size值.
thread_stack
wait_timeout
服务器在关闭它之前在一个连接上等待行动的秒数.也可见interactive_timeout.
MySQL使用是很具伸缩性的算法,所以呢你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能.
如果你有很多内存和很多表并且有一个中等数量的客户,想要最大的性能,你应该一些象这样的东西:
如果你有较少的内存和大量的连接,使用这样一些东西:
-Orecord_buffer=100k
或甚至:
如果有很多连接,"交换问题"可能发生,除非mysqld已经被配置每个连接使用很少的内存.当然如果你对所有连接有足够的内存,mysqld执行得更好.
注意,如果你改变mysqld的一个选项,它实际上只对服务器的那个例子保持.
为了明白一个参数变化的效果,这样做:
保证--help选项是最后一个;否则,命令行上在它之后列出的任何选项的效果将不在反映在输出中.
打开我的电脑,属性,高级,环境变量,在系统变量里选择PATH,在其后添加路径
mySQL装好后配置环境变量的步骤如下:
我们需要准备的材料分别是:电脑、Mysql.
①.、首先,查找到mysql安装目录,例如:D:\xampp\mysql.
mysql变量的术语分类:
①用户变量:以"@"开始,形式为"@变量名"
GLOBAL
变量名
或者
set
declare语句专门用于定义局部变量.set语句是设置不同类型的变量,包括会话变量和全局变量
通俗理解术语之间的区别:
局部变量与用户变量的区分在于两点:
用户变量是以"@"开头的.局部变量没有这个符号.
定义变量不同.用户变量使用set语句,局部变量使用declare语句定义
作用范围.局部变量只在begin-end语句块之间有效.在begin-end语句块运行完之后,局部变量就消失了.
所以,最后它们之间的层次关系是:变量包括局部变量和用户变量.用户变量包括会话变量和全局变量.
使用备忘,set
@var
若没有指定GLOBAL
或SESSION
,那么默认将会定义用户变量
两种方式定义用户变量:
①"=",如
@a
总结:使用select
和set设置变量的区别,set可以使用以上两种形式设置变量.而select只能使用":="的形式设置变量
@a;"
显示变了的值为null.说明,未定义的变量初始化是null
实际中的问题
设置常量对group_concat()的配置影响:
SET
手册中提到设置的语法是这样的:
[SESSION
|
GLOBAL]
group_concat_max_len
=
val;
以下两种形式都能达到达到同样的效果,但是有什么区别?
global可以省略,那么就变成了:SET
之前的理解不怎么准确.现在对加深理解后的地方进行总结.
mysql中变量的层次关系是:大体包括用户变量和系统变量.系统变量包括系统会话变量和系统全局变量.
相互之间的区别:
因为用户变量就是用户定义的变量,系统变量就是mysql定义和维护的变量.所以,用户变量与系统变量的区别在于,是谁在管理这些变量.mysql一启动的时候就会读取系统变量(这样做目的是可以确定mysql的以何种机制或模式运行).
@@varible"的形式去改变系统变量的值,但是并不涉及到定义系统变量.用户变量是可以自己定义(初始化).系统变量按照只是在改变值.
局部变量只在begin-end语句块中定义并有效.执行到该语句块之后就消失了.定义的方式有明显的特点,使用declare语句.
使用系统变量理论上是可以使用两种形式:
前面带有符号"@@"
符号省略.比如我会看的如下形式:CURRENT_USER.但是,约定系统变量要使用"@@变量名"的形式,就是在前面加上符号"@@"