天天看點

MySQL常用指令總結

1.連接配接資料庫:

MySQL常用指令總結

2.

系統管理

連接配接MySQL

格式: mysql -h 主機位址 -u使用者名 -p使用者密碼

例 1:連接配接到本機上的 MySQL。

hadoop@ubuntu:~$ mysql -uroot -pmysql;

例 2:連接配接到遠端主機上的 MYSQL。

hadoop@ubuntu:~$ mysql -h 127.0.0.1 -uroot -pmysql;

修改新密碼

在終端輸入:mysql -u使用者名 -p密碼,回車進入Mysql。

> use mysql;

> update user set password=PASSWORD('新密碼') where user='使用者名';

> flush privileges; #更新權限

> quit; #退出

增加新使用者

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

舉例:

例 1:增加一個使用者 test1 密碼為 abc,讓他可以在任何主機上登入,并對所有資料庫有

查詢、插入、修改、删除的權限。首先用以 root 使用者連入 MySQL,然後鍵入以下指令:

mysql>grant select,insert,update,delete on *.* to root@localhost identified by 'mysql';

或者

grant all privileges on *.* to root@localhost identified by 'mysql';

然後重新整理權限設定。

flush privileges;

例 2:如果你不想 root 有密碼操作資料庫“mydb”裡的資料表,可以再打一個指令将密碼消掉。

grant select,insert,update,delete on mydb.* to root@localhost identified by '';

删除使用者

hadoop@ubuntu:~$ mysql -u使用者名 -p密碼

mysql>delete from user where user='使用者名' and host='localhost';

mysql>flush privileges;

//删除使用者的資料庫

mysql>drop database dbname;

資料庫操作

顯示所有的資料庫

mysql> show databases;(注意:最後有個 s)

MySQL常用指令總結

建立資料庫

mysql> create database test;

連接配接資料庫

mysql> use test;

MySQL常用指令總結

檢視目前使用的資料庫

mysql> select database();

MySQL常用指令總結

目前資料庫包含的表資訊

mysql> show tables; (注意:最後有個 s)

MySQL常用指令總結

删除資料庫

mysql> drop database test;

表操作

備注:操作之前使用“use <資料庫名>”應連接配接某個資料庫。

建表

指令:create table <表名> (<字段名 1> <類型 1> [,..<字段名 n> <類型 n>]);

例子:

mysql> create table MyClass(

> id int(4) not null primary key auto_increment,

> name char(20) not null,

> sex int(4) not null default '0',

> degree double(16,2));

擷取表結構

指令: desc 表名,或者show columns from 表名

mysql> describe MyClass

mysql> desc MyClass;

mysql> show columns from MyClass;

MySQL常用指令總結

删除表

指令:drop table <表名>

例如:删除表名為 MyClass 的表

mysql> drop table MyClass;

插入資料

指令:insert into <表名> [( <字段名 1>[,..<字段名 n > ])] values ( 值 1 )[, ( 值 n )]

mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);

查詢表中的資料

查詢所有行

mysql> select * from MyClass;

查詢前幾行資料

例如:檢視表 MyClass 中前 2 行資料

mysql> select * from MyClass order by id limit 0,2;

mysql> select * from MyClass limit 0,2;

删除表中資料

指令:delete from 表名 where 表達式

例如:删除表 MyClass 中編号為 1 的記錄

mysql> delete from MyClass where id=1;

修改表中資料

指令:update 表名 set 字段=新值,... where 條件

mysql> update MyClass set name='Mary' where id=1;

在表中增加字段

指令:alter table 表名 add 字段 類型 其他;

例如:在表 MyClass 中添加了一個字段 passtest,類型為 int(4),預設值為 0

mysql> alter table MyClass add passtest int(4) default '0'

更改表名

指令:rename table 原表名 to 新表名;

例如:在表 MyClass 名字更改為 YouClass

mysql> rename table MyClass to YouClass;

更新字段内容

指令:update 表名 set 字段名 = 新内容

update 表名 set 字段名 = replace(字段名, '舊内容', '新内容');

例如:文章前面加入 4 個空格

update article set content=concat('    ', content);

資料庫導入導出

從資料庫導出資料庫檔案

使用“mysqldump”指令

首先進入 DOS 界面,然後進行下面操作。

1)導出所有資料庫

格式:mysqldump -u [資料庫使用者名] -p -A>[備份檔案的儲存路徑]

2)導出資料和資料結構

格式:mysqldump -u [資料庫使用者名] -p [要備份的資料庫名稱]>[備份檔案的儲存路徑]

例 1:将資料庫 mydb 導出到 e:\MySQL\mydb.sql 檔案中。

打開開始->運作->輸入“cmd”,進入指令行模式。

c:\> mysqldump -h localhost -u root -p mydb >e:\MySQL\mydb.sql

然後輸入密碼,等待一會導出就成功了,可以到目标檔案中檢查是否成功。

例 2:将資料庫 mydb 中的 mytable 導出到 e:\MySQL\mytable.sql 檔案中。

c:\> mysqldump -h localhost -u root -p mydb mytable>e:\MySQL\mytable.sql

例 3:将資料庫 mydb 的結構導出到 e:\MySQL\mydb_stru.sql 檔案中。

c:\> mysqldump -h localhost -u root -p mydb --add-drop-table >e:\MySQL\mydb_stru.sql

備注:-h localhost 可以省略,其一般在虛拟主機上用。

3)隻導出資料不導出資料結構

格式:

mysqldump -u [資料庫使用者名] -p -t [要備份的資料庫名稱]>[備份檔案的儲存路徑]

4)導出資料庫中的Events

格式:mysqldump -u [資料庫使用者名] -p -E [資料庫使用者名]>[備份檔案的儲存路徑]

5)導出資料庫中的存儲過程和函數

格式:mysqldump -u [資料庫使用者名] -p -R [資料庫使用者名]>[備份檔案的儲存路徑]

從外部檔案導入資料庫中

1)使用“source”指令

首先進入“mysql”指令控制台,然後建立資料庫,然後使用該資料庫。最後執行下面操作。

mysql>source [備份檔案的儲存路徑]

2)使用“<”符号

首先進入“mysql”指令控制台,然後建立資料庫,然後退出 MySQL,進入 DOS 界面。最後執行下面操作。

mysql -u root –p < [備份檔案的儲存路徑]

1:使用SHOW語句找出在伺服器上目前存在什麼資料庫:

mysql> SHOW

DATABASES;

2:2、建立一個資料庫MYSQLDATA

