MySQL經(jīng)常使用指令(備查)
最經(jīng)常使用 的顯示命令:
show databases;?
2、顯示庫中的數(shù)據(jù)表:?
use mysql;
show tables;?
3、顯示數(shù)據(jù)表的結(jié)構(gòu):?
describe 表名;?
4、建庫:?
create database 庫名;?
5、建表:?
use 庫名;?
create table 表名 (字段設(shè)定列表);?
6、刪庫和刪表:?
drop database 庫名;?
drop table 表名;?
7、將表中記錄清空:?
delete from 表名;?
8、顯示表中的記錄:?
select * from 表名
連接
MySQL
格式: mysql -h 主機(jī)地址 -uusername -p用戶password
例 1:連接到本機(jī)上的 MySQL。
? ? ? ? ?mysql
-uroot -pmysql;
? ? ?連接到遠(yuǎn)程主機(jī)上的 MYSQL。
? ? ? ? ?mysql -h 127.0.0.1 -uroot -pmysql;
2、連接到遠(yuǎn)程主機(jī)上的MYSQL。如果遠(yuǎn)程主機(jī)的IP為:110.110.110.110,username為root,password為abcd123。則鍵入下面命令:
mysql -h110.110.110.110 -u root -p 123;(注:u與root之間能夠不用加空格,其他也一樣)
3、退出MYSQL命令: exit (回車)
改動(dòng)新password
在終端輸入:mysql -uusername -ppassword,回車進(jìn)入Mysql。
> use mysql;
> update user set password=PASSWORD('新密碼') where user='username';
> flush privileges; #更新權(quán)限
> quit; #退出
二、改動(dòng)password。
格式:mysqladmin -uusername -p舊password password 新password
1、給root加個(gè)passwordab12。首先在DOS下進(jìn)入文件夾mysql\bin,然后鍵入下面命令
mysqladmin -u root -password ab12
注:由于開始時(shí)root沒有password,所以-p舊password一項(xiàng)就能夠省略了。
2、再將root的password改為djg345。
mysqladmin -u root -p ab12 password djg345
(注意:和上面不同,以下的由于是MYSQL環(huán)境中的命令,所以后面都帶一個(gè)分號作為命令結(jié)束符)
3、命令行改動(dòng)rootpassword:
mysql> UPDATE mysql.user SET password=PASSWORD(’新密碼’) WHERE User=’root’;
mysql> FLUSH PRIVILEGES;
4、顯示當(dāng)前的user:
mysql> SELECT USER();
格式:grant select on 數(shù)據(jù)庫.* to username@登錄主機(jī) identified by “password”
1、添加一個(gè)用戶test1password為abc,讓他能夠在不論什么主機(jī)上登錄,并對全部數(shù)據(jù)庫有查詢、插入、改動(dòng)、刪除的權(quán)限。首先用root用戶連入
MYSQL,然后鍵入下面命令:
grant select,insert,update,delete on *.* to test1”%" Identified by “abc”;
但添加的用戶是十分危急的,你想如某個(gè)人知道test1的password,那么他就能夠在internet上的不論什么一臺電腦上登錄你的mysql數(shù)據(jù)庫并對你的數(shù)據(jù)能夠?yàn)樗麨榱?,解決的方法見2。
2、添加一個(gè)用戶test2password為abc,讓他僅僅能夠在localhost上登錄,并能夠?qū)?shù)據(jù)庫mydb進(jìn)行查詢、插入、改動(dòng)、刪除的操作(localhost指本地主機(jī),即MYSQL數(shù)據(jù)庫所在的那臺主機(jī)),
這樣用戶即使用知道test2的password,他也無法從internet上直接訪問數(shù)據(jù)庫,僅僅能通過MYSQL主機(jī)上的web頁來訪問了。
grant select,insert,update,delete on mydb.* to test2@localhost identifiedby “abc”;
假設(shè)你不想test2有password,能夠再打一個(gè)命令將password消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;
刪除用戶
mysql -uusername -ppassword
mysql>delete from user where user='username' and host='localhost';
mysql>flush privileges;
//刪除用戶的數(shù)據(jù)庫
mysql>drop database dbname;
數(shù)據(jù)庫操作
顯示全部的數(shù)據(jù)庫
mysql> show databases;(注意:最后有個(gè) s)
創(chuàng)建數(shù)據(jù)庫
mysql> create database test;
連接數(shù)據(jù)庫
mysql> use test;
查看當(dāng)前使用的數(shù)據(jù)庫
mysql> select database();
當(dāng)前數(shù)據(jù)庫包括的表信息
mysql> show tables; (注意:最后有個(gè) s)
刪除數(shù)據(jù)庫
mysql> drop database test;
表操作
備注:操作之前使用“use <數(shù)據(jù)庫名>”應(yīng)連接某個(gè)數(shù)據(jù)庫。
建表
命令: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));
獲取表結(jié)構(gòu)
命令: desc 表名,或者show columns from 表名
樣例:
mysql> describe MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;
刪除表
命令:drop table <表名>
比如:刪除表名為 MyClass 的表
mysql> drop table MyClass;
插入數(shù)據(jù)
命令:insert into <表名> [( <字段名 1>[,..<字段名 n > ])] values ( 值 1 )[, ( 值 n )]
樣例:
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
查詢表中的數(shù)據(jù)
查詢?nèi)啃?
mysql> select * from MyClass;
查詢前幾行數(shù)據(jù)
比如:查看表 MyClass 中前 2 行數(shù)據(jù)
mysql> select * from MyClass order by id limit 0,2;
或者
mysql> select * from MyClass limit 0,2;
刪除表中數(shù)據(jù)
命令:delete from 表名 where 表達(dá)式
比如:刪除表 MyClass 中編號為 1 的記錄
mysql> delete from MyClass where id=1;
改動(dòng)表中數(shù)據(jù)
命令:update 表名 set 字段=新值,... where 條件
mysql> update MyClass set name='Mary' where id=1;
在表中添加字段
命令:alter table 表名 add 字段 類型 其它;
比如:在表 MyClass 中加入了一個(gè)字段 passtest,類型為 int(4),默認(rèn)值為 0
mysql> alter table MyClass add passtest int(4) default '0'
更改表名
命令:rename table 原表名 to 新表名;
比如:在表 MyClass 名字更改為 YouClass
mysql> rename table MyClass to YouClass;
更新字段內(nèi)容
命令:update 表名 set 字段名 = 新內(nèi)容
update 表名 set 字段名 = replace(字段名, '舊內(nèi)容', '新內(nèi)容');
比如:文章前面增加 4 個(gè)空格
update article set content=concat('??? ', content);
數(shù)據(jù)庫導(dǎo)入導(dǎo)出
從數(shù)據(jù)庫導(dǎo)出數(shù)據(jù)庫文件
使用“mysqldump”命令
首先進(jìn)入 DOS 界面,然后進(jìn)行以下操作。
1)導(dǎo)出全部數(shù)據(jù)庫
格式:mysqldump -u [數(shù)據(jù)庫username] -p -A>[備份文件的保存路徑]
2)導(dǎo)出數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)
格式:mysqldump -u [數(shù)據(jù)庫username] -p [要備份的數(shù)據(jù)庫名稱]>[備份文件的保存路徑]
舉例:
例 1:將數(shù)據(jù)庫 mydb 導(dǎo)出到 e:\MySQL\mydb.sql 文件里。
打開開始->執(zhí)行->輸入“cmd”,進(jìn)入命令行模式。
c:\> mysqldump -h localhost -u root -p mydb >e:\MySQL\mydb.sql
然后輸入password,等待一會(huì)導(dǎo)出就成功了,能夠到目標(biāo)文件里檢查是否成功。
例 2:將數(shù)據(jù)庫 mydb 中的 mytable 導(dǎo)出到 e:\MySQL\mytable.sql 文件里。
c:\> mysqldump -h localhost -u root -p mydb mytable>e:\MySQL\mytable.sql
例 3:將數(shù)據(jù)庫 mydb 的結(jié)構(gòu)導(dǎo)出到 e:\MySQL\mydb_stru.sql 文件里。
c:\> mysqldump -h localhost -u root -p mydb --add-drop-table >e:\MySQL\mydb_stru.sql
備注:-h localhost 能夠省略,其一般在虛擬主機(jī)上用。
3)僅僅導(dǎo)出數(shù)據(jù)不導(dǎo)出數(shù)據(jù)結(jié)構(gòu)
格式:
mysqldump -u [數(shù)據(jù)庫username] -p -t [要備份的數(shù)據(jù)庫名稱]>[備份文件的保存路徑]
4)導(dǎo)出數(shù)據(jù)庫中的Events
格式:mysqldump -u [數(shù)據(jù)庫username] -p -E [數(shù)據(jù)庫username]>[備份文件的保存路徑]
5)導(dǎo)出數(shù)據(jù)庫中的存儲(chǔ)過程和函數(shù)
格式:mysqldump -u [數(shù)據(jù)庫username] -p -R [數(shù)據(jù)庫username]>[備份文件的保存路徑]
從外部文件導(dǎo)入數(shù)據(jù)庫中
1)使用“source”命令
首先進(jìn)入“mysql”命令控制臺,然后創(chuàng)建數(shù)據(jù)庫,然后使用該數(shù)據(jù)庫。最后運(yùn)行以下操作。
mysql>source [備份文件的保存路徑]
2)使用“<”符號
首先進(jìn)入“mysql”命令控制臺,然后創(chuàng)建數(shù)據(jù)庫,然后退出 MySQL,進(jìn)入 DOS 界面。最后運(yùn)行以下操作。
mysql -u root –p < [備份文件的保存路徑]
六、備份數(shù)據(jù)庫:
注意,mysqldump命令在DOS的 mysql\bin 文件夾下運(yùn)行,不能在mysql環(huán)境下運(yùn)行,因此,不能以分號“;”結(jié)尾。若已登陸mysql,請運(yùn)行退出命令mysql> exit
1.導(dǎo)出整個(gè)數(shù)據(jù)庫
導(dǎo)出文件默認(rèn)是存在mysql\bin文件夾下
mysqldump -uusername -p數(shù)據(jù)庫名 > 導(dǎo)出的文件名稱
mysqldump -uroot -p123456 database_name > outfile_name.sql
2.導(dǎo)出一個(gè)表
mysqldump -u username -p 數(shù)據(jù)庫名 表名> 導(dǎo)出的文件名稱
mysqldump -u user_name -p database_name table_name > outfile_name.sql
3.導(dǎo)出一個(gè)數(shù)據(jù)庫結(jié)構(gòu)
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 沒有數(shù)據(jù) –add-drop-table 在每一個(gè)create語句之前添加一個(gè)drop table
4.帶語言參數(shù)導(dǎo)出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
七、將文本數(shù)據(jù)轉(zhuǎn)到數(shù)據(jù)庫中
1、文本數(shù)據(jù)應(yīng)符合的格式:字段數(shù)據(jù)之間用tab鍵隔開,null值用\n來取代.例:
3 rose 大連二中 1976-10-10
4 mike 大連一中 1975-12-23
如果你把這兩組數(shù)據(jù)存為school.txt文件,放在c盤根文件夾下。
2、數(shù)據(jù)傳入命令?
mysql> load data local infile "c:\school.txt" into table 表名;
注意:你最好將文件拷貝到mysql\bin文件夾下,而且要先用use命令打表所在的庫。
八、對表的操作
1、顯示數(shù)據(jù)表的結(jié)構(gòu):
mysql> DESCRIBE 表名; (DESC 表名)
2、建立數(shù)據(jù)表:
mysql> USE 庫名; //進(jìn)入數(shù)據(jù)庫
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
3、刪除數(shù)據(jù)表:
mysql> DROP TABLE 表名;
4、重命名數(shù)據(jù)表
alter table t1 rename t2;
5、顯示表中的記錄:
mysql> SELECT * FROM 表名;
6、往表中插入記錄:
mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);
7、更新表中數(shù)據(jù):
mysql-> UPDATE 表名 SET 字段名1=’a',字段名2=’b’ WHERE 字段名3=’c';
8、將表中記錄清空:
mysql> DELETE FROM 表名;
9、用文本方式將數(shù)據(jù)裝入數(shù)據(jù)表中:
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;
10、 顯示表的定義,還能夠看到表的約束,比如外鍵
mysql> SHOW CREATE TABLE yourtablename?? ;?
還能夠通過 mysqldump 將表的完整定義轉(zhuǎn)儲(chǔ)到文件里,當(dāng)然包含外鍵定義。?????
還能夠通過以下的指令列出表 T 的外鍵約束:?????
mysql> SHOW TABLE STATUS FROM yourdatabasename LIKE 'T'???
外鍵約束將會(huì)在表凝視中列出。
存儲(chǔ)過程
11、創(chuàng)建存儲(chǔ)過程
CREATE PROCEDURE procedureName (in paramentName type, in paramentName type,……)
BEGIN
SQL sentences;
END
12、調(diào)用存儲(chǔ)過程
mysql> CALL procedureName(paramentList);
例:mysql> CALL addMoney(12, 500);
13、查看特定數(shù)據(jù)庫的存儲(chǔ)過程
方法一:mysql> SELECT `name` FROM mysql.proc WHERE db = 'your_db_name' AND `type` = 'PROCEDURE';
方法二:mysql> show procedure status;
14、刪除存儲(chǔ)過程
mysql> DROP PROCEDURE procedure_name;
mysql> DROP PROCEDURE IF EXISTS procedure_name;
15、查看指定的存儲(chǔ)過程定義
mysql> SHOW CREATE PROCEDURE proc_name;
mysql> SHOW CREATE FUNCTION func_name;
---------- 演示樣例一-----------
mysql> DELIMITER $$???
mysql> USE `db_name`$$?? //選擇數(shù)據(jù)庫
mysql> DROP PROCEDURE IF EXISTS `addMoney`$$?? //假設(shè)存在同名存儲(chǔ)過程,則刪除之
mysql> CREATE DEFINER= `root`@`localhost` PROCEDURE `addMoney`(IN xid INT(5),IN xmoney INT(6))???
mysql> BEGIN?
mysql> UPDATE USER u SET u.money = u.money + xmoney WHERE u.id = xid;?? //分號";"不會(huì)導(dǎo)致語句運(yùn)行,由于當(dāng)前的切割符被定義為$$
mysql> END$$?? //終止
mysql> DELIMITER ;??? //把切割符改回分號";"
mysql> call addMoney(5,1000); //運(yùn)行存儲(chǔ)過程
---------- 演示樣例二-----------
mysql> delimiter //?
mysql> create procedure proc_name (in parameter integer)?
mysql> begin?
mysql> if parameter=0 then?
mysql> select * from user order by id asc;?
mysql> else?
mysql> select * from user order by id desc;?
mysql> end if;?
mysql> end;?
mysql> //??????? //此處“//”為終止符
mysql> delimiter ;?
mysql> show warnings;?
mysql> call proc_name(1);?
mysql> call proc_name(0);
九、改動(dòng)表的列屬性的操作
1、為了改變列a,從INTEGER改為TINYINT NOT NULL(名字一樣),
而且改變列b,從CHAR(10)改為CHAR(20),同一時(shí)候重命名它,從b改為c:
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
2、添加一個(gè)新TIMESTAMP列,名為d:
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
3、在列d上添加一個(gè)索引,而且使列a為主鍵:
mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
4、刪除列c:
mysql> ALTER TABLE t2 DROP COLUMN c;
5、添加一個(gè)新的AUTO_INCREMENT整數(shù)列,命名為c:
mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c);
注意,我們索引了c,由于AUTO_INCREMENT柱必須被索引,而且另外我們聲明c為NOT NULL,
由于索引了的列不能是NULL
十、一個(gè)建庫和建表以及插入數(shù)據(jù)的實(shí)例
drop database if exists school; //假設(shè)存在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
); //建表結(jié)束
//下面為插入字段
insert into teacher values('','allen','大連一中','1976-10-10');
insert into teacher values('','jack','大連二中','1975-12-23');
假設(shè)你在mysql提示符鍵入上面的命令也能夠,但不方便調(diào)試。
(1)你能夠?qū)⒁陨厦钤瓨訉懭胍粋€(gè)文本文件里,如果為school.sql,然后拷貝到c:\下,并在DOS狀態(tài)進(jìn)入文件夾\mysql\bin,然后鍵入下面命令:
mysql -uroot -ppassword < c:\school.sql
假設(shè)成功,空出一行無不論什么顯示;如有錯(cuò)誤,會(huì)有提示。(以上命令已經(jīng)調(diào)試,你僅僅要將//的凝視去掉就可以使用)。
(2)或者進(jìn)入命令行后使用 mysql> source c:\school.sql; 也能夠?qū)chool.sql文件導(dǎo)入數(shù)據(jù)庫中。
MySQL 為關(guān)系型數(shù)據(jù)庫(Relational Database Management System), 這樣的所謂的"關(guān)系型"能夠理解為"表格"的概念, 一個(gè)關(guān)系型數(shù)據(jù)庫由一個(gè)或數(shù)個(gè)表格組成, 如圖所看到的的一個(gè)表格:
- 表頭(header): 每一列的名稱;
- 列(row): 具有同樣數(shù)據(jù)類型的數(shù)據(jù)的集合;
- 行(col): 每一行用來描寫敘述某個(gè)人/物的詳細(xì)信息;
- 值(value): 行的詳細(xì)信息, 每一個(gè)值必須與該列的數(shù)據(jù)類型同樣;
- 鍵(key): 表中用來識別某個(gè)特定的人\物的方法, 鍵的值在當(dāng)前列中具有唯一性。
MySQL腳本的基本組成
與常規(guī)的腳本語言類似, MySQL 也具有一套對字符、單詞以及特殊符號的使用規(guī)定, MySQL 通過運(yùn)行 SQL 腳本來完畢對數(shù)據(jù)庫的操作, 該腳本由一條或多條MySQL語句(SQL語句 + 擴(kuò)展語句)組成, 保存時(shí)腳本文件后綴名一般為 .sql。在控制臺下, MySQL client也能夠?qū)φZ句進(jìn)行單句的運(yùn)行而不用保存為.sql文件。
標(biāo)識符
標(biāo)識符用來命名一些對象, 如數(shù)據(jù)庫、表、列、變量等, 以便在腳本中的其它地方引用。MySQL標(biāo)識符命名規(guī)則略微有點(diǎn)繁瑣, 這里我們使用萬能命名規(guī)則: 標(biāo)識符由字母、數(shù)字或下劃線(_)組成, 且第一個(gè)字符必須是字母或下劃線。
對于標(biāo)識符是否區(qū)分大寫和小寫取決于當(dāng)前的操作系統(tǒng), Windows下是不敏感的, 但對于大多數(shù) linux\unix 系統(tǒng)來說, 這些標(biāo)識符大寫和小寫是敏感的。
MySQL中的數(shù)據(jù)類型
MySQL有三大類數(shù)據(jù)類型, 分別為數(shù)字、日期\時(shí)間、字符串, 這三大類中又更仔細(xì)的劃分了很多子類型:
-
數(shù)字類型
- 整數(shù): tinyint、smallint、mediumint、int、bigint
- 浮點(diǎn)數(shù): float、double、real、decimal
- 日期和時(shí)間: date、time、datetime、timestamp、year
-
字符串類型
- 字符串: char、varchar
- 文本: tinytext、text、mediumtext、longtext
- 二進(jìn)制(可用來存儲(chǔ)圖片、音樂等): tinyblob、blob、mediumblob、longblob
具體介紹參見:? 《MySQL數(shù)據(jù)類型》 ?:? http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
?
使用MySQL數(shù)據(jù)庫
登錄到MySQL
當(dāng) MySQL 服務(wù)已經(jīng)執(zhí)行時(shí), 我們能夠通過MySQL自帶的client工具登錄到MySQL數(shù)據(jù)庫中, 首先打開命令提示符, 輸入下面格式的命名:
mysql -h 主機(jī)名 -u username -p
- -h :?該命令用于指定client所要登錄的MySQL主機(jī)名, 登錄當(dāng)前機(jī)器該參數(shù)能夠省略;
- -u :?所要登錄的username;
- -p :?告訴server將會(huì)使用一個(gè)password來登錄, 假設(shè)所要登錄的usernamepassword為空, 能夠忽略此選項(xiàng)。
以登錄剛剛安裝在本機(jī)的MySQL數(shù)據(jù)庫為例, 在命令行下輸入 mysql -u root -p 按回車確認(rèn), 假設(shè)安裝正確且MySQL正在執(zhí)行, 會(huì)得到下面響應(yīng):
Enter password:
若password存在, 輸入password登錄, 不存在則直接按回車登錄, 依照本文中的安裝方法, 默認(rèn) root 賬號是無password的。登錄成功后你將會(huì)看到 Welecome to the MySQL monitor... 的提示語。
然后命令提示符會(huì)一直以 mysql> 加一個(gè)閃爍的光標(biāo)等待命令的輸入, 輸入 exit 或 quit 退出登錄。
創(chuàng)建一個(gè)數(shù)據(jù)庫
使用 create database 語句可完畢對數(shù)據(jù)庫的創(chuàng)建, 創(chuàng)建命令的格式例如以下:
create database 數(shù)據(jù)庫名 [其它選項(xiàng)];
比如我們須要?jiǎng)?chuàng)建一個(gè)名為 samp_db 的數(shù)據(jù)庫, 在命令行下運(yùn)行下面命令:
create database samp_db character set gbk;
為了便于在命令提示符下顯示中文, 在創(chuàng)建時(shí)通過 character set gbk 將數(shù)據(jù)庫字符編碼指定為 gbk。創(chuàng)建成功時(shí)會(huì)得到 Query OK, 1 row affected(0.02 sec) 的響應(yīng)。
注意:?MySQL語句以分號(;)作為語句的結(jié)束, 若在語句結(jié)尾不加入分號時(shí), 命令提示符會(huì)以 -> 提示你繼續(xù)輸入(有個(gè)別特例, 但加分號是一定不會(huì)錯(cuò)的);
提示:?能夠使用 show databases; 命令查看已經(jīng)創(chuàng)建了哪些數(shù)據(jù)庫。
選擇所要操作的數(shù)據(jù)庫
要對一個(gè)數(shù)據(jù)庫進(jìn)行操作, 必須先選擇該數(shù)據(jù)庫, 否則會(huì)提示錯(cuò)誤:
ERROR 1046(3D000): No database selected
兩種方式對數(shù)據(jù)庫進(jìn)行使用的選擇:
一:?在登錄數(shù)據(jù)庫時(shí)指定, 命令:? mysql -D 所選擇的數(shù)據(jù)庫名 -h 主機(jī)名 -u username -p
比如登錄時(shí)選擇剛剛創(chuàng)建的數(shù)據(jù)庫: mysql -D samp_db -u root -p
二:?在登錄后使用 use 語句指定, 命令:? use 數(shù)據(jù)庫名;
use 語句能夠不加分號, 運(yùn)行 use samp_db 來選擇剛剛創(chuàng)建的數(shù)據(jù)庫, 選擇成功后會(huì)提示: Database changed
創(chuàng)建數(shù)據(jù)庫表
使用 create table 語句可完畢對表的創(chuàng)建, create table 的常見形式:
create table 表名稱(列聲明);
以創(chuàng)建 students 表為例, 表中將存放 學(xué)號(id)、姓名(name)、性別(sex)、年齡(age)、聯(lián)系電話(tel) 這些內(nèi)容:
create table students ( id int unsigned not null auto_increment primary key, name char(8) not null, sex char(4) not null, age tinyint unsigned not null, tel char(13) null default "-" );
對于一些較長的語句在命令提示符下可能easy輸錯(cuò), 因此我們能夠通過不論什么文本編輯器將語句輸入好后保存為 createtable.sql 的文件里, 通過命令提示符下的文件重定向運(yùn)行運(yùn)行該腳本。
打開命令提示符, 輸入:? mysql -D samp_db -u root -p < createtable.sql
(提示: 1.假設(shè)連接遠(yuǎn)程主機(jī)請加上 -h 指令; 2. createtable.sql 文件若不在當(dāng)前工作文件夾下需指定文件的完整路徑。)
語句講解:
create table tablename(columns) 為創(chuàng)建數(shù)據(jù)庫表的命令, 列的名稱以及該列的數(shù)據(jù)類型將在括號內(nèi)完畢;
括號內(nèi)聲明了5列內(nèi)容, id、name、sex、age、tel為每列的名稱, 后面跟的是數(shù)據(jù)類型描寫敘述, 列與列的描寫敘述之間用逗號(,)隔開;
以 "id int unsigned not null auto_increment primary key" 行進(jìn)行介紹:
- "id" 為列的名稱;
- "int" 指定該列的類型為 int(取值范圍為 -8388608到8388607), 在后面我們又用 "unsigned" 加以修飾, 表示該類型為無符號型, 此時(shí)該列的取值范圍為 0到16777215;
- "not null" 說明該列的值不能為空, 必需要填, 假設(shè)不指定該屬性, 默認(rèn)可為空;
- "auto_increment" 需在整數(shù)列中使用, 其作用是在插入數(shù)據(jù)時(shí)若該列為 NULL, MySQL將自己主動(dòng)產(chǎn)生一個(gè)比現(xiàn)存值更大的唯一標(biāo)識符值。在每張表中僅能有一個(gè)這種值且所在列必須為索引列。
- "primary key" 表示該列是表的主鍵, 本列的值必須唯一, MySQL將自己主動(dòng)索引該列。
以下的 char(8) 表示存儲(chǔ)的字符長度為8, tinyint的取值范圍為 -127到128, default 屬性指定當(dāng)該列值為空時(shí)的默認(rèn)值。
很多其它的數(shù)據(jù)類型請參閱? 《MySQL數(shù)據(jù)類型》 ?:? http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
提示:?1. 使用 show tables; 命令可查看已創(chuàng)建了表的名稱; 2. 使用 describe 表名; 命令可查看已創(chuàng)建的表的具體信息。
?
操作MySQL數(shù)據(jù)庫
向表中插入數(shù)據(jù)
insert 語句能夠用來將一行或多行數(shù)據(jù)插到數(shù)據(jù)庫表中, 使用的一般形式例如以下:
insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
當(dāng)中 [] 內(nèi)的內(nèi)容是可選的, 比如, 要給 samp_db 數(shù)據(jù)庫中的 students 表插入一條記錄, 運(yùn)行語句:
insert into students values(NULL, "王剛", "男", 20, "13811371377");
按回車鍵確認(rèn)后若提示 Query Ok, 1 row affected (0.05 sec) 表示數(shù)據(jù)插入成功。 若插入失敗請檢查是否已選擇須要操作的數(shù)據(jù)庫。
有時(shí)我們僅僅須要插入部分?jǐn)?shù)據(jù), 或者不依照列的順序進(jìn)行插入, 能夠使用這種形式進(jìn)行插入:
insert into students (name, sex, age) values("孫麗華", "女", 21);
查詢表中的數(shù)據(jù)
select 語句經(jīng)常使用來依據(jù)一定的查詢規(guī)則到數(shù)據(jù)庫中獲取數(shù)據(jù), 其主要的使用方法為:
select 列名稱 from 表名稱 [查詢條件];
比如要查詢 students 表中全部學(xué)生的名字和年齡, 輸入語句 select name, age from students; 運(yùn)行結(jié)果例如以下:
mysql> select name, age from students; +--------+-----+ | name | age | +--------+-----+ | 王剛 | 20 | | 孫麗華 | 21 | | 王永恒 | 23 | | 鄭俊杰 | 19 | | 陳芳 | 22 | | 張偉朋 | 21 | +--------+-----+ 6 rows in set (0.00 sec) mysql>
也能夠使用通配符 * 查詢表中全部的內(nèi)容, 語句: select * from students;
按特定條件查詢:
where 關(guān)鍵詞用于指定查詢條件, 使用方法形式為:? select 列名稱 from 表名稱 where 條件;
以查詢?nèi)啃詣e為女的信息為例, 輸入查詢語句: select * from students where sex="女";
where 子句不只支持 "where 列名 = 值" 這樣的名等于值的查詢形式, 對一般的比較運(yùn)算的運(yùn)算符都是支持的, 比如 =、>、<、>=、<、!= 以及一些擴(kuò)展運(yùn)算符 is [not] null、in、like 等等。 還能夠?qū)Σ樵儣l件使用 or 和 and 進(jìn)行組合查詢, 以后還會(huì)學(xué)到更加高級的條件查詢方式, 這里不再多做介紹。
演示樣例:
查詢年齡在21歲以上的全部人信息: select * from students where age > 21;
查詢名字中帶有 "王" 字的全部人信息: select * from students where name like "%王%";
查詢id小于5且年齡大于20的全部人信息: select * from students where id<5 and age>20;
更新表中的數(shù)據(jù)
update 語句可用來改動(dòng)表中的數(shù)據(jù), 主要的使用形式為:
update 表名稱 set 列名稱=新值 where 更新條件;
使用演示樣例:
將id為5的手機(jī)號改為默認(rèn)的"-": update students set tel=default where id=5;
將全部人的年齡添加1: update students set age=age+1;
將手機(jī)號為 13288097888 的姓名改為 "張偉鵬", 年齡改為 19: update students set name="張偉鵬", age=19 where tel="13288097888";
刪除表中的數(shù)據(jù)
delete 語句用于刪除表中的數(shù)據(jù), 基本使用方法為:
delete from 表名稱 where 刪除條件;
使用演示樣例:
刪除id為2的行: delete from students where id=2;
刪除全部年齡小于21歲的數(shù)據(jù): delete from students where age<20;
刪除表中的全部數(shù)據(jù): delete from students;
?
創(chuàng)建后表的改動(dòng)
alter table 語句用于創(chuàng)建后對表的改動(dòng), 基礎(chǔ)使用方法例如以下:
加入列
基本形式:? alter table 表名 add 列名 列數(shù)據(jù)類型 [after 插入位置];
演示樣例:
在表的最后追加列 address: alter table students add address char(60);
在名為 age 的列后插入列 birthday: alter table students add birthday date after age;
改動(dòng)列
基本形式:? alter table 表名 change 列名稱 列新名稱 新數(shù)據(jù)類型;
演示樣例:
將表 tel 列改名為 telphone: alter table students change tel telphone char(13) default "-";
將 name 列的數(shù)據(jù)類型改為 char(16): alter table students change name name char(16) not null;
刪除列
基本形式:? alter table 表名 drop 列名稱;
演示樣例:
刪除 birthday 列: alter table students drop birthday;
重命名表
基本形式:? alter table 表名 rename 新表名;
演示樣例:
重命名 students 表為 workmates: alter table students rename workmates;
刪除整張表
基本形式:? drop table 表名;
演示樣例:?刪除 workmates 表: drop table workmates;
刪除整個(gè)數(shù)據(jù)庫
基本形式:? drop database 數(shù)據(jù)庫名;
演示樣例:?刪除 samp_db 數(shù)據(jù)庫: drop database samp_db;
?
附錄
改動(dòng) root 用戶password
依照本文的安裝方式, root 用戶默認(rèn)是沒有password的, 重設(shè) root password的方式也較多, 這里僅介紹一種較經(jīng)常使用的方式。
使用 mysqladmin 方式:
打開命令提示符界面, 運(yùn)行命令:? mysqladmin -u root -p password 新密碼
運(yùn)行后提示輸入舊password完畢password改動(dòng), 當(dāng)舊password為空時(shí)直接按回車鍵確認(rèn)就可以。
可視化管理工具 MySQL Workbench
雖然我們能夠在命令提示符下通過一行行的輸入或者通過重定向文件來運(yùn)行mysql語句, 但該方式效率較低, 因?yàn)闆]有運(yùn)行前的語法自己主動(dòng)檢查, 輸入失誤造成的一些錯(cuò)誤的可能性會(huì)大大添加, 這時(shí)最好還是試試一些可視化的MySQL數(shù)據(jù)庫管理工具, MySQL Workbench 就是 MySQL 官方 為 MySQL 提供的一款可視化管理工具, 你能夠在里面通過可視化的方式直接管理數(shù)據(jù)庫中的內(nèi)容, 而且 MySQL Workbench 的 SQL 腳本編輯器支持語法高亮以及輸入時(shí)的語法檢查, 當(dāng)然, 它的功能強(qiáng)大, 絕不僅限于這兩點(diǎn)。
MySQL Workbench官方介紹:? http://www.mysql.com/products/workbench/
MySQL Workbench 下載頁:? http://dev.mysql.com/downloads/tools/workbench/
以下是在linux下的經(jīng)常使用指令:
Mysql安裝文件夾
數(shù)據(jù)庫文件夾
/var/lib/mysql/
配置文件
/usr/share/mysql(mysql.server命令及配置文件)
相關(guān)命令
/usr/bin(mysqladmin mysqldump等命令)
啟動(dòng)腳本
/etc/init.d/mysql(啟動(dòng)腳本文件mysql的文件夾)
系統(tǒng)管理
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
