首頁 php教程 PHP开发 Mysql指令大全

Mysql指令大全

Dec 14, 2016 am 10:40 AM
mysql指令

一、連接資料庫
格式:mysql -h主機位址 -u使用者名稱 -p使用者密碼
1.1.連接到本機上的MYSQL。
先打開DOS窗口,然後進入目錄mysqlbin,再鍵入指令mysql -u root -p,回車後提示你輸密碼.
注意用戶名前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼。
如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進入到MYSQL中了,MYSQL的提示符是: mysql>

1.2連接到遠端主機上的MYSQL。

假設遠端主機的IP為:110.110.110.110,使用者名稱為root,密碼為abcd123。則鍵入以下指令:
 mysql -h110.110.110.110 -u root -p 123;(註:u與root之間可以不用加空格,其它也一樣)
1.3退出MYSQL指令: exit (回車)

1.3退出MYSQL指令: exit (回車)

二、增加使用者

格式:grant select on 資料庫.* to 使用者名稱@登入主機identified by 「密碼」

2.1 增加一個使用者test1密碼為abc,讓他可以在任何主機上登錄,並對所有資料庫有查詢、插入、修改、刪除的權限。

先用root使用者連入MYSQL,然後鍵入以下指令:

grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;
登入後複製

但增加的使用者是十分危險的,你想如某個人知道test1的密碼,那麼他就可以在internet上的任何一台電腦上登入你的mysql資料庫並對你的資料可以為所欲為為了,解決辦法見2.2。

2.2增加一個用戶test2密碼為abc,讓他只可以在localhost上登錄,並且可以對資料庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL資料庫所在的那台主機),這樣使用者也就是使用知道test2的密碼,他也無法從internet直接存取資料庫,只能透過MYSQL主機上的web頁面來存取。

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;
登入後複製

如果你不想test2有密碼,可以再打一個指令將密碼消掉。

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”
登入後複製

三、操作資料庫

3.1建立資料庫
注意:建立資料庫之前要先連接Mysql伺服器

指令:create database <資料庫名稱>

例1:建立一個名為xhkdb的資料庫

mysql> create database xhkdb;
登入後複製

mysql> show databases
登入後複製

資料庫並分配使用者
①CREATE DATABASE 資料庫名稱;
②GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 資料庫名稱.* TO 使用者名稱@localhost IDENTIFIED BY ' 'localhost' = OLD_PASSWORD('密碼');

依序執行3個指令完成資料庫建立。

注意:中文 「密碼」和「資料庫」是戶自己需要設定的。

3.2顯示資料庫

指令:show databases (注意:最後有個s)

mysql> drop database xhkdb;
登入後複製

3.3 刪除資料庫

指令:drop database <資料庫名稱>

已經確定存在的資料庫

mysql> drop database drop_database;
Query OK, 0 rows affected (0.00 sec)
登入後複製

範例2:刪除一個不確定存在的資料庫名稱

mysql> drop database drop_database;
ERROR 1008 (HY000): Can&#39;t drop database &#39;drop_database&#39;; database doesn&#39;t exist
//发生错误,不能删除&#39;drop_database&#39;数据库,该数据库不存在。
mysql> drop database if exists drop_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)//产生一个警告说明此数据库不存在
mysql> create database drop_database;
Query OK, 1 row affected (0.00 sec)
mysql> drop database if exists drop_database;//if exists 判断数据库是否存在,不存在也不产生错误
Query OK, 0 rows affected (0.00 sec)
登入後複製

3.4 連接資料庫
指令: use <資料庫名稱>
例如:如果xhkdb資料庫存在,請嘗試存取它:mysql> use xhkdb;
螢幕提示:Database changed
use 語句可以通告MySQL把db_name資料庫當作預設(目前)資料庫使用,用於後續語句。這個資料庫保持為預設資料庫,直到語段的結尾,或直到發布一個不同的USE語句:

mysql> USE db1;
mysql> SELECT COUNT(*) FROM mytable; # selects from db1.mytable
mysql> USE db2;
mysql> SELECT COUNT(*) FROM mytable; # selects from db2.mytable
登入後複製