mysql> CREATE DATABASE

MYSQLDATA;

3:選擇你所建立的資料庫

mysql> USE MYSQLDATA; (按Enter鍵出現Database changed

時說明操作成功!)

4:檢視現在的資料庫中存在什麼表

TABLES;

5:建立一個資料庫表

mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex

CHAR(1));

6:顯示表的結構:

mysql> DESCRIBE MYTABLE;

7:往表中加入記錄

mysql>

insert into MYTABLE values

(”hyq”,”M”);

8:用文本方式将資料裝入資料庫表中(例如D:/mysql.txt)

mysql> LOAD DATA LOCAL

INFILE “D:/mysql.txt” INTO TABLE

MYTABLE;

9:導入.sql檔案指令(例如D:/mysql.sql)

mysql>use

database;

mysql>source d:/mysql.sql;

10:删除表

mysql>drop TABLE

11:清空表

mysql>delete from

12:更新表中資料

mysql>update MYTABLE set sex=”f” where

name=’hyq’;

以下是無意中在網絡看到的使用MySql的管理心得,

在windows中MySql以服務形式存在,在使用前應確定此服務已經啟動,未啟動可用net

start mysql指令啟動。而Linux中啟動時可用“/etc/rc.d/init.d/mysqld

start”指令,注意啟動者應具有管理者權限。

剛安裝好的MySql包含一個含空密碼的root帳戶和一個匿名帳戶,這是很大的安全隐患,對于一些重要的應用我們應将安全性盡可能提高,在這裡應把匿名帳戶删除、

root帳戶設定密碼,可用如下指令進行:

use mysql;

delete from User where User=”";

update

User set Password=PASSWORD(’newpassword’) where

User=’root’;

如果要對使用者所用的登入終端進行限制,可以更新User表中相應使用者的Host字段,在進行了以上更改後應重新啟動資料庫服務,此時登入時可用如下類似指令:

mysql

-uroot -p;

mysql -uroot -pnewpassword;

mysql mydb -uroot -p;

mysql mydb

-uroot -pnewpassword;

上面指令參數是常用參數的一部分,詳細情況可參考文檔。此處的mydb是要登入的資料庫的名稱。

進行開發和實際應用中,使用者不應該隻用root使用者進行連接配接資料庫,雖然使用root使用者進行測試時很友善,但會給系統帶來重大安全隐患,也不利于管理技

術的提高。我們給一個應用中使用的使用者賦予最恰當的資料庫權限。如一個隻進行資料插入的使用者不應賦予其删除資料的權限。MySql的使用者管理是通過

User表來實作的,添加新使用者常用的方法有兩個,一是在User表插入相應的資料行,同時設定相應的權限;二是通過GRANT指令建立具有某種權限的用

戶。其中GRANT的常用用法如下:

grant all on mydb.* to NewUserName@HostName identified by

“password” ;

grant usage on *.* to NewUserName@HostName identified by

“password”;

grant select,insert,update on mydb.* to NewUserName@HostName

identified by “password”;

grant update,delete on mydb.TestTable to

NewUserName@HostName identified by “password”;

要給此使用者賦予他在相應對象上的權限的管理能力,可在GRANT後面添加WITH GRANT

OPTION選項。而對于用插入User表添加的使用者,Password字段應用PASSWORD

函數進行更新加密,以防不軌之人竊看密碼。對于那些已經不用的使用者應給予清除,權限過界的使用者應及時回收權限,回收權限可以通過更新User表相應字段,

也可以使用REVOKE操作。

下面給出本人從其它資料(www.cn-java.com)獲得的對常用權限的解釋:

全局管理權限:

FILE:

在MySQL伺服器上讀寫檔案。

PROCESS: 顯示或殺死屬于其它使用者的服務線程。

RELOAD:

重載通路控制表,重新整理日志等。

SHUTDOWN: 關閉MySQL服務。

資料庫/資料表/資料列權限:

ALTER:

修改已存在的資料表(例如增加/删除列)和索引。

CREATE: 建立新的資料庫或資料表。

DELETE: 删除表的記錄。

DROP:

删除資料表或資料庫。

INDEX: 建立或删除索引。

INSERT: 增加表的記錄。

SELECT:

顯示/搜尋表的記錄。

UPDATE: 修改表中已存在的記錄。

特别的權限:

ALL: 允許做任何事(和root一樣)。

USAGE:

隻允許登入–其它什麼也不允許做。

Mysql常用指令行大全

第一招、mysql服務的啟動和停止

net stop mysql

net start mysql

第二招、登陸mysql

文法如下: mysql -u使用者名 -p使用者密碼

鍵入指令mysql -uroot -p,

回車後提示你輸入密碼,輸入12345,然後回車即可進入到mysql中了,mysql的提示符是:

mysql>

注意,如果是連接配接到另外的機器上,則需要加入一個參數-h機器IP

第三招、增加新使用者

格式:grant 權限 on 資料庫.* to 使用者名@登入主機

identified by "密碼"

如,增加一個使用者user1密碼為password1,讓其可以在本機上登入,

并對所有資料庫有查詢、插入、修改、删除的權限。首先用以root使用者連入mysql,然後鍵入以下指令:

grant select,insert,update,delete

on *.* to user1@localhost Identified by "password1";

如果希望該使用者能夠在任何機器上登陸mysql,則将localhost改為"%"。

如果你不想user1有密碼,可以再打一個指令将密碼去掉。

on mydb.* to user1@localhost identified by "";

第四招: 操作資料庫

登入到mysql中,然後在mysql的提示符下運作下列指令,每個指令以分号結束。

1、 顯示資料庫清單。

show databases;

預設有兩個資料庫:mysql和test。

mysql庫存放着mysql的系統和使用者權限資訊,我們改密碼和新增使用者,實際上就是對這個庫進行操作。

2、 顯示庫中的資料表:

show tables;

3、 顯示資料表的結構:

describe 表名;

4、 建庫與删庫:

create database 庫名;

drop database 庫名;

5、 建表:

use 庫名;

create table 表名(字段清單);

drop table 表名;

6、 清空表中記錄:

delete from 表名;

7、 顯示表中的記錄:

select * from 表名;

第五招、導出和導入資料

1. 導出資料:

mysqldump --opt test >

mysql.test

即将資料庫test資料庫導出到mysql.test檔案,後者是一個文本檔案

如:mysqldump -u root -p123456

--databases dbname > mysql.dbname

就是把資料庫dbname導出到檔案mysql.dbname中。

