在windows下载运行中输入cmd,然后输入以下命令进行登陆:
mysql -h localhost -p –urollen
其中-h localhost表示是运行在本机的MySQL服务器,-p选项用于告知MySQL要提示输入密码。-urollen表示使用用户rollen进行登陆。然后根据提示输入密码就可以进入了,界面如下:
如果我们想为mysql的cookbook数据库创建一个用户的话,可以使用下面的命令创建了一个用户名为rollen,密码为rollenholt的用户:
grant all on cookbook.* to 'rollen'@'localhost' inentified by 'rollenholt';
当然如果要使用一个已有的账户访问cookbook数据库,那么只需要去掉上面语句的“inentified by 'rollenholt'”部分,如果不去掉的话,会修改这个用户的密码的、
当然如果你想访问的mysql服务器没有在本机的话,比如说在xyz.com上,我们可以使用:
grant all on cookbook.* to 'rollen'@'xyz.com' inentified by 'rollenholt';
但是需要注意的是grant语句只能被具有管理员权限的用户用来创建其他账户。
查看当前所有的数据库,然后使用cookbook数据库作为默认数据库,接着显示cookbook数据库中所有的表,我们可以使用下面的sql语句:
show databases; use cookbook show tables;
下面我们来创建一个表,然后插入一些数据吧:
create table limbs (thing varchar(20), legs int, arms int); insert into limbs (thing, legs, arms) values ('human',2,2); insert into limbs (thing, legs, arms) values ('insect',6,2); insert into limbs (thing, legs, arms) values ('squid',0,10); insert into limbs (thing, legs, arms) values ('peg leg pete',1,2); insert into limbs (thing, legs, arms) values ('space alien',null,null);
我们可以使用下面的语句来查看表limbs中所有的条目:
select * from limbs;
如果想退出mysql的话,那么只需要输入:quit命令就可以了。
之前说过使用mysql -h localhost -p -urollen登录mysql,其实也可以做hijack在-p后面(没有空格)直接输入密码的,但是这种方法很不推荐,因为在多用户的机器上使用诸如ps(他报告进程信息)等工具的其他用户来说密码是可见的。
mysql的选项文件,如果是windows环境,我们在mysql的安装目录下找my.ini文件,如果unix环境的话,可以在home目录下的my.cnf文件,还存在全局的可选项文件,位于/etc/my.cnf或者mysql安装目录下的my.cnf文件。
如果想查看mysql从选项文件中都读取了那些选项,我们可以使用下面的命令:
C:\Users\rollen>mysql --print-defaults mysql would have been started with the following arguments: --port=3306 --default-character-set=latin1 C:\Users\rollen>mysql --print-defaults client mysql would have been started with the following arguments: --port=3306 --default-character-set=latin1 client C:\Users\rollen>mysql --print-defaults client mysql mysql would have been started with the following arguments: --port=3306 --default-character-set=latin1 client mysql
后两个表示在client和mysql组中查找选项。
我们需要为mysql的选项文件设置权限,防止其他用户进行读取,如果是windows下的话,可以使用windows资源管理器来设置文件权限,unix的话,可以使用:chmod 600 .my.cnf来做到这一点。
mysql语句一般使用分号(;)作为结尾的,但是你也可以使用\g来代替分号,比如:
select now(); -> select ->now()\g
如果你已经输入了一行语句,但是又不想执行他们,这个时候可以使用\c选项。如下:
select now()\c
我们其实没必要在mysql命令行模式下输入命令,这样容易出错,如果想让mysql从文件中读取语句的话,
可以在命令行中使用:mysql cookbook <filename
或者在mysql会话中使用:source filename
比如我在d盘根目录下有一个mysql.sql文件,可以使用:
source d:/mysql.sql
需要注意的是.sql文件本身可以包含source或者\.命令来包含其他 的脚本。
如果想让mysql从其他的程序中读取语句,可以使用管道
如果想直接在mysql的命令行中执行给定的语句的话,可以使用-e选项,例如:
mysql -e "select count(*) from limbs" cookbook
如果想将查询结果转化为xml或者html输出的话,可以使用mysql -X或者mysql –H
比如:mysql -X -e "select * from limbs" cookbook -prollenholt -urollen
mysql -H -e "select * from limbs" cookbook -prollenholt –urollen
有时候我们会遇到这样的问题,查询结果很长,杂乱无章的显示在屏幕上,这个时候我们可以使用垂直的生成方式,这个时候使用\G选项。
如下:
比如:show full columns from limbs\G
通过在mysql中使用--tee命令选项或者\T命令你可以记录mysql绘画的所有或者部分。
在unix中你的第二个选择是历史文件,mysql维护一份你的语句记录,保存在home目录下的.mysql_history文件。
在SQL语句中使用用户自定义的变量。
在select语句中复制给用户变量的语法是@var_name := value。变量可以用在以后语句中表达式可用的任何地方。
mysql> select @name := thing from limbs; +----------------+ | @name := thing | +----------------+ | human | | insect | | squid | | peg leg pete | | space alien | +----------------+ 5 rows in set (0.00 sec) mysql> select @name; +-------------+ | @name | +-------------+ | space alien | +-------------+ 1 row in set (0.00 sec)
如果要将一个变量显示的设置为某一个值的话,可以使用set语句。set语句可以使用“:=”或者“=”来进行赋值。
mysql> set @sum = 4+7; Query OK, 0 rows affected (0.00 sec) mysql> select @sum; +------+ | @sum | +------+ | 11 | +------+ 1 row in set (0.00 sec)
也可以将select的结果赋值给变量:
mysql> set @max_limbs = (select max(arms+legs) from limbs); Query OK, 0 rows affected (0.00 sec) mysql> select @max_limbs; +------------+ | @max_limbs | +------------+ | 10 | +------------+ 1 row in set (0.00 sec)
给定变量的值会一直持续到你付给它另外一个值或者你的mysql绘画结束为止。人一个先出现都可。
另外用户变量的名称不是大小写敏感的。
我们还可以使用mysql作为计算器比如:
mysql> select (3+3) / sqrt(9); +-----------------+ | (3+3) / sqrt(9) | +-----------------+ | 2 | +-----------------+ 1 row in set (0.00 sec)
如下代码说明大小写不敏感:
mysql> select 'ABC' ='abc'; +--------------+ | 'ABC' ='abc' | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec) mysql> select 'A' = 'B'; +-----------+ | 'A' = 'B' | +-----------+ | 0 | +-----------+ 1 row in set (0.00 sec)