MySQL 部分用法--幫助命令

1.NT上操作mysql(管理員身份運行dos)

啓動:NET START mysql 停止:NET STOP mysql

殺死MySQL服務器:C:\mysql\bin\mysqladmin -u root shutdown

2.frmMYIMYD 分別是MyISAM 表的表結構\索引\數據文件

control-D斷開\c取消命令

3.1 語句

連接MySQL服務器mysql h 主機名 –u 用戶名 –p 用戶密碼 如果你在一個表上有索引SHOW INDEX FROM tbl_name生成有關它們的信息

當前是哪個數據庫mysql> SELECT DATABASE();

當前數據庫包含哪些表mysql> SHOW TABLES;

查看錶結構mysql> DESCRIBE 表名;

查看服務器上當前存在什麼數據庫mysql> SHOW DATABASES;

如果test數據庫存在,嘗試存取它mysql> USE test// USE語句,必須在一個單行上給出,不需要一個分號

創建數據庫mysql> CREATE DATABASE 庫名;

創建數據庫中的表create table TABLENAME (NAME1 int, NAME2 char(10), …… );

刪除數據庫前,有提示mysqladmin drop databasename

直接刪除數據庫,不提醒drop database name

//drop database if exists school; //如果存在SCHOOL則刪除

重命名錶:mysql > alter table t1 rename t2;

備份數據庫shell> mysqldump -h host -u root -p dbname >dbname_backup.sql

恢復數據庫shell> mysqladmin -h myhost -u root -p create dbname

表中增加字段

alter table dbname add column userid int(11) not null primary key auto_increment;

幫助命令後: \h := help := \?

\?同‘help’。

Print\p打印當前命令

Clear\c清除命令。

Prompt\R改變提示符

Connect\r連接服務器,可選數據庫和主機。

Quit\q退出

Delimiter\d設置定界符,

Rehash\#徹底重建無用信息

Ego\G發送命令到服務器,直顯結果。

Source\.執行一個SQL腳本,

Exit\q退出,同quit

Status\s取得服務器信息

Go\g發送命令到服務器

Tee\T設置輸出文件,並追加。

Help\h顯示幫助

Use\u使用另一個數據庫。

Notee\t不能寫入輸出文件。

Warnings\W每一條語句後顯警告。

Nowarning\w不顯警告

修改mysql中用戶密碼

#在控制檯上輸入

bash$ mysql -u root mysql #mysql客戶程序

mysqlupdate user set password=password("new password") where user='hunte';

mysqlflush privileges; //刷新數據庫

mysqlquit

bash$ mysql -u root mysql

mysqlset password for hunte=password('new password');

mysqlquit

bash$ mysqladmin -u root "old password" "new password"

mysql 改了root密碼後無法登錄:-uroot之間不留空格 mysql -uroot -p

導入/

導出表:mysqldump --opt school > school.sql

註釋:將數據庫school中的表全部備份到school.sql文件,school.sql是一個文本文件,文件名任取。

mysqldump --opt school teacher student > school.teacher.student.sql

註釋:將數據庫school中的teacher表和st?nt表備份到school.teacher.student.sql文件,school.teacher.student.sql是一個文本文件,文件名任取,打開看看你會有新發現。

導入表:mysql>create database school; mysql>use school;

mysql>source school.sql; (或將school.sql換爲school.teacher.sql / school.teacher.st?nt.sql)

導出數據庫:mysqldump --databases db1 db2 > db1.db2.sql

註釋:將數據庫dbldb2備份到db1.db2.sql文件,db1.db2.sql是一個文本文件,文件名任取。(舉個例子:mysqldump -h host -u user -p pass --databases dbname > file.dump就是把

host上的以名字user,口令pass的數據庫dbname導入到文件file.dump中。)

導入數據庫:mysql < db1.db2.sql

複製數據庫:mysqldump --all-databases > all-databases.sql

註釋:將所有數據庫備份到all-databases.sql文件,all-databases.sql是一個文本文件,文件名任取。

導入數據庫

mysql>drop database a;

mysql>drop database b;

mysql>drop database c;

mysql>source all-databases.sql; (exit退出mysqlmysql < all-databases.sql)

測試:進入安裝有MYSQLDUMP的文件夾:

mysqldump -h localhost -u root -p lwf_db shop> d:\shop.sql

//-h地址 –u用戶名 –p數據庫

查詢問題

1.不支持INNOT IN

MySQL中下列語句還不能工作:

SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);

然而,在很多情況下,你可以重寫查詢,而不用子選擇:

SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL

2.MySQL還不支持Oracle SQL的擴展:SELECT ... INTO TABLE ....,相反MySQL支持ANSI SQL句法INSERT INTO ... SELECT ...,基本上他們是一樣的。另外,你可使用SELECT INTO OUTFILE...CREATE TABLE ... SELECT解決你的問題。

句法與語法

大小寫問題

MySQLwindows下是不區分大小寫的;在linux下表名區分大小寫;如何讓在windows下大小寫敏感,相應的更改windowsMySQL的設置就行了。在MySQL的配置文件my.ini中增加一行:lower_case_table_names = 0其中0:區分大小寫,1:不區分大小寫

MySQLLinux下數據庫名、表名、列名、別名大小寫規則是這樣的:

1、數據庫名與表名是嚴格區分大小寫的;

2、表的別名是嚴格區分大小寫的;

3、列名與列的別名在所有的情況下均是忽略大小寫的;