2. 導入資料:

mysqlimport -u root -p123456 <

mysql.dbname。

不用解釋了吧。

3. 将文本資料導入資料庫:

文本資料的字段資料之間用tab鍵隔開。

use test;

load data local infile "檔案名" into

table 表名;

mysql> SHOW DATABASES;

mysql> USE MYSQLDATA;

(按Enter鍵出現Database changed 時說明操作成功!)

mysql> SHOW TABLES;

mysql> CREATE TABLE MYTABLE

(name VARCHAR(20), sex CHAR(1));

mysql> insert into MYTABLE

values ("hyq","M");

8:用文本方式将資料裝入資料庫表中(例如D:/mysql.txt)

mysql> LOAD DATA LOCAL INFILE

"D:/mysql.txt" INTO TABLE MYTABLE;

9:導入.sql檔案指令(例如D:/mysql.sql)

mysql>use database;

mysql>drop TABLE MYTABLE;

mysql>delete from MYTABLE;

mysql>update MYTABLE set

sex="f" where name='hyq';

posted on 2006-01-10 16:21

happytian 閱讀(6) 評論(0) 編輯 收藏 收藏至365Key

13:備份資料庫

mysqldump -u root

庫名>xxx.data

14:例2:連接配接到遠端主機上的MYSQL

假設遠端主機的IP為:110.110.110.110,使用者名為root,密碼為abcd123。則鍵入以下指令:

mysql -h110.110.110.110 -uroot

-pabcd123

(注:u與root可以不用加空格,其它也一樣)

3、退出MYSQL指令: exit (回車)

=====================================================================

SHOW DATABASES;

("hyq","M");

INFILE "D:/mysql.txt" INTO TABLE

mysql>update MYTABLE set sex="f" where

name=hyq;

摘自:http://www1.xjtusky.com/article/htmldata/2004_12/3/57/article_1060_1.html

start"指令,注意啟動者應具有管理者權限。

delete from User where User="";

User set Password=PASSWORD(newpassword) where

User=root;

-uroot

-pnewpassword;

在進行開發和實際應用中,使用者不應該隻用root使用者進行連接配接資料庫,雖然使用root使用者進行測試時很友善,但會給系統帶來重大安全隐患,也不利于管理技術的提高。我們給一個應用中使用的使用者賦予最恰當的資料庫權限。如一個隻進行資料插入的使用者不應賦予其删除資料的權限。MySql的使用者管理是通過User表來實作的,添加新使用者常用的方法有兩個,一是在User表插入相應的資料行,同時設定相應的權限;二是通過GRANT指令建立具有某種權限的使用者。其中GRANT的常用用法如下:

grant

all on mydb.* to NewUserName@HostName identified by "password" ;

grant usage

on *.* to NewUserName@HostName identified by "password";

select,insert,update on mydb.* to NewUserName@HostName identified by

"password";

grant update,delete on mydb.TestTable to NewUserName@HostName

identified by "password";

若要給此使用者賦予他在相應對象上的權限的管理能力,可在GRANT後面添加WITH GRANT

函數進行更新加密,以防不軌之人竊看密碼。對于那些已經不用的使用者應給予清除,權限過界的使用者應及時回收權限,回收權限可以通過更新User表相應字段,也可以使用REVOKE操作。

隻允許登入--其它什麼也不允許做。

常用MYSQL指令

啟動:net start mySql;

  進入:mysql -u root -p/mysql -h localhost

-u root -p databaseName;

  列出資料庫:show databases;

  選擇資料庫:use databaseName;

  列出表格:show tables;

  建立資料表:mysql> CREATE TABLE mytable

(name VARCHAR(20), sex CHAR(1),

-> birth DATE, birthaddr

VARCHAR(20));

   顯示表格列的屬性:show

columns from tableName;

   修改表的結構:DESCRIBE mytable;

  建立資料庫:source fileName.txt;

  比對字元:可以用通配符_代表任何一個字元,%代表任何字元串;

  增加一個字段:alter table tabelName add

column fieldName dateType;

  增加多個字段:alter table tabelName add

column fieldName1 dateType,add columns fieldName2 dateType;

  多行指令輸入:注意不能将單詞斷開;當插入或更改資料時,不能将字段的字元串展開到多行裡,否則硬回車将被儲存到資料中;

  增加一個管理者帳戶:grant all on *.* to

user@localhost identified by "password";

  每條語句輸入完畢後要在末尾填加分号';',或者填加'\g'也可以;

  查詢時間:select now();

  查詢目前使用者:select user();

  查詢資料庫版本:select version();

  查詢目前使用的資料庫:select database();

   用文本方式将資料裝入一個資料庫表

  如果一條一條地輸入,很麻煩。我們可以用文本檔案的方式将所有記錄加入你的資料庫表中。建立一個文本檔案“mysql.txt”,每行包含一個記錄,用定位符(tab)把值分開,并且以在CREATE

TABLE語句中列出的列次序給出,例如:

abccs f

1977-07-07 china   mary f 1978-12-12 usa tom m 1970-09-02 usa

  使用下面指令将文本檔案“mytable.txt”裝載到mytable表中:mysql>

LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE pet;

  再使用如下指令看看是否已将資料輸入到資料庫表中:mysql>

select * from mytable;

(e129)

  

  1、删除student_course資料庫中的students資料表:

  rm -f student_course/students.*

  2、備份資料庫:(将資料庫test備份)

  mysqldump -u root -p

test>c:\test.txt

  備份表格:(備份test資料庫下的mytable表格)

  mysqldump -u root -p test

mytable>c:\test.txt

  将備份資料導入到資料庫:(導回test資料庫)

  mysql -u root -p

test<c:\test.txt

  3、建立臨時表:(建立臨時表zengchao)

  create temporary table zengchao(name

varchar(10));

  4、建立表是先判斷表是否存在

  create table if not exists

students(……);

  5、從已經有的表中複制表的結構

  create table table2 select * from

table1 where 1<>1;

  6、複制表

table1;

  7、對表重新命名

  alter table table1 rename as

table2;

  8、修改列的類型

  alter table table1 modify id int

unsigned;//修改列id的類型為int unsigned

  alter table table1 change id sid int

unsigned;//修改列id的名字為sid,而且把屬性修改為int unsigned

  9、建立索引

  alter table table1 add index ind_id

(id);

  create index ind_id on

table1 (id);

  create unique index

ind_id on table1 (id);//建立唯一性索引

  10、删除索引

  drop index idx_id on table1;

  alter table table1 drop index