使用USE語句為一個特定的當前的資料庫做標記,不會阻礙您存取其它資料庫中的表。下面的範例可以從db1資料庫存取作者表,並從db2資料庫存取編輯表:

mysql> USE db1;
mysql> SELECT author_name,editor_name FROM author,db2.editor
 ->  WHERE author.editor_id = db2.editor.editor_id;
登入後複製

要退出資料庫或連接其他資料庫直接 user '其他資料庫名稱'就可以了。

3.5目前選擇資料庫
指令:mysql> select database();
MySQL中SELECT指令類似其他程式語言裡的print或write,你可以用它來顯示一個字串、數字、數學運算式的結果等等。如何使用MySQL中SELECT指令的特殊功能?

(1).顯示MYSQL的版本

mysql> select version(); 
+-----------------------+ 
| version()    | 
+-----------------------+ 
| 6.0.4-alpha-community | 
+-----------------------+ 
1 row in set (0.02 sec)
登入後複製

(2). 顯示當前時間

mysql> select now(); 
+---------------------+ 
| now()    | 
+---------------------+ 
| 2009-09-15 22:35:32 | 
+---------------------+ 
1 row in set (0.04 sec)
登入後複製

(3). 顯示年月日

SELECT DAYOFMONTH(CURRENT_DATE); 
+--------------------------+ 
| DAYOFMONTH(CURRENT_DATE) | 
+--------------------------+ 
|      15 | 
+--------------------------+ 
1 row in set (0.01 sec) 
  
SELECT MONTH(CURRENT_DATE); 
+---------------------+ 
| MONTH(CURRENT_DATE) | 
+---------------------+ 
|     9 | 
+---------------------+ 
1 row in set (0.00 sec) 
  
SELECT YEAR(CURRENT_DATE); 
+--------------------+ 
| YEAR(CURRENT_DATE) | 
+--------------------+ 
|    2009 | 
+--------------------+ 
1 row in set (0.00 sec)
登入後複製

(4).顯示字串

mysql> SELECT "welecome to my blog!"; 
+----------------------+ 
| welecome to my blog! | 
+----------------------+ 
| welecome to my blog! | 
+----------------------+ 
1 row in set (0.00 sec)
登入後複製

(5).當計算字串器用

select ((4 * 4) / 10 ) + 25; 
+----------------------+ 
| ((4 * 4) / 10 ) + 25 | 
+----------------------+ 
|    26.60 | 
+----------------------+ 
1 row in set (0.00 sec)
登入後複製

(6).串聯字串

select CONCAT(f_name, " ", l_name) 
AS Name
from employee_data 
where title = &#39;Marketing Executive&#39;; 
+---------------+ 
| Name   | 
+---------------+ 
| Monica Sehgal | 
| Hal Simlai | 
| Joseph Irvine | 
+---------------+ 
3 rows in set (0.00 sec)
登入後複製

注意:這裡用到CONCAT()函數,用來把字串串接起來。另外,我們也用到以前學到的AS給結果列'CONCAT(f_name, " ", l_name)'起了個假名

四、對表的操作
4.1建立表
指令:create table <表名> ( <字段名1> <類型1> [,..<字段名n> <類型n>]);
例如,建立一個名為MyClass的表

mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default &#39;0&#39;,
> degree double(16,2));
登入後複製

4.2獲取表結構
命令: desc 表名,或show columns from 表名

mysql> desc MyClass;
mysql> show columns from MyClass;
登入後複製

使用MySQL数据库desc 表名时,我们看到Key那一栏,可能会有4种值,即' ','PRI','UNI','MUL'。
(1).如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列;
(2).如果Key是PRI, 那么该列是主键的组成部分;
(3).如果Key是UNI, 那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL);
(4).如果Key是MUL, 那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL。
如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是PRI,又是UNI,那么"desc 表名"的时候,显示的Key值按照优先级来显,PRI->UNI->MUL。那么此时,显示PRI。
一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键。
一个唯一性索引列可以显示为MUL, 如果多列构成了一个唯一性复合索引,因为虽然索引的多列组合是唯一的,比如ID+NAME是唯一的,但是没一个单独的列依然可以有重复的值,只要ID+NAME是唯一的即可。

4.3删除表
命令:drop table <表名>
例如:删除表名为 MyClass 的表