4、變量名也是嚴格區分大小寫的;

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;這樣就是錯誤的大小寫必須一致。

演示引號和轉義如何工作

mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';

+-------+---------+-----------+--------+--------+

| hello | "hello" | ""hello"" | hel'lo | 'hello |

+-------+---------+-----------+--------+--------+

mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";

+-------+---------+-----------+--------+--------+

| hello | 'hello' | ''hello'' | hel"lo | "hello |

+-------+---------+-----------+--------+--------+

引號/斜線

NUL ASCII 0。 用'\0'(一個反斜線和一個ASCII '0')表示它。

\ ASCII 92, 反斜線。用'\\'表示。

' ASCII 39, 單引號。用“\'”表示。

" ASCII 34, 雙引號。用“\"”表示。

如果標識符是一個限制詞或包含特殊字符用單引號引用。

select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;

+----------------------+------+------+------+

| @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 |

+----------------------+------+------+------+

| 5 | 5 | 1 | 4 |

+----------------------+------+------+------+

(這裏,不得不使用 := 句法,因爲 = 是爲比較保留的)

註釋句法

MySQL服務器支持# to end of line-- to end of line/* in-line or multiple-line */註釋風格:

mysql> select 1+1; # This comment contins to the end of line

mysql> select 1+1; -- This comment contins to the end of line

mysql> select 1 /* this is an in-line comment */ + 1;

注意--註釋風格要求你在--以後至少有一個空格!

語句用法

expr BETWEEN min AND max

如果expr對大於或等於minexpr是小於或等於maxBETWEEN返回1,否則它返回0。如果所有的參數類型是一樣得,這等價於表達式(min <= expr AND expr <= max)。第一個參數(expr)決定比較如何被執行。如果expr是一個大小寫不敏感的字符串表達式,進行一個大小寫不敏感的字符串比較。如果expr是一個大小寫敏感的字符串表達式,進行一個大小寫敏感的字符串比較。如果expr是一個整數表達式,進行整數比較。否則,進行一個浮點(實數)比較。

mysql> select 1 BETWEEN 2 AND 3; -> 0

mysql> select 'b' BETWEEN 'a' AND 'c'; -> 1

mysql> select 2 BETWEEN 2 AND '3'; -> 1

mysql> select 2 BETWEEN 2 AND 'x-3'; -> 0 //大小比較,->是返回“真/假”值

expr IN (val,...)

如果expr是在IN表中的任何值,返回1,否則返回0。如果所有的值是常數,那麼所有的值根據expr類型被計算和排序,然後項目的搜索是用二進制的搜索完成。這意味着如果IN值表全部由常數組成,IN是很快的。如果expr是一個大小寫敏感的字符串表達式,字符串比較以大小寫敏感方式執行。

mysql> select 2 IN (0,3,5,'wefwf'); -> 0

mysql> select 'wefwf' IN (0,3,5,'wefwf'); -> 1

expr NOT IN (val,...)NOT (expr IN (val,...))相同。

ISNULL(expr)如果exprNULLISNULL()返回1,否則它返回0

mysql> select ISNULL(1+1); -> 0

mysql> select ISNULL(1/0); -> 1

注意,使用=NULL的值比較總爲假!

expr IN (val,...)

如果expr是在IN表中的任何值,返回1,否則返回0。如果所有的值是常數,那麼所有的值根據expr類型被計算和排序,然後項目的搜索是用二進制的搜索完成。這意味着如果IN值表全部由常數組成,IN是很快的。如果expr是一個大小寫敏感的字符串表達式,字符串比較以大小寫敏感方式執行。

mysql> select 2 IN (0,3,5,'wefwf'); -> 0

mysql> select 'wefwf' IN (0,3,5,'wefwf'); -> 1

expr NOT IN (val,...) NOT (expr IN (val,...))相同。

ISNULL(expr) 如果exprNULLISNULL()返回1,否則它返回0

mysql> select ISNULL(1+1); -> 0

mysql> select ISNULL(1/0); -> 1

注意,使用=NULL的值比較總爲假!

COALESCE(list) 回來list中第一個非NULL的單元。 //coalesce接合 coal

mysql> select COALESCE(NULL,1); -> 1

mysql> select COALESCE(NULL,NULL,NULL); -> NULL

INTERVAL(N,N1,N2,N3,...) //interval間隔, 距離

如果N< N1,返回0,如果N< N2,返回1等等。所有的參數被當作整數。爲了函數能正確地工作,它要求N1<N2<N3< ...<Nn。這是因爲使用二進制搜索(很快)//與最先大於第一個數的間隔幾個位置。

mysql> select INTERVAL(23, 1, 15, 17, 30, 44, 200); -> 3

mysql> select INTERVAL(10, 1, 10, 100, 1000); -> 2

mysql> select INTERVAL(22, 23, 30, 44, 200); -> 0

ALTER TABLE句法

重命名錶,從t1t2mysql> ALTER TABLE t1 RENAME t2;

爲了改變列a,從INTEGER改爲TINYINT NOT NULL(名字一樣),並且改變列b,從CHAR(10)改爲CHAR(20),同時重命名它,從b改爲c

mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

增加一個新TIMESTAMP列,名爲d

mysql> ALTER TABLE t2 ADD d TIMESTAMP;

在列d上增加一個索引,並且使列a爲主鍵

mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);

刪出列c

mysql> ALTER TABLE t2 DROP COLUMN c;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章