ind_id;

  11、聯合字元或者多個列(将列id與":"和列name和"="連接配接)

  select concat(id,':',name,'=') from

students;

  12、limit(選出10到20條)<第一個記錄集的編号是0>

  select * from students order by id

limit 9,10;

  13、MySQL不支援的功能

  事務,視圖,外鍵和引用完整性,存儲過程和觸發器

  14、MySQL會使用索引的操作符号

  <,<=,>=,>,=,between,in,不帶%或者_開頭的like

  15、使用索引的缺點

  1)減慢增删改資料的速度;

  2)占用磁盤空間;

  3)增加查詢優化器的負擔;

  當查詢優化器生成執行計劃時,會考慮索引,太多的索引會給查詢優化器增加工作量,導緻無法選擇最優的查詢方案;

  16、分析索引效率

  方法:在一般的SQL語句前加上explain;

  分析結果的含義:

  1)table:表名;

  2)type:連接配接的類型,(ALL/Range/Ref)。其中ref是最理想的;

  3)possible_keys:查詢可以利用的索引名;

  4)key:實際使用的索引;

  5)key_len:索引中被使用部分的長度(位元組);

  6)ref:顯示列名字或者"const"(不明白什麼意思);

  7)rows:顯示MySQL認為在找到正确結果之前必須掃描的行數;

  8)extra:MySQL的建議;

  17、使用較短的定長列

  1)盡可能使用較短的資料類型;

  2)盡可能使用定長資料類型;

  a)用char代替varchar,固定長度的資料處理比變長的快些;

  b)對于頻繁修改的表,磁盤容易形成碎片,進而影響資料庫的整體性能;

  c)萬一出現資料表崩潰,使用固定長度資料行的表更容易重新構造。使用固定長度的資料行,每個記錄的開始位置都是固定記錄長度的倍數,可以很容易被檢測到,但是使用可變長度的資料行就不一定了;

  d)對于MyISAM類型的資料表,雖然轉換成固定長度的資料列可以提高性能,但是占據的空間也大;

  18、使用not null和enum

  盡量将列定義為not

null,這樣可使資料的出來更快,所需的空間更少,而且在查詢時,MySQL不需要檢查是否存在特例,即null值,進而優化查詢;

  如果一列隻含有有限數目的特定值,如性别,是否有效或者入學年份等,在這種情況下應該考慮将其轉換為enum列的值,MySQL處理的更快,因為所有的enum值在系統内都是以辨別數值來表示的;

  19、使用optimize table

  對于經常修改的表,容易産生碎片,使在查詢資料庫時必須讀取更多的磁盤塊,降低查詢性能。具有可變長的表都存在磁盤碎片問題,這個問題對blob資料類型更為突出,因為其尺寸變化非常大。可以通過使用optimize

table來整理碎片,保證資料庫性能不下降,優化那些受碎片影響的資料表。 optimize

table可以用于MyISAM和BDB類型的資料表。實際上任何碎片整理方法都是用mysqldump來轉存資料表,然後使用轉存後的檔案并重建立資料表;

  20、使用procedure analyse()

  可以使用procedure

analyse()顯示最佳類型的建議,使用很簡單,在select語句後面加上procedure analyse()就可以了;例如:

  select * from students procedure

analyse();

  select * from students

procedure analyse(16,256);

  第二條語句要求procedure

analyse()不要建議含有多于16個值,或者含有多于256位元組的enum類型,如果沒有限制,輸出可能會很長;

  21、使用查詢緩存

  1)查詢緩存的工作方式:

  第一次執行某條select語句時,伺服器記住該查詢的文本内容和查詢結果,存儲在緩存中,下次碰到這個語句時,直接從緩存中傳回結果;當更新資料表後,該資料表的任何緩存查詢都變成無效的,并且會被丢棄。

  2)配置緩存參數:

  變量:query_cache

_type,查詢緩存的操作模式。有3中模式,0:不緩存;1:緩存查詢,除非與select sql_no_cache開頭;2:根據需要隻緩存那些以select

sql_cache開頭的查詢;query_cache_size:設定查詢緩存的最大結果集的大小,比這個值大的不會被緩存。

  22、調整硬體

  1)在機器上裝更多的記憶體;

  2)增加更快的硬碟以減少I/O等待時間;

  尋道時間是決定性能的主要因素,逐字地移動磁頭是最慢的,一旦磁頭定位,從磁道讀則很快;

  3)在不同的實體硬碟裝置上重新配置設定磁盤活動;

  如果可能,應将最繁忙的資料庫存放在不同的實體裝置上,這跟使用同一實體裝置的不同分區是不同的,因為它們将争用相同的實體資源(磁頭)。

1、啟動MySQL伺服器

 兩種方法:

一是用winmysqladmin,如果機器啟動時已自動運作,則可直接進入下一步操作。 二是在DOS方式下運作 d:\mysql\bin\mysqld

 (假設mysql 安裝在d:\mysql);當然也可以 net start

mysql指令啟動。而Linux中啟動時可用“/etc/rc.d/init.d/mysqld start”指令,注 意啟動者應具有管理者權限。

 

2、進入mysql互動操作界面

  在DOS方式下,運作: d:\mysql\bin\mysql

  出現: mysql 的提示符” mysql>

“,此時已進入mysql的互動操作方式。

  如果出現 “ERROR

2003: Can′t connect to MySQL server on ′localhost′ (10061)“,說明你的MySQL還沒有啟動。

3、退出MySQL操作界面

  在mysql>提示符下輸入quit可以随時退出互動操作界面:  

  mysql> quit

  Bye