mysql> drop table MyClass;
登入後複製

DROP TABLE用于取消一个或多个表。您必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用本语句要小心!
注意:对于一个带分区的表,DROP TABLE会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据。DROP TABLE还会取消与被取消

的表有关联的分区定义(.par)文件。
对与不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会生成一个NOTE。
RESTRICT和CASCADE可以使分区更容易。目前,RESTRICT和CASCADE不起作用。

4.4向表插入数据
命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
例如:往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99, 编号为3 的名为

Wang 的成绩为96.5。
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
注意:insert into每次只能向表中插入一条记录。

4.5查询表
(1)、查询所有行
命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >
例如:查看表 MyClass 中所有数据
mysql> select * from MyClass;
(2)、查询前几行数据
例如:查看表 MyClass 中前2行数据
mysql> select * from MyClass order by id limit 0,2;
select一般配合where使用,以查询更精确更复杂的数据。

4.6删除表
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为1 的记录
mysql> delete from MyClass where id=1;

4.7修改表中的数据
语法:update 表名 set 字段=新值,… where 条件
mysql> update MyClass set name='Mary' where id=1;

例子1:单表的MySQL UPDATE语句:

 UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]
登入後複製

例子2:多表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
登入後複製

UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。


4.8增加表字段
命令:alter table 表名 add字段 类型 其他;
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default '0'[/code]
加索引:mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子: mysql> alter table employee add index emp_name (name);
加主关键字的索引:mysql> alter table 表名 add primary key (字段名);
例子: mysql> alter table employee add primary key(id);
加唯一限制条件的索引:mysql> alter table 表名 add unique 索引名 (字段名);
例子: mysql> alter table employee add unique emp_name2(cardnumber);
删除某个索引:mysql> alter table 表名 drop index 索引名;
例子: mysql>alter table employee drop index emp_name;
增加字段:mysql> ALTER TABLE table_name ADD field_name field_type;
修改原字段名称及类型:mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
修改字段类型:mysql>ALTER TABLE table_name MODIFY colum_name field_type new_type
删除字段:MySQL ALTER TABLE table_name DROP field_name;

4.9修改表名
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass

mysql> rename table MyClass to YouClass;
登入後複製

当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。
如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。
RENAME TABLE 在 MySQL 3.23.23 中被加入。


五、备份数据

命令在DOS的[url=file://\\mysql\\bin]\\mysql\\bin[/url]目录下执行
(1).导出整个数据库
导出文件默认是存在mysql\bin目录下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
(2).导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql
(3).导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
(4).带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
例如,将aaa库备份到文件back_aaa中:

[root@test1 root]# cd /home/data/mysql
[root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa
登入後複製

六、一个完整的数据库创建实例

drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
 id int(3) auto_increment not null primary key,
 name char(10) not null,
 address varchar(50) default &#39;&#39;深圳&#39;&#39;,
 year date
); //建表结束
 
//以下为插入字段
insert into teacher values(&#39;&#39;&#39;&#39;,&#39;&#39;glchengang&#39;&#39;,&#39;&#39;深圳一中&#39;&#39;,&#39;&#39;1976-10-10&#39;&#39;);
insert into teacher values(&#39;&#39;&#39;&#39;,&#39;&#39;jack&#39;&#39;,&#39;&#39;深圳一中&#39;&#39;,&#39;&#39;1975-12-23&#39;&#39;);
登入後複製

注:在建表中
(1)、将ID设为长度为3的数字字段:int(3);并让它每个记录自动加一:auto_increment;并不能为空:not null;而且让他成为主字段primary key。
(2)、将NAME设为长度为10的字符字段
(3)、将ADDRESS设为长度50的字符字段,而且缺省值为深圳。

如果你在mysql提示符键入上面的命令也可以,但不方便调试。
(1)、你可以将以上命令原样写入一个文本文件中,假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录[url=file://\\mysql\\bin]\

\mysql\\bin[/url],然后键入以下命令:mysql -uroot -p密码 < c:\\school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。
(2)、或者进入命令行后使用 mysql> source c:\\school.sql; 也可以将school.sql文件导入数据库中。

以上就是完整版的Mysql命令大全,希望对大家熟练使用Mysql命令有所帮助。


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)