天天看點

mysql基礎使用 1、連接配接Mysql 2、修改密碼 3、增加新使用者 4.1 建立資料庫 4.2 顯示資料庫 4.3 删除資料庫 4.4 連接配接資料庫 4.5 目前選擇的資料庫 5.1 建立資料表 5.3 删除資料表 5.4 表插入資料 5.5 查詢表中的資料 5.6 删除表中資料 5.7 修改表中資料 5.8 增加字段 5.9 修改表名 6、備份資料庫 7.1 一個建庫和建表的執行個體1 7.2 一個建庫和建表的執行個體2 10 檢視MySQL資料庫的指令

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

(回車)

格式: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

注意:和上面不同,下面的因為是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 “”;

注意:建立資料庫之前要先連接配接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個指令完成資料庫建立。注意:中文 “密碼”和“資料庫”是戶自己需要設定的。

指令: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() 設定的字元集。

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

指令: 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 其他資料庫名字

就可以了。

指令: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)'起了個假名。

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

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

字段名

數字類型

資料寬度

是否為空

是否主鍵

自動增加

預設值

id

int

4

primary key

auto_increment

name

char

20

sex

degree

double

16

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

指令:drop table <表名>

例如:删除表名為 myclass 的表

   mysql> drop table myclass;

drop table用于取消一個或多個表。您必須有每個表的drop權限。所有的表資料和表定義會被取消,是以使用本語句要小心!

注意:對于一個帶分區的表,drop table會永久性地取消表定義,取消各分區,并取消儲存在這些分區中的所有資料。drop table還會取消與被取消的表有關聯的分區定義(.par)檔案。

對與不存在的表,使用if exists用于防止錯誤發生。當使用if exists時,對于每個不存在的表,會生成一個note。

restrict和cascade可以使分區更容易。目前,restrict和cascade不起作用。

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

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使用,以查詢更精确更複雜的資料。

指令:delete from 表名 where 表達式

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

mysql> delete from myclass where id=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); ?>在這次删除之後,表是這樣的:

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

指令: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;

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

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

    id int(3) auto_increment not null primary key,

    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設為日期字段。

show tables

顯示目前資料庫中所有的表

查詢資料庫中所有表名

select table_name from information_schema.tables where table_schema='csdb' and table_type='base table';

查詢指定資料庫中指定表的所有字段名column_name

select column_name from information_schema.columns where table_schema='csdb' and table_name='users'

二、顯示指令 

1、顯示資料庫清單。 

show databases; 

2、顯示庫中的資料表: 

use mysql;

show tables; 

3、顯示資料表的結構: 

describe 表名; 

4、建庫: 

create database 庫名; 

5、建表: 

use 庫名; 

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

6、删庫和删表: 

drop database 庫名; 

drop table 表名; 

7、将表中記錄清空: 

delete from 表名; 

8、顯示表中的記錄: 

select * from 表名

9.1

檢視mysql資料庫的預設編碼

1、使用status指令能夠顯示資料庫的相關系資訊,示例如下:

mysql> status;

————–

mysql ver 14.12 distrib 5.0.77, for win32 (ia32)

connection id:          1072

current database:

current user:           [email protected]

ssl:                    not in use

using delimiter:        ;

server version:         5.0.67-log mysql community server (gpl)

protocol version:       10

connection:             www.chinajvm.com via tcp/ip

server characterset:    gbk

db     characterset:    gbk

client characterset:    latin1

conn. characterset:    latin1

tcp port:               3306

uptime:                 15 days 2 hours 21 min 37 sec

2、也可以使用如下指令:

mysql> show variables like’char%’;

+————————–+——————————————–+

| variable_name            | value                                      |

| character_set_client     | latin1                                     |

| character_set_connection | latin1                                     |

| character_set_database | gbk                                        |

| character_set_filesystem | binary                                     |

| character_set_results    | latin1                                     |

| character_set_server     | gbk                                        |

| character_set_system     | utf8                                       |

| character_sets_dir       | /mysql/mastermysql50/share/mysql/charsets/ |

8 rows in set (0.03 sec)

進入mysql command line client下

檢視目前使用的資料庫:

mysql>select database();

mysql>status;

mysql>show tables;

mysql>show databases;//可以檢視有哪些資料庫,傳回資料庫名(databasename)

mysql>use databasename;  //更換目前使用的資料庫

mysql>show tables; //傳回目前資料庫下的所有表的名稱

或者也可以直接用以下指令

mysql>show tables from databasename;//databasename可以用show databases得來

mysql檢視表結構指令,如下:

desc 表名;

show columns from 表名;

或者

describe 表名;

show create table 表名;

use information_schema

select * from columns where table_name='表名';

檢視警告:

rows matched: 1  changed: 0  warnings: 1

mysql> show warnings;

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

| level   | code | message                                   |

| warning | 1265 | data truncated for column 'name' at row 3 |

1 row in set