4、第一條指令(多條指令用 “,” 分隔

,一條指令可以分成多行輸入,直到出現分号”;”為止

  mysql> select

version(),current_date();

  mysql>Select (20+5)*4;

  mysql>Select

(20+5)*4,sin(pi()/3);

  mysql>Select (20+5)*4 AS

Result,sin(pi()/3); (AS: 指定假名為Result)

5、常用sql 語句

1:使用SHOW語句找出在伺服器上目前存在什麼資料庫:

mysql> SHOW DATABASES;

2:2、建立一個資料庫MYSQLDATA

mysql> Create DATABASE

MYSQLDATA;

3:選擇你所建立的資料庫

mysql> USE MYSQLDATA; (按Enter鍵出現Database

changed 時說明操作成功!)

4:檢視現在的資料庫中存在什麼表

mysql> SHOW TABLES;

5:建立一個資料庫表

mysql> Create TABLE MYTABLE (name

VARCHAR(20), sex CHAR(1));

6:顯示表的結構:

mysql> DESCRIBE MYTABLE;

7:往表中加入記錄

mysql> insert into MYTABLE values

(”hyq”,”M”);

8:用文本方式将資料裝入資料庫表中(例如D:/mysql.txt)

“D:/mysql.txt” INTO TABLE MYTABLE;

9:導入.sql檔案指令(例如D:/mysql.sql)

mysql>use database;

mysql>source d:/mysql.sql;

10:删除表

mysql>drop TABLE MYTABLE;

11:清空表

mysql>delete from MYTABLE;

12:更新表中資料

mysql>update MYTABLE set sex=”f”

where name=’hyq’;

13:插入資料

mysq>linsert into MYTABLE values (1,

‘第二章’, 0×2134545);

14:登入後使用資料庫

mysql -u root -p mysql

mysql -u root -p -h 11.11.11.11

database

15:mysql jdbc連接配接url

使用中文

jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312

[separator]

其它:

show processlist;列出每一筆聯機的資訊。

show variables;列出mysql的系統設定。

show tables from

db_name;列出db_name中所有資料表;

show

[full] columns from table_name;列出table_name中完整資訊,如欄名、類型,包括字元集編碼。

show index from table_name;

列出table_name中所有的索引。

show table

status;;列出目前資料庫中資料表的資訊。

status from db_name;;列出目前db_name中資料表的資訊。

alter table table_name engine

innodb|myisam|memory ;更改表類型

explain

table_name / describe table_name ; 列出table_name完整資訊,如欄名、類型。

show create table table_name

顯示目前表的建表語句

alter table table_name

add primary key (picid) ; 向表中增加一個主鍵

alter table table_name add column userid

int after picid 修改表結構增加一個新的字段

alter

table table_name character set gb2312 改變表的編碼

select user(); 顯示目前使用者。

select password(’root’); 顯示目前使用者密碼

select now(); 顯示目前日期

flush privileges 在不重新開機的情況下重新整理使用者權限

mysqld –default-character-set=gb2312

;設定預設字元集為gb2312

6、安全

root帳戶設定密碼,可用如下指令進行:

use

mysql;

delete from User where

User=”";

update User set

Password=PASSWORD(’newpassword’) where User=’root’;

改完重新開機 mysql 才能生效.

上面指令參數是常用參數的一部分,詳細情況可參考文檔。此處的mydb是要登入的資料庫的名稱。

在進行開發和實際應用中,使用者不應該隻用root使用者進行連接配接資料庫,雖然使用root使用者進行測試時很友善,但會給系統帶來重大安全隐患,也不利于管理技術的提高。我們給一個應用中使用的使用者賦予最恰當的資料庫權限。如一個隻進行資料插入的使用者不應賦予其删除資料的權限。MySql的使用者管理是通過

User表來實作的,添加新使用者常用的方法有兩個,一是在User表插入相應的資料行,同時設定相應的權限;二是通過GRANT指令建立具有某種權限的使用者。其中GRANT的常用用法如下:

grant all on mydb.* to

NewUserName@HostName identified by “password” ;

grant usage on *.* to

NewUserName@HostName identified by “password”;

grant select,insert,update on mydb.* to

grant all privileges on *.* to

root@localhost

select,insert,delete,update,alter,create,drop on lybbs.* to NewUserName@”%”

identified by “lybbs”;

若要給此使用者賦予他在相應對象上的權限的管理能力,可在GRANT後面添加WITH

GRANT OPTION選項。而對于用插入User表添加的使用者,Password字段應用PASSWORD

函數進行更新加密,以防不軌之人竊看密碼。對于那些已經不用的使用者應給予清除,權限過界的使用者應及時回收權限,回收權限可以通過更新User表相應字段,也可以使用REVOKE操作。

全局管理權限:

FILE: 在MySQL伺服器上讀寫檔案。

PROCESS: 顯示或殺死屬于其它使用者的服務線程。

RELOAD: 重載通路控制表,重新整理日志等。

SHUTDOWN: 關閉MySQL服務。

資料庫/資料表/資料列權限:

Alter: 修改已存在的資料表(例如增加/删除列)和索引。

Create: 建立新的資料庫或資料表。

Delete: 删除表的記錄。

Drop: 删除資料表或資料庫。

INDEX: 建立或删除索引。

Insert: 增加表的記錄。

Select: 顯示/搜尋表的記錄。

Update: 修改表中已存在的記錄。

特别的權限:

ALL: 允許做任何事(和root一樣)。

USAGE: 隻允許登入–其它什麼也不允許做。

修改預設密碼:

cd d:\mysql\bin

mysqladmin -u root -p password

123456

回車出現

Enter password: ( 注:這是叫你輸入原密碼.

剛安裝時密碼為空,是以直接回車即可)

此時mysql 中賬号 root

的密碼 被改為 123456 安裝完畢

一、引言

想使用Linux已經很長時間了,由于沒有硬性任務一直也沒有系統學*,*日由于工作需要必須使用Linux下的MySQL。本以為有Windows下使用SQL

Server的經驗,覺得在Linux下安裝MySql應該是易如反掌的事,可在真正安裝和使用MySQL時走了很多彎路,遇見很多問題,畢竟Linux和Windows本身就有很大差別。為了讓和我一樣的初學者在學*的過程中少走彎路,盡快入門,寫了此文,希望對您有所幫助。本文的Linux環境是Red

Hat 9.0,MySQL是4.0.16。

二、安裝Mysql

1、下載下傳MySQL的安裝檔案

安裝MySQL需要下面兩個檔案:

MySQL-server-4.0.16-0.i386.rpm   

   MySQL-client-4.0.16-0.i386.rpm

下載下傳位址為:http://www.mysql.com/downloads/mysql-4.0.html, 打開此網頁,下拉網頁找到“Linux x86 RPM

downloads”項,找到“Server”和“Client programs”項,下載下傳需要的上述兩個rpm檔案。

   2、安裝MySQL

   rpm檔案是Red

Hat公司開發的軟體安裝包,rpm可讓Linux在安裝軟體包時免除許多複雜的手續。該指令在安裝時常用的參數是 –ivh

,其中i表示将安裝指定的rmp軟體包,V表示安裝時的詳細資訊,h表示在安裝期間出現“#”符号來顯示目前的安裝過程。這個符号将持續到安裝完成後才停止。

   1)安裝伺服器端

   在有兩個rmp檔案的目錄下運作如下指令:

   [root@test1 local]# rpm -ivh

