在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)