MySQL-server-4.0.16-0.i386.rpm

顯示如下資訊。

    warning:

MySQL-server-4.0.16-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5

Preparing...       ########################################### [100%]

1:MySQL-server     ########################################### [100%]

    。。。。。。(省略顯示)

   /usr/bin/mysqladmin -u root password

'new-password'

/usr/bin/mysqladmin -u root -h test1 password 'new-password'

   Starting mysqld daemon with databases

from /var/lib/mysql

如出現如上資訊,服務端安裝完畢。測試是否成功可運作netstat看Mysql端口是否打開,如打開表示服務已經啟動,安裝成功。Mysql預設的端口是3306。

   [root@test1 local]# netstat -nat

   Active Internet connections (servers

and established)

   Proto Recv-Q

Send-Q Local Address      Foreign Address     State   

   tcp  0  0 0.0.0.0:3306    

0.0.0.0:*      LISTEN   

上面顯示可以看出MySQL服務已經啟動。

2)安裝用戶端

   運作如下指令:

MySQL-client-4.0.16-0.i386.rpm

warning: MySQL-client-4.0.16-0.i386.rpm: V3 DSA signature: NOKEY, key ID

5072e1f5

Preparing...    ########################################### [100%]

   1:MySQL-client 

########################################### [100%]

   顯示安裝完畢。

   用下面的指令連接配接mysql,測試是否成功。

  三、登入MySQL

   登入MySQL的指令是mysql, mysql

的使用文法如下:

   mysql [-u username] [-h

host] [-p[password]] [dbname]

username 與 password 分别是 MySQL

的使用者名與密碼,mysql的初始管理帳号是root,沒有密碼,注意:這個root使用者不是Linux的系統使用者。MySQL預設使用者是root,由于初始沒有密碼,第一次進時隻需鍵入mysql即可。

   [root@test1 local]# mysql

   Welcome to the MySQL

monitor. Commands end with ; or \g.

   Your MySQL connection id is 1 to

server version: 4.0.16-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

   mysql>

   出現了“mysql>”提示符,恭喜你,安裝成功!

   增加了密碼後的登入格式如下:

   mysql -u root -p

   Enter password: (輸入密碼)

其中-u後跟的是使用者名,-p要求輸入密碼,回車後在輸入密碼處輸入密碼。

注意:這個mysql檔案在/usr/bin目錄下,與後面講的啟動檔案/etc/init.d/mysql不是一個檔案。

   四、MySQL的幾個重要目錄

   MySQL安裝完成後不象SQL

Server預設安裝在一個目錄,它的資料庫檔案、配置檔案和指令檔案分别在不同的目錄,了解這些目錄非常重要,尤其對于Linux的初學者,因為Linux本身的目錄結構就比較複雜,如果搞不清楚MySQL的安裝目錄那就無從談起深入學*。

   下面就介紹一下這幾個目錄。

   1、資料庫目錄

   /var/lib/mysql/

   2、配置檔案

/usr/share/mysql(mysql.server指令及配置檔案)

   3、相關指令

   /usr/bin(mysqladmin

mysqldump等指令)

   4、啟動腳本

/etc/rc.d/init.d/(啟動腳本檔案mysql的目錄)

五、修改登入密碼

MySQL預設沒有密碼,安裝完畢增加密碼的重要性是不言而喻的。

   1、指令

   usr/bin/mysqladmin -u root password

   格式:mysqladmin

-u使用者名 -p舊密碼 password 新密碼

2、例子

   例1:給root加個密碼123456。

   鍵入以下指令 :

   [root@test1 local]#

/usr/bin/mysqladmin -u root password 123456

   注:因為開始時root沒有密碼,是以-p舊密碼一項就可以省略了。

   3、測試是否修改成功

   1)不用密碼登入

   ERROR 1045: Access denied for user:

'root@localhost' (Using password: NO)

   顯示錯誤,說明密碼已經修改。

   2)用修改後的密碼登入

   [root@test1 local]# mysql -u root

-p

   Enter password:

(輸入修改後的密碼123456)

   Welcome to the

MySQL monitor. Commands end with ; or \g.

   Your MySQL connection id is 4 to

   成功!

這是通過mysqladmin指令修改密碼,也可通過修改庫來更改密碼。

   六、啟動與停止

   1、啟動

MySQL安裝完成後啟動檔案mysql在/etc/init.d目錄下,在需要啟動時運作下面指令即可。

   [root@test1 init.d]#

/etc/init.d/mysql start

2、停止

   /usr/bin/mysqladmin -u root

-p shutdown

   3、自動啟動

   1)察看mysql是否在自動啟動清單中

   [root@test1 local]# /sbin/chkconfig

–list

2)把MySQL添加到你系統的啟動服務組裡面去

[root@test1 local]# /sbin/chkconfig – add mysql

   3)把MySQL從啟動服務組裡面删除。

   [root@test1 local]# /sbin/chkconfig –

del mysql

七、更改MySQL目錄

MySQL預設的資料檔案存儲目錄為/var/lib/mysql。假如要把目錄移到/home/data下需要進行下面幾步:

   1、home目錄下建立data目錄

   cd /home

   mkdir data

   2、把MySQL服務程序停掉:

   mysqladmin -u root -p shutdown

3、把/var/lib/mysql整個目錄移到/home/data

   mv /var/lib/mysql /home/data/

這樣就把MySQL的資料檔案移動到了/home/data/mysql下

   4、找到my.cnf配置檔案

如果/etc/目錄下沒有my.cnf配置檔案,請到/usr/share/mysql/下找到*.cnf檔案,拷貝其中一個到/etc/并改名為my.cnf)中。指令如下:

   [root@test1 mysql]# cp

/usr/share/mysql/my-medium.cnf /etc/my.cnf

   5、編輯MySQL的配置檔案/etc/my.cnf

   為保證MySQL能夠正常工作,需要指明mysql.sock檔案的産生位置。

修改socket=/var/lib/mysql/mysql.sock一行中等号右邊的值為:/home/mysql/mysql.sock 。操作如下:

   vi  my.cnf   

(用vi工具編輯my.cnf檔案,找到下列資料修改之)

   #

The MySQL server

    [mysqld]

    port   = 3306

    #socket  =

/var/lib/mysql/mysql.sock(原内容,為了更穩妥用“#”注釋此行)

    socket  =

/home/data/mysql/mysql.sock   (加上此行)

6、修改MySQL啟動腳本/etc/rc.d/init.d/mysql

最後,需要修改MySQL啟動腳本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右邊的路徑改成你現在的實際存放路徑:home/data/mysql。

   [root@test1 etc]#

vi /etc/rc.d/init.d/mysql

#datadir=/var/lib/mysql    (注釋此行)

   datadir=/home/data/mysql  

(加上此行)

   7、重新啟動MySQL服務

   /etc/rc.d/init.d/mysql start

   或用reboot指令重新開機Linux

   如果工作正常移動就成功了,否則對照前面的7步再檢查一下。

   八、MySQL的常用操作

   注意:MySQL中每個指令後都要以分号;結尾。

   1、顯示資料庫

   mysql> show databases;

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

   | Database |

   | mysql  |

   | test   |

   2 rows in set (0.04 sec)

Mysql剛安裝完有兩個資料庫:mysql和test。mysql庫非常重要,它裡面有MySQL的系統資訊,我們改密碼和新增使用者,實際上就是用這個庫中的相關表進行操作。

   2、顯示資料庫中的表

   mysql> use mysql;

(打開庫,對每個庫進行操作就要打開此庫,類似于foxpro )

Database changed

show tables;

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

   |

Tables_in_mysql |

columns_priv  |

db       |

   | func      |

   | host      |

   | tables_priv   |

   | user      |

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

   6 rows in set (0.01 sec)

   3、顯示資料表的結構:

   describe 表名;

   4、顯示表中的記錄:

   select * from 表名;

例如:顯示mysql庫中user表中的紀錄。所有能對MySQL使用者操作的使用者都在此表中。

   Select * from user;

   5、建庫:

   create database 庫名;

   例如:建立一個名字位aaa的庫

   mysql> create databases aaa;

6、建表:

   use 庫名;

   create table 表名 (字段設定清單);

例如:在剛建立的aaa庫中建立表name,表中有id(序号,自動增長),xm(姓名),xb(性别),csny(出身年月)四個字段

   use aaa;

   mysql> create table name (id

int(3) auto_increment not null primary key, xm char(8),xb char(2),csny

date);

可以用describe指令察看剛建立的表結構。

mysql> describe name;

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

   | Field | Type  | Null | Key |

Default | Extra     |

   | id  | int(3) |   | PRI | NULL  |

auto_increment |

   | xm  | char(8)

| YES |   | NULL  |        |

xb  | char(2) | YES |   | NULL  |        |

   | csny | date  | YES |   |

NULL  |        |

   7、增加記錄

   例如:增加幾條相關紀錄。

   mysql> insert into name

values('','張三','男','1971-10-01');

values('','白雲','女','1972-05-20');

   可用select指令來驗證結果。

   mysql> select * from name;

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

   | id | xm  | xb  | csny    |

   | 1 | 張三 | 男  | 1971-10-01 |

   | 2 | 白雲 | 女  | 1972-05-20 |

   8、修改紀錄

   例如:将張三的出生年月改為1971-01-10

   mysql> update name set

csny='1971-01-10' where xm='張三';

   9、删除紀錄

   例如:删除張三的紀錄。

   mysql> delete from name where

xm='張三';

   10、删庫和删表

   drop database 庫名;

   drop table 表名;

   九、增加MySQL使用者

   格式:grant select on 資料庫.* to

使用者名@登入主機 identified by "密碼"

例1、增加一個使用者user_1密碼為123,讓他可以在任何主機上登入,并對所有資料庫有查詢、插入、修改、删除的權限。首先用以root使用者連入MySQL,然後鍵入以下指令:

mysql> grant select,insert,update,delete on *.* to user_1@"%" Identified by

"123";

例1增加的使用者是十分危險的,如果知道了user_1的密碼,那麼他就可以在網上的任何一台電腦上登入你的MySQL資料庫并對你的資料為所欲為了,解決辦法見例2。

例2、增加一個使用者user_2密碼為123,讓此使用者隻可以在localhost上登入,并可以對資料庫aaa進行查詢、插入、修改、删除的操作(localhost指本地主機,即MySQL資料庫所在的那台主機),這樣使用者即使用知道user_2的密碼,他也無法從網上直接通路資料庫,隻能通過MYSQL主機來操作aaa庫。

   mysql>grant

select,insert,update,delete on aaa.* to user_2@localhost identified by

用新增的使用者如果登入不了MySQL,在登入時用如下指令:

mysql -u user_1 -p -h 192.168.113.50 (-h後跟的是要登入主機的ip位址)

   十、備份與恢複

   1、備份

   例如:将上例建立的aaa庫備份到檔案back_aaa中

   [root@test1 root]#

cd /home/data/mysql (進入到庫目錄,本例庫已由val/lib/mysql轉到/home/data/mysql,見上述第七部分内容)

   [root@test1 mysql]# mysqldump -u root

-p --opt aaa > back_aaa

2、恢複

   [root@test mysql]#

mysql -u root -p ccc < back_aaa

1、連接配接Mysql

格式: mysql -h主機位址 -u使用者名 -p使用者密碼

1、連接配接到本機上的MYSQL。

首先打開DOS視窗,然後進入目錄mysql\bin,再鍵入指令mysql -u root -p,回車後提示你輸密碼.注意使用者名前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼。

如果剛安裝好MYSQL,超級使用者root是沒有密碼的,故直接回車即可進入到MYSQL中了,MYSQL的提示符是: mysql>

2、連接配接到遠端主機上的MYSQL。假設遠端主機的IP為:110.110.110.110,使用者名為root,密碼為abcd123。則鍵入以下指令:

   mysql -h110.110.110.110 -u root -p 123;(注:u與root之間可以不用加空格,其它也一樣)

3、退出MYSQL指令: exit (回車)

2、修改密碼

格式:mysqladmin -u使用者名 -p舊密碼 password 新密碼

1、給root加個密碼ab12。

首先在DOS下進入目錄mysql\bin,然後鍵入以下指令

   mysqladmin -u root -password ab12

注:因為開始時root沒有密碼,是以-p舊密碼一項就可以省略了。

2、再将root的密碼改為djg345。

   mysqladmin -u root -p ab12 password djg345

3、增加新使用者

注意:和上面不同,下面的因為是MYSQL環境中的指令,是以後面都帶一個分号作為指令結束符

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

1、增加一個使用者test1密碼為abc,讓他可以在任何主機上登入,并對所有資料庫有查詢、插入、修改、删除的權限。首先用root使用者連入MYSQL,然後鍵入以下指令:

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

但增加的使用者是十分危險的,你想如某個人知道test1的密碼,那麼他就可以在internet上的任何一台電腦上登入你的mysql資料庫并對你的資料可以為所欲為了,解決辦法見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 “”;

4.1 建立資料庫

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

指令:create database <資料庫名>

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

  mysql> create database xhkdb;

例2:建立資料庫并配置設定使用者

①CREATE DATABASE 資料庫名;

②GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 資料庫名.* TO 資料庫名@localhost IDENTIFIED BY '密碼';

③SET PASSWORD FOR '資料庫名'@'localhost' = OLD_PASSWORD('密碼');

依次執行3個指令完成資料庫建立。注意:中文 “密碼”和“資料庫”是戶自己需要設定的。

4.2 顯示資料庫

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

mysql> show databases;

注意:為了不再顯示的時候亂碼,要修改資料庫預設編碼。以下以GBK編碼頁面為例進行說明:

1、修改MYSQL的配置檔案:my.ini裡面修改default-character-set=gbk

2、代碼運作時修改:

  ①Java代碼:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk

  ②PHP代碼:header("Content-Type:text/html;charset=gb2312");

  ③C語言代碼:int mysql_set_character_set( MYSQL * mysql, char * csname);

該函數用于為目前連接配接設定預設的字元集。字元串csname指定了1個有效的字元集名稱。連接配接校對成為字元集的預設校對。該函數的工作方式與SET NAMES語句類似,但它還能設定mysql- > charset的值,進而影響了由mysql_real_escape_string() 設定的字元集。

4.3 删除資料庫

指令:drop database <資料庫名>

例如:删除名為 xhkdb的資料庫

mysql> drop database xhkdb;

例子1:删除一個已經确定存在的資料庫

  mysql> drop database drop_database;

  Query OK, 0 rows affected (0.00 sec)

例子2:删除一個不确定存在的資料庫

  ERROR 1008 (HY000): Can't drop database 'drop_database'; database doesn't exist

     //發生錯誤,不能删除'drop_database'資料庫,該資料庫不存在。

  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 判斷資料庫是否存在,不存在也不産生錯誤

4.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> SELECT author_name,editor_name FROM author,db2.editor

      ->        WHERE author.editor_id = db2.editor.editor_id;

USE語句被設立出來,用于與Sybase相相容。

有些網友問到,連接配接以後怎麼退出。其實,不用退出來,use 資料庫後,使用show databases就能查詢所有資料庫,如果想跳到其他資料庫,用

  use 其他資料庫名字

就可以了。

4.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 |

4. 顯示字元串

mysql> SELECT "welecome to my blog!";

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

| welecome to my blog! |

5. 當電腦用

select ((4 * 4) / 10 ) + 25;

| ((4 * 4) / 10 ) + 25 |

|                26.60 |

6. 串接字元串

select CONCAT(f_name, " ", l_name)

AS Name

from employee_data

where title = 'Marketing Executive';

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

| Name          |

| Monica Sehgal |

| Hal Simlai    |

| Joseph Irvine |

3 rows in set (0.00 sec)

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

5.1 建立資料表

指令:create table <表名> ( <字段名1> <類型1> [,..<字段名n> <類型n>]);

例如,建立一個名為MyClass的表,

字段名 數字類型 資料寬度 是否為空 是否主鍵 自動增加 預設值
id int 4 primary key auto_increment
name char 20
sex
degree double 16

5.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不起作用。

5.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每次隻能向表中插入一條記錄。

5.5 查詢表中的資料

1)、查詢所有行

指令: select <字段1,字段2,...> from < 表名 > where < 表達式 >

例如:檢視表 MyClass 中所有資料

  mysql> select * from MyClass;

2)、查詢前幾行資料

例如:檢視表 MyClass 中前2行資料

select一般配合where使用,以查詢更精确更複雜的資料。

5.6 删除表中資料

指令:delete from 表名 where 表達式

例如:删除表 MyClass中編号為1 的記錄

下面是一個删除資料前後表的對比。

FirstName LastName Age
Peter Griffin 35
Glenn Quagmire 33

下面以PHP代碼為例删除 "Persons" 表中所有 LastName='Griffin' 的記錄:

<?php 
   $con = mysql_connect("localhost","peter","abc123"); 
   if (!$con) 
   {
      die('Could not connect: ' . mysql_error()); 
   } 
   mysql_select_db("my_db", $con); 
   mysql_query("DELETE FROM Persons WHERE LastName='Griffin'"); mysql_close($con); 
?>      

在這次删除之後,表是這樣的:

5.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子句用于給定一個限值,限制可以被更新的行的數目。

5.8 增加字段

指令:alter table 表名 add字段 類型 其他;

例如:在表MyClass中添加了一個字段passtest,類型為int(4),預設值為0

  mysql> alter table MyClass add passtest int(4) default '0'

加索引

  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 DROP field_name;

5.9 修改表名

指令:rename table 原表名 to 新表名;

例如:在表MyClass名字更改為YouClass

  mysql> rename table MyClass to YouClass;

當你執行 RENAME 時,你不能有任何鎖定的表或活動的事務。你同樣也必須有對原初表的 ALTER 和 DROP 權限,以及對新表的 CREATE 和 INSERT 權限。

如果在多表更名中,MySQL 遭遇到任何錯誤,它将對所有被更名的表進行倒退更名,将每件事物退回到最初狀态。

RENAME TABLE 在 MySQL 3.23.23 中被加入。

6、備份資料庫

指令在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

7.1 一個建庫和建表的執行個體1

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 ‘深圳’,

   year date

); //建表結束

//以下為插入字段

insert into teacher values(”,’allen’,'大連一中’,'1976-10-10′);

insert into teacher values(”,’jack’,'大連二中’,'1975-12-23′);

如果你在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檔案導入資料庫中。

7.2 一個建庫和建表的執行個體2

   address varchar(50) default ''深圳'',

insert into teacher values('''',''glchengang'',''深圳一中'',''1976-10-10'');

insert into teacher values('''',''jack'',''深圳一中'',''1975-12-23'');

注:在建表中

1、将ID設為長度為3的數字字段:int(3);并讓它每個記錄自動加一:auto_increment;并不能為空:not null;而且讓他成為主字段primary key。

2、将NAME設為長度為10的字元字段

3、将ADDRESS設為長度50的字元字段,而且預設值為深圳。

4、将YEAR設為日期字段。

作者:Agoly

出處:https://www.cnblogs.com/qmfsun/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。