c mysql 添加数据类型_MYSQL的常用命令和增删改查语句和数据类型
連接命令:mysql -h[主機(jī)地址] -u[用戶名] -p[用戶密碼]
創(chuàng)建數(shù)據(jù)庫(kù):create database [庫(kù)名]
顯示所有數(shù)據(jù)庫(kù): show databases;
打開數(shù)據(jù)庫(kù):use [庫(kù)名]
當(dāng)前選擇的庫(kù)狀態(tài):SELECT DATABASE();
創(chuàng)建數(shù)據(jù)表:CREATE TABLE [表名]([字段名] [字段類型]([字段要求]) [字段參數(shù)], ......);
顯示數(shù)據(jù)表字段:describe 表名;
當(dāng)前庫(kù)數(shù)據(jù)表結(jié)構(gòu):show tables;
更改表格
ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE
說(shuō)明:增加一個(gè)欄位(沒有刪除某個(gè)欄位的語(yǔ)法。
ALTER TABLE [表名] ADD PRIMARY KEY ([字段名])
說(shuō)明:更改表得的定義把某個(gè)欄位設(shè)為主鍵。
ALTER TABLE [表名] DROP PRIMARY KEY ([字段名])
說(shuō)明:把主鍵的定義刪除。
顯示當(dāng)前表字段:show columns from tablename;
刪庫(kù):drop database [庫(kù)名];
刪表:drop table [表名];
數(shù)據(jù)操作
添加:INSERT INTO [表名] VALUES('''','''',......順序排列的數(shù)據(jù));
查詢: SELECT * FROM [表名] WHERE ([條件]);
建立索引:CREATE INDEX [索引文件名] ON [表名] ([字段名]);
刪除:DELETE FROM [表名] WHERE ([條件]);
修改:UPDATE [表名] SET [修改內(nèi)容如name = ''Mary''] WHERE [條件];
導(dǎo)入外部數(shù)據(jù)文本:
1.執(zhí)行外部的sql腳本
當(dāng)前數(shù)據(jù)庫(kù)上執(zhí)行:mysql < input.sql
指定數(shù)據(jù)庫(kù)上執(zhí)行:mysql [表名] < input.sql
2.數(shù)據(jù)傳入命令 load data local infile "[文件名]" into table [表名];
備份數(shù)據(jù)庫(kù):(dos下)
mysqldump --opt school>school.bbb
提示:常用MySQL命令以";"結(jié)束,有少量特殊命令不能加";"結(jié)束,如備份數(shù)據(jù)庫(kù)
一. 增刪改查操作
=================================================================================
1. 增:
insert into 表名 values(0,''測(cè)試'');
注:如上語(yǔ)句,表結(jié)構(gòu)中有自動(dòng)增長(zhǎng)的列,也必須為其指定一個(gè)值,通常為0
insert into 表名(id,name) values(0,''尹當(dāng)'')--同上
2.刪數(shù)據(jù):
delete from 表名;
delete from 表名 where id=1;
刪除結(jié)構(gòu):
刪數(shù)據(jù)庫(kù):drop database 數(shù)據(jù)庫(kù)名;
刪除表:drop table 表名;
刪除表中的列:alter table 表名 drop column 列名;
3. 改:
修改所有:updata 表名 set 列名=''新的值,非數(shù)字加單引號(hào)'' ;
帶條件的修改:updata 表名 set 列名=''新的值,非數(shù)字加單引號(hào)'' where id=6;
4.查:
查詢所有的數(shù)據(jù):select *from 表名;
帶條件的查詢:
select *from 表名 where 列名=條件值;
Select * from 表名 where 列名 not like(like) ''字符值''
分頁(yè)查詢:select *from 表名 limit 每頁(yè)數(shù)量 offset 偏移量;
二.操作命令
=================================================================================
1. 查看數(shù)據(jù)庫(kù)信息:show databases;
2.查看表信息:show tables;
3.查看表的結(jié)構(gòu):desc 表名
4. 新建數(shù)據(jù)庫(kù):create database 數(shù)據(jù)庫(kù)名;
5.操作指定數(shù)據(jù)庫(kù):use 數(shù)據(jù)庫(kù)名;
6.新建數(shù)據(jù)表(先use 操作庫(kù));
create table 表名(規(guī)范為tbl_表名)
(
id int auto_increment primary key,( auto_increment為自動(dòng)增長(zhǎng))
name varchar(20) primary key
)ENGINE=InnoDB DEFAULT CHARSET=gbk//支持事務(wù)和設(shè)置表的編碼
6.2添加主外鍵:
alter table 外表名? add constraint FK_名稱 foreign key(外列) references 主表名(主列)
如現(xiàn)有兩表 主表tbl_order 子表tbl_orderdetail 現(xiàn)子表tbl_orderdetail的oid列引用了主表tbl_order的oid列
則命令如下:
alter table tbl_orderdetail? add constraint FK_oid foreign key(oid) references tbl_order(oid)
7.導(dǎo)出表,備份到一個(gè)文件中,如.txt,.doc
cmd命令窗口:mysqldump -u 用戶名? -p? 需要備份的數(shù)據(jù)庫(kù)名 >備份的文件的保存路徑和文件名
注:如指定的文件不存在,mysql會(huì)自動(dòng)添加一個(gè)文件,此命令不能加分號(hào)結(jié)尾(文件沒有備份建數(shù)據(jù)庫(kù)操作)
8.導(dǎo)入數(shù)據(jù)庫(kù)備份文件:
(1).在mysql命令窗口
(2).新建一個(gè)要導(dǎo)入的數(shù)據(jù)庫(kù)(因?yàn)閭浞葜袥]有備份建數(shù)據(jù)庫(kù)操作)
(3).use 當(dāng)前庫(kù)名
(4).source 備份的文件的保存路徑和文件名(此命令不能加分號(hào)結(jié)尾)
三:系統(tǒng)操作
=================================================================================
1. 打開服務(wù):net start mysql(mysql為配置時(shí),可自定名稱)
2.關(guān)閉服務(wù):net stop mysql
3.從cmd 模式進(jìn)入mysql
(1).mysql -u 用戶名 -p 回車>輸入正確密碼>進(jìn)入歡迎
(2).mysql -h IP(本機(jī)localhost) -u 用戶名 -p 回車>輸入正確密碼>進(jìn)入歡迎
3.退出:exit/quit;
4.修改用戶密碼:mysqladmin -u 用戶名 -p password 新密碼
5.處理中文亂碼:
(1).在D:/MySQL /MySQL Server 5.0/data的操作數(shù)據(jù)為文件中查看是否為以下:
default-character-set=gbk
default-collation=gbk_chinese_ci
(2).查看安裝文件默認(rèn)編碼:D:/MySQL/MySQL Server 5.0>my>default-character-set=gbk
=================================================================================
啟動(dòng):net start mySql;
進(jìn)入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
列出數(shù)據(jù)庫(kù):show databases;
選擇數(shù)據(jù)庫(kù):use databaseName;
列出表格:show tables;
顯示表格列的屬性:show columns from tableName;
建立數(shù)據(jù)庫(kù):source fileName.txt;
匹配字符:可以用通配符_代表任何一個(gè)字符,%代表任何字符串;
增加一個(gè)字段:alter table tabelName add column fieldName dateType;
增加多個(gè)字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
多行命令輸入:注意不能將單詞斷開;當(dāng)插入或更改數(shù)據(jù)時(shí),不能將字段的字符串展開到多行里,否則硬回車將被儲(chǔ)存到數(shù)據(jù)中;
增加一個(gè)管理員帳戶:grant all on *.* to?user@localhost?identified by "password";
每條語(yǔ)句輸入完畢后要在末尾填加分號(hào)'';'',或者填加''/g''也可以;
查詢時(shí)間:select now();
查詢當(dāng)前用戶:select user();
查詢數(shù)據(jù)庫(kù)版本:select version();
查詢當(dāng)前使用的數(shù)據(jù)庫(kù):select database();
1、刪除student_course數(shù)據(jù)庫(kù)中的students數(shù)據(jù)表:
rm -f student_course/students.*
2、備份數(shù)據(jù)庫(kù):(將數(shù)據(jù)庫(kù)test備份)
mysqldump -u root -p test>c:/test.txt
備份表格:(備份test數(shù)據(jù)庫(kù)下的mytable表格)
mysqldump -u root -p test mytable>c:/test.txt
將備份數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù):(導(dǎo)回test數(shù)據(jù)庫(kù))
mysql -u root -p test
3、創(chuàng)建臨時(shí)表:(建立臨時(shí)表zengchao)
create temporary table zengchao(name varchar(10));
4、創(chuàng)建表是先判斷表是否存在
create table if not exists students(……);
5、從已經(jīng)有的表中復(fù)制表的結(jié)構(gòu)
create table table2 select * from table1 where 1<>1;
6、復(fù)制表
create table table2 select * from table1;
7、對(duì)表重新命名
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、創(chuàng)建索引
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、聯(lián)合字符或者多個(gè)列(將列id與":"和列name和"="連接)
select concat(id,'':'',name,''='') from students;
12、limit(選出10到20條)
select * from students order by id limit 9,10;
13、MySQL不支持的功能
事務(wù),視圖,外鍵和引用完整性,存儲(chǔ)過(guò)程和觸發(fā)器
14、MySQL會(huì)使用索引的操作符號(hào)
=,>,=,between,in,不帶%或者_(dá)開頭的like
15、使用索引的缺點(diǎn)
1)減慢增刪改數(shù)據(jù)的速度;
2)占用磁盤空間;
3)增加查詢優(yōu)化器的負(fù)擔(dān);
當(dāng)查詢優(yōu)化器生成執(zhí)行計(jì)劃時(shí),會(huì)考慮索引,太多的索引會(huì)給查詢優(yōu)化器增加工作量,導(dǎo)致無(wú)法選擇最優(yōu)的查詢方案;
16、分析索引效率
方法:在一般的SQL語(yǔ)句前加上explain;
分析結(jié)果的含義:
1)table:表名;
2)type:連接的類型,(ALL/Range/Ref)。其中ref是最理想的;
3)possible_keys:查詢可以利用的索引名;
4)key:實(shí)際使用的索引;
5)key_len:索引中被使用部分的長(zhǎng)度(字節(jié));
6)ref:顯示列名字或者"const"(不明白什么意思);
7)rows:顯示MySQL認(rèn)為在找到正確結(jié)果之前必須掃描的行數(shù);
8)extra:MySQL的建議;
17、使用較短的定長(zhǎng)列
1)盡可能使用較短的數(shù)據(jù)類型;
2)盡可能使用定長(zhǎng)數(shù)據(jù)類型;
a)用char代替varchar,固定長(zhǎng)度的數(shù)據(jù)處理比變長(zhǎng)的快些;
b)對(duì)于頻繁修改的表,磁盤容易形成碎片,從而影響數(shù)據(jù)庫(kù)的整體性能;
c)萬(wàn)一出現(xiàn)數(shù)據(jù)表崩潰,使用固定長(zhǎng)度數(shù)據(jù)行的表更容易重新構(gòu)造。使用固定長(zhǎng)度的數(shù)據(jù)行,每個(gè)記錄的開始位置都是固定記錄長(zhǎng)度的倍數(shù),可以很容易被檢測(cè)到,但是使用可變長(zhǎng)度的數(shù)據(jù)行就不一定了;
d)對(duì)于MyISAM類型的數(shù)據(jù)表,雖然轉(zhuǎn)換成固定長(zhǎng)度的數(shù)據(jù)列可以提高性能,但是占據(jù)的空間也大;
18、使用not null和enum
盡量將列定義為not null,這樣可使數(shù)據(jù)的出來(lái)更快,所需的空間更少,而且在查詢時(shí),MySQL不需要檢查是否存在特例,即null值,從而優(yōu)化查詢;
如果一列只含有有限數(shù)目的特定值,如性別,是否有效或者入學(xué)年份等,在這種情況下應(yīng)該考慮將其轉(zhuǎn)換為enum列的值,MySQL處理的更快,因?yàn)樗械膃num值在系統(tǒng)內(nèi)都是以標(biāo)識(shí)數(shù)值來(lái)表示的;
19、使用optimize table
對(duì)于經(jīng)常修改的表,容易產(chǎn)生碎片,使在查詢數(shù)據(jù)庫(kù)時(shí)必須讀取更多的磁盤塊,降低查詢性能。具有可變長(zhǎng)的表都存在磁盤碎片問(wèn)題,這個(gè)問(wèn)題對(duì)blob數(shù)據(jù)類型更為突出,因?yàn)槠涑叽缱兓浅4蟆?梢酝ㄟ^(guò)使用optimize table來(lái)整理碎片,保證數(shù)據(jù)庫(kù)性能不下降,優(yōu)化那些受碎片影響的數(shù)據(jù)表。 optimize table可以用于MyISAM和BDB類型的數(shù)據(jù)表。實(shí)際上任何碎片整理方法都是用mysqldump來(lái)轉(zhuǎn)存數(shù)據(jù)表,然后使用轉(zhuǎn)存后的文件并重新建數(shù)據(jù)表;
20、使用procedure analyse()
可以使用procedure analyse()顯示最佳類型的建議,使用很簡(jiǎn)單,在select語(yǔ)句后面加上procedure analyse()就可以了;例如:
select * from students procedure analyse();
select * from students procedure analyse(16,256);
第二條語(yǔ)句要求procedure analyse()不要建議含有多于16個(gè)值,或者含有多于256字節(jié)的enum類型,如果沒有限制,輸出可能會(huì)很長(zhǎng);
21、使用查詢緩存
1)查詢緩存的工作方式:
第一次執(zhí)行某條select語(yǔ)句時(shí),服務(wù)器記住該查詢的文本內(nèi)容和查詢結(jié)果,存儲(chǔ)在緩存中,下次碰到這個(gè)語(yǔ)句時(shí),直接從緩存中返回結(jié)果;當(dāng)更新數(shù)據(jù)表后,該數(shù)據(jù)表的任何緩存查詢都變成無(wú)效的,并且會(huì)被丟棄。
2)配置緩存參數(shù):
變量:query_cache _type,查詢緩存的操作模式。有3中模式,0:不緩存;1:緩存查詢,除非與 select sql_no_cache開頭;2:根據(jù)需要只緩存那些以select sql_cache開頭的查詢; query_cache_size:設(shè)置查詢緩存的最大結(jié)果集的大小,比這個(gè)值大的不會(huì)被緩存。
22、調(diào)整硬件
1)在機(jī)器上裝更多的內(nèi)存;
2)增加更快的硬盤以減少I/O等待時(shí)間;
尋道時(shí)間是決定性能的主要因素,逐字地移動(dòng)磁頭是最慢的,一旦磁頭定位,從磁道讀則很快;
3)在不同的物理硬盤設(shè)備上重新分配磁盤活動(dòng);
如果可能,應(yīng)將最繁忙的數(shù)據(jù)庫(kù)存放在不同的物理設(shè)備上,這跟使用同一物理設(shè)備的不同分區(qū)是不同的,因?yàn)樗鼈儗?zhēng)用相同的物理資源(磁頭)。
一、連接MYSQL。
格式: mysql -h主機(jī)地址 -u用戶名 -p用戶密碼
1、例1:連接到本機(jī)上的MYSQL。
首先在打開DOS窗口,然后進(jìn)入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車后提示你輸密碼,如果剛安裝好MYSQL,超級(jí)用戶root是沒有密碼的,故直接回車即可進(jìn)入到MYSQL中了,MYSQL的提示符是:mysql>
2、例2:連接到遠(yuǎn)程主機(jī)上的MYSQL。假設(shè)遠(yuǎn)程主機(jī)的IP為:110.110.110.110,用戶名為 root,密碼為abcd123。則鍵入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u與root可以不用加空格,其它也一樣)
3、退出MYSQL命令: exit (回車)
二、修改密碼。
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
1、例1:給root加個(gè)密碼ab12。首先在DOS下進(jìn)入目錄mysqlbin,然后鍵入以下命令
mysqladmin -uroot -password ab12
注:因?yàn)殚_始時(shí)root沒有密碼,所以-p舊密碼一項(xiàng)就可以省略了。
2、例2:再將root的密碼改為djg345。
mysqladmin -uroot -pab12 password djg345
三、增加新用戶。(注意:和上面不同,下面的因?yàn)槭荕YSQL環(huán)境中的命令,所以后面都帶一個(gè)分號(hào)作為命令結(jié)束符)
格式:grant select on 數(shù)據(jù)庫(kù).* to 用戶名@登錄主機(jī) identified by /"密碼/"
例1、增加一個(gè)用戶test1密碼為abc,讓他可以在任何主機(jī)上登錄,并對(duì)所有數(shù)據(jù)庫(kù)有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入MYSQL,然后鍵入以下命令:
grant select,insert,update,delete on *.* to?test1@/"%/" Identified by /"abc/";
但例1增加的用戶是十分危險(xiǎn)的,你想如某個(gè)人知道test1的密碼,那么他就可以在internet上的任何一臺(tái)電腦上登錄你的mysql數(shù)據(jù)庫(kù)并對(duì)你的數(shù)據(jù)可以為所欲為了,解決辦法見例2。
例 2、增加一個(gè)用戶test2密碼為abc,讓他只可以在localhost上登錄,并可以對(duì)數(shù)據(jù)庫(kù)mydb進(jìn)行查詢、插入、修改、刪除的操作(localhost指本地主機(jī),即MYSQL數(shù)據(jù)庫(kù)所在的那臺(tái)主機(jī)),這樣用戶即使用知道test2的密碼,他也無(wú)法從 internet上直接訪問(wèn)數(shù)據(jù)庫(kù),只能通過(guò)MYSQL主機(jī)上的web頁(yè)來(lái)訪問(wèn)了。
grant select,insert,update,delete on mydb.* to?test2@localhost?identified by /"abc/";
如果你不想test2有密碼,可以再打一個(gè)命令將密碼消掉。
grant select,insert,update,delete on mydb.* to?test2@localhost?identified by /"/";
在上篇我們講了登錄、增加用戶、密碼更改等問(wèn)題。下篇我們來(lái)看看MYSQL中有關(guān)數(shù)據(jù)庫(kù)方面的操作。注意:你必須首先登錄到MYSQL中,以下操作都是在MYSQL的提示符下進(jìn)行的,而且每個(gè)命令以分號(hào)結(jié)束。
一、操作技巧
1、如果你打命令時(shí),回車后發(fā)現(xiàn)忘記加分號(hào),你無(wú)須重打一遍命令,只要打個(gè)分號(hào)回車就可以了。也就是說(shuō)你可以把一個(gè)完整的命令分成幾行來(lái)打,完后用分號(hào)作結(jié)束標(biāo)志就OK。
2、你可以使用光標(biāo)上下鍵調(diào)出以前的命令。但以前我用過(guò)的一個(gè)MYSQL舊版本不支持。我現(xiàn)在用的是mysql- 3.23.27-beta-win。
二、顯示命令
1、顯示數(shù)據(jù)庫(kù)列表。
show databases;
剛開始時(shí)才兩個(gè)數(shù)據(jù)庫(kù):mysql和test。mysql庫(kù)很重要它里面有MYSQL的系統(tǒng)信息,我們改密碼和新增用戶,實(shí)際上就是用這個(gè)庫(kù)進(jìn)行操作。
2、顯示庫(kù)中的數(shù)據(jù)表:
use mysql; //打開庫(kù),學(xué)過(guò)FOXBASE的一定不會(huì)陌生吧
show tables;
3、顯示數(shù)據(jù)表的結(jié)構(gòu):
describe 表名;
4、建庫(kù):
create database 庫(kù)名;
5、建表:
use 庫(kù)名;
create table 表名 (字段設(shè)定列表);
6、刪庫(kù)和刪表:
drop database 庫(kù)名;
drop table 表名;
7、將表中記錄清空:
delete from 表名;
8、顯示表中的記錄:
select * from 表名;
三、一個(gè)建庫(kù)和建表以及插入數(shù)據(jù)的實(shí)例
drop database if exists school; //如果存在SCHOOL則刪除
create database school; //建立庫(kù)SCHOOL
use school; //打開庫(kù)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(’’,’glchengang’,’深圳一中’,’1976-10-10’);
insert into teacher values(’’,’jack’,’深圳一中’,’1975-12-23’);
注:在建表中(1)將ID設(shè)為長(zhǎng)度為3的數(shù)字字段:int(3)并讓它每個(gè)記錄自動(dòng)加一:auto_increment并不能為空:not null而且讓他成為主字段primary key(2)將NAME設(shè)為長(zhǎng)度為10的字符字段(3)將ADDRESS設(shè)為長(zhǎng)度50的字符字段,而且缺省值為深圳。varchar和char有什么區(qū)別呢,只有等以后的文章再說(shuō)了。(4)將YEAR設(shè)為日期字段。
如果你在mysql提示符鍵入上面的命令也可以,但不方便調(diào)試。你可以將以上命令原樣寫入一個(gè)文本文件中假設(shè)為 school.sql,然后復(fù)制到c://下,并在DOS狀態(tài)進(jìn)入目錄//mysql//bin,然后鍵入以下命令:
mysql -uroot -p密碼 < c://school.sql
如果成功,空出一行無(wú)任何顯示;如有錯(cuò)誤,會(huì)有提示。(以上命令已經(jīng)調(diào)試,你只要將//的注釋去掉即可使用)。
四、將文本數(shù)據(jù)轉(zhuǎn)到數(shù)據(jù)庫(kù)中
1、文本數(shù)據(jù)應(yīng)符合的格式:字段數(shù)據(jù)之間用tab鍵隔開,null值用//n來(lái)代替.
例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、數(shù)據(jù)傳入命令 load data local infile /"文件名/" into table 表名;
注意:你最好將文件復(fù)制到//mysql//bin目錄下,并且要先用use命令打表所在的庫(kù)。
五、備份數(shù)據(jù)庫(kù):(命令在DOS的//mysql//bin目錄下執(zhí)行)
mysqldump --opt school>school.bbb
注釋:將數(shù)據(jù)庫(kù)school備份到school.bbb文件,school.bbb是一個(gè)文本文件,文件名任取,打開看看你會(huì)有新發(fā)現(xiàn)。
mysql命令行常用命令
第一招、mysql服務(wù)的啟動(dòng)和停止
net stop mysql
net start mysql
第二招、登陸mysql
語(yǔ)法如下: mysql -u用戶名 -p用戶密碼
鍵入命令mysql -uroot -p, 回車后提示你輸入密碼,輸入12345,然后回車即可進(jìn)入到mysql中了,mysql的提示符是:
mysql>
注意,如果是連接到另外的機(jī)器上,則需要加入一個(gè)參數(shù)-h機(jī)器IP
第三招、增加新用戶
格式:grant 權(quán)限 on 數(shù)據(jù)庫(kù).* to 用戶名@登錄主機(jī) identified by "密碼"
如,增加一個(gè)用戶user1密碼為password1,讓其可以在本機(jī)上登錄, 并對(duì)所有數(shù)據(jù)庫(kù)有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入mysql,然后鍵入以下命令:
grant select,insert,update,delete on *.* to?user1@localhost?Identified by "password1";
如果希望該用戶能夠在任何機(jī)器上登陸mysql,則將localhost改為"%"。
如果你不想user1有密碼,可以再打一個(gè)命令將密碼去掉。
grant select,insert,update,delete on mydb.* to?user1@localhost?identified by "";
第四招: 操作數(shù)據(jù)庫(kù)
登錄到mysql中,然后在mysql的提示符下運(yùn)行下列命令,每個(gè)命令以分號(hào)結(jié)束。
1、 顯示數(shù)據(jù)庫(kù)列表。
show databases;
缺省有兩個(gè)數(shù)據(jù)庫(kù):mysql和 test。 mysql庫(kù)存放著mysql的系統(tǒng)和用戶權(quán)限信息,我們改密碼和新增用戶,實(shí)際上就是對(duì)這個(gè)庫(kù)進(jìn)行操作。
2、 顯示庫(kù)中的數(shù)據(jù)表:
use mysql;
show tables;
3、 顯示數(shù)據(jù)表的結(jié)構(gòu):
describe 表名;
4、 建庫(kù)與刪庫(kù):
create database 庫(kù)名;
drop database 庫(kù)名;
5、 建表:
use 庫(kù)名;
create table 表名(字段列表);
drop table 表名;
6、 清空表中記錄:
delete from 表名;
7、 顯示表中的記錄:
select * from 表名;
第五招、導(dǎo)出和導(dǎo)入數(shù)據(jù)
1. 導(dǎo)出數(shù)據(jù):
mysqldump --opt test > mysql.test
即將數(shù)據(jù)庫(kù)test數(shù)據(jù)庫(kù)導(dǎo)出到mysql.test文件,后者是一個(gè)文本文件
如:mysqldump -u root -p123456 --databases dbname > mysql.dbname
就是把數(shù)據(jù)庫(kù)dbname導(dǎo)出到文件mysql.dbname中。
2. 導(dǎo)入數(shù)據(jù):
mysqlimport -u root -p123456 < mysql.dbname。
不用解釋了吧。
3. 將文本數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù):
文本數(shù)據(jù)的字段數(shù)據(jù)之間用tab鍵隔開。
use test;
load data local infile "文件名" into table 表名;
SQL常用命令使用方法:
(1) 數(shù)據(jù)記錄篩選:
sql="select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 數(shù)據(jù)表 where 字段名 like ''%字段值%'' order by 字段名 [desc]"
sql="select top 10 * from 數(shù)據(jù)表 where 字段名 order by 字段名 [desc]"
sql="select * from 數(shù)據(jù)表 where 字段名 in (''值1'',''值2'',''值3'')"
sql="select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2"
(2) 更新數(shù)據(jù)記錄:
sql="update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式"
sql="update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式"
(3) 刪除數(shù)據(jù)記錄:
sql="delete from 數(shù)據(jù)表 where 條件表達(dá)式"
sql="delete from 數(shù)據(jù)表" (將數(shù)據(jù)表所有記錄刪除)
(4) 添加數(shù)據(jù)記錄:
sql="insert into 數(shù)據(jù)表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表" (把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)
(5) 數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù):
AVG(字段名) 得出一個(gè)表格欄平均值
COUNT(*|字段名) 對(duì)數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì)
MAX(字段名) 取得一個(gè)表格欄最大的值
MIN(字段名) 取得一個(gè)表格欄最小的值
SUM(字段名) 把數(shù)據(jù)欄的值相加
引用以上函數(shù)的方法:
sql="select sum(字段名) as 別名 from 數(shù)據(jù)表 where 條件表達(dá)式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統(tǒng)的計(jì)值,其它函數(shù)運(yùn)用同上。
(6) 數(shù)據(jù)表的建立和刪除:
CREATE TABLE 數(shù)據(jù)表名稱(字段1 類型1(長(zhǎng)度),字段2 類型2(長(zhǎng)度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 數(shù)據(jù)表名稱 (永久性刪除一個(gè)數(shù)據(jù)表)
select * from test.text where 1 *表示所有欄目 test指數(shù)據(jù)庫(kù)名text指表名 where指條件
Select remark as r id,uid from test.text where 指id uid 2欄顯示 as 就是給欄目命名
select * from test.text where id>4 指ID大于4的都顯示出來(lái)
select * from test.text where id<>4 指ID 不等于4的都出來(lái)
select * from test.text where id=1 指ID等于1的出來(lái)
select * from test.text where id in(1,3,5) 指找出ID為1 3 5的 not in()則相反
select * from test.text where uid like "%王%" 指UID里只要帶王字的都出來(lái) %王 表示什么王 ,王%表示 王什么。
select * from test.text where remark like "%學(xué)%" 指remark里帶學(xué)的都出來(lái)
select * from test.text where id between 1 and 10 and uid like "%王%"表示ID 1-10 并且 UID帶王字的出來(lái)
select * from test.text where id not between 1 and 4?? 指ID不在1-4里面的 出來(lái)
(1 and 2 表示滿足1且滿足2???? 1 or 2 表示滿足1和滿足2 )and or可以連接很多條件
select * from test.text group by remark 顯示列出remark有多少類別 如圖↓ 有5類 group by 就是分組命令
select * from test.text order by regdate asc 把regdate 按從小到大排列
ASC不打就是默認(rèn)從小到大 DESC表示從大到小 如 order desc
select * from test.text order by regdate asc,id desc 這樣就查詢出日期從小到大 然后在滿足日期的排列后 ID從大到小排列
select * from test.text limit 0,5 表示取5條記錄 如果是3,6 那就是第4-第9條記錄被取出 如圖↓
如過(guò)只寫一個(gè)6那就等于0,6
select * from test.text group by remark order by regdate limit 6?? 先分組 再排序 LIMIT放最后 這是語(yǔ)法不能顛倒。
select count(id) from test.text count()表示查詢有多少條信息 這樣根據(jù)表顯示出10條
select max(regdate) from test.text max() 查詢最大值 只能針對(duì)數(shù)字 包括日期 根據(jù)表顯示出2008-10-22 14:41:30
select min(regdate)from test.text min() 查詢最小值 只能針對(duì)數(shù)字 包括日期 根據(jù)表顯示出2008-10-07 13:21:32
select avg(id) from test.text?? avg() 查詢平均值 也只針對(duì)數(shù)字 包括日期 顯示出5.5 如算平均分?jǐn)?shù)
select sum(id) from test.text?? sum() 查詢累計(jì)值 數(shù)字包括日期 顯示出55 1+2+3+。。10=55 如算總分?jǐn)?shù)
insert 插入語(yǔ)句
insert into `text`(`id`,`uid`,`regdate`,`remark`)values(null,''ken'',now(),''學(xué)生'') 其中null就是沒有 now()就是時(shí)間日期自動(dòng)生成
字段的類型要設(shè)計(jì)好。特別注意!
Update 更改語(yǔ)句
Update 表名 set 字段=值 where 條件 LIMIT(可省略)
update test.text set uid=''kenchen'' where id=11?? 意思是把ID是11的UID 改成kenchen
Delete 刪除語(yǔ)句
Delete from 表命 where limit
Delete from text where id=3 意思是把ID=3的信息條刪除!
mysql 字段類型說(shuō)明- -
MySQL支持大量的列類型,它可以被分為3類:數(shù)字類型、日期和時(shí)間類型以及字符串(字符)類型。本節(jié)首先給出可用類型的一個(gè)概述,并且總結(jié)每個(gè)列類型的存儲(chǔ)需求,然后提供每個(gè)類中的類型性質(zhì)的更詳細(xì)的描述。概述有意簡(jiǎn)化,更詳細(xì)的說(shuō)明應(yīng)該考慮到有關(guān)特定列類型的附加信息,例如你能為其指定值的允許格式。
由MySQL支持的列類型列在下面。下列代碼字母用于描述中:
M
指出最大的顯示尺寸。最大的合法的顯示尺寸是 255 。
D
適用于浮點(diǎn)類型并且指出跟隨在十進(jìn)制小數(shù)點(diǎn)后的數(shù)碼的數(shù)量。最大可能的值是30,但是應(yīng)該不大于M-2。
方括號(hào)(“[”和“]”)指出可選的類型修飾符的部分。
注意,如果你指定一個(gè)了為ZEROFILL,MySQL將為該列自動(dòng)地增加UNSIGNED屬性。
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一個(gè)很小的整數(shù)。有符號(hào)的范圍是-128到127,無(wú)符號(hào)的范圍是0到255。
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一個(gè)小整數(shù)。有符號(hào)的范圍是-32768到32767,無(wú)符號(hào)的范圍是0到65535。
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一個(gè)中等大小整數(shù)。有符號(hào)的范圍是-8388608到8388607,無(wú)符號(hào)的范圍是0到16777215。
INT[(M)] [UNSIGNED] [ZEROFILL]
一個(gè)正常大小整數(shù)。有符號(hào)的范圍是-2147483648到2147483647,無(wú)符號(hào)的范圍是0到4294967295。
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
這是INT的一個(gè)同義詞。
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
一個(gè)大整數(shù)。有符號(hào)的范圍是-9223372036854775808到9223372036854775807,無(wú)符號(hào)的范圍是0到
18446744073709551615。注意,所有算術(shù)運(yùn)算用有符號(hào)的BIGINT或DOUBLE值完成,因此你不應(yīng)該使用大于9223372036854775807(63位)的有符號(hào)大整數(shù),除了位函數(shù)!注意,當(dāng)兩個(gè)參數(shù)是INTEGER值時(shí),-、+和*將使用BIGINT運(yùn)算!這意味著如果你乘2個(gè)大整數(shù)(或來(lái)自于返回整數(shù)的函數(shù)),如果結(jié)果大于9223372036854775807,你可以得到意外的結(jié)果。一個(gè)浮點(diǎn)數(shù)字,不能是無(wú)符號(hào)的,對(duì)一個(gè)單精度浮點(diǎn)數(shù),其精度可以是<=24,對(duì)一個(gè)雙精度浮點(diǎn)數(shù),是在25 和53之間,這些類型如FLOAT和DOUBLE類型馬上在下面描述。FLOAT(X)有對(duì)應(yīng)的FLOAT和DOUBLE相同的范圍,但是顯示尺寸和小數(shù)位數(shù)是未定義的。在MySQL3.23中,這是一個(gè)真正的浮點(diǎn)值。在更早的MySQL版本中,FLOAT(precision)總是有2位小數(shù)。該句法為了ODBC兼容性而提供。
FLOAT[(M,D)] [ZEROFILL]
一個(gè)小(單精密)浮點(diǎn)數(shù)字。不能無(wú)符號(hào)。允許的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。M是顯示寬度而D是小數(shù)的位數(shù)。沒有參數(shù)的FLOAT或有<24 的一個(gè)參數(shù)表示一個(gè)單精密浮點(diǎn)數(shù)字。
DOUBLE[(M,D)] [ZEROFILL]
一個(gè)正常大小(雙精密)浮點(diǎn)數(shù)字。不能無(wú)符號(hào)。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。M是顯示寬度而D是小數(shù)位數(shù)。沒有一個(gè)參數(shù)的DOUBLE或FLOAT(X)(25 < = X < = 53)代表一個(gè)雙精密浮點(diǎn)數(shù)字。
DOUBLE PRECISION[(M,D)] [ZEROFILL]
REAL[(M,D)] [ZEROFILL]
這些是DOUBLE同義詞。
DECIMAL[(M[,D])] [ZEROFILL]
一個(gè)未壓縮(unpack)的浮點(diǎn)數(shù)字。不能無(wú)符號(hào)。行為如同一個(gè)CHAR列:“未壓縮”意味著數(shù)字作為一個(gè)字符串被存儲(chǔ),值的每一位使用一個(gè)字符。小數(shù)點(diǎn),并且對(duì)于負(fù)數(shù),“-”符號(hào)不在M中計(jì)算。如果D是0,值將沒有小數(shù)點(diǎn)或小數(shù)部分。DECIMAL值的最大范圍與DOUBLE相同,但是對(duì)一個(gè)給定的DECIMAL列,實(shí)際的范圍可以通過(guò)M和D的選擇被限制。如果D被省略,它被設(shè)置為0。如果M被省掉,它被設(shè)置為10。注意,在MySQL3.22里,M參數(shù)包括符號(hào)和小數(shù)點(diǎn)。
NUMERIC(M,D) [ZEROFILL]
這是DECIMAL的一個(gè)同義詞。 DATE
一個(gè)日期。支持的范圍是''1000-01-01''到''9999-12-31''。MySQL以''YYYY-MM-DD''格式來(lái)顯示DATE值,但是允許你使用字符串或數(shù)字把值賦給DATE列。
DATETIME
一個(gè)日期和時(shí)間組合。支持的范圍是''1000-01-01 00:00:00''到''9999-12-31 23:59:59''。MySQL以''YYYY-MM-DD HH:MM:SS''格式來(lái)顯示DATETIME值,但是允許你使用字符串或數(shù)字把值賦給DATETIME的列。
TIMESTAMP[(M)]
一個(gè)時(shí)間戳記。范圍是''1970-01-01 00:00:00''到2037年的某時(shí)。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式來(lái)顯示TIMESTAMP值,取決于是否M是14(或省略)、12、8或6,但是允許你使用字符串或數(shù)字把值賦給TIMESTAMP列。一個(gè)TIMESTAMP列對(duì)于記錄一個(gè)INSERT或UPDATE操作的日期和時(shí)間是有用的,因?yàn)槿绻悴蛔约航o它賦值,它自動(dòng)地被設(shè)置為最近操作的日期和時(shí)間。你以可以通過(guò)賦給它一個(gè)NULL值設(shè)置它為當(dāng)前的日期和時(shí)間。
TIME
一個(gè)時(shí)間。范圍是''-838:59:59''到''838:59:59''。MySQL以''HH:MM:SS''格式來(lái)顯示TIME值,但是允許你使用字符串或數(shù)字把值賦給TIME列。
YEAR[(2|4)]
一個(gè)2或4位數(shù)字格式的年(缺省是4位)。允許的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69)。MySQL以YYYY格式來(lái)顯示YEAR值,但是允許你把使用字符串或數(shù)字值賦給YEAR列。(YEAR類型在MySQL3.22中是新類型。)
CHAR(M) [BINARY]
一個(gè)定長(zhǎng)字符串,當(dāng)存儲(chǔ)時(shí),總是是用空格填滿右邊到指定的長(zhǎng)度。M的范圍是1 ~ 255個(gè)字符。當(dāng)值被檢索時(shí),空格尾部被刪除。CHAR值根據(jù)缺省字符集以大小寫不區(qū)分的方式排序和比較,除非給出BINARY關(guān)鍵詞。NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式來(lái)定義CHAR列應(yīng)該使用缺省字符集。這是MySQL的缺省。CHAR是CHARACTER的一個(gè)縮寫。
[NATIONAL] VARCHAR(M) [BINARY]
一個(gè)變長(zhǎng)字符串。注意:當(dāng)值被存儲(chǔ)時(shí),尾部的空格被刪除(這不同于ANSI SQL規(guī)范)。M的范圍是1 ~ 255個(gè)字符。 VARCHAR值根據(jù)缺省字符集以大小寫不區(qū)分的方式排序和比較,除非給出BINARY關(guān)鍵詞值。 VARCHAR是CHARACTER VARYING一個(gè)縮寫。
TINYBLOB
TINYTEXT
一個(gè)BLOB或TEXT列,最大長(zhǎng)度為255(2^8-1)個(gè)字符。
BLOB
TEXT
一個(gè)BLOB或TEXT列,最大長(zhǎng)度為65535(2^16-1)個(gè)字符。
MEDIUMBLOB
MEDIUMTEXT
一個(gè)BLOB或TEXT列,最大長(zhǎng)度為16777215(2^24-1)個(gè)字符。
LONGBLOB
LONGTEXT
一個(gè)BLOB或TEXT列,最大長(zhǎng)度為4294967295(2^32-1)個(gè)字符。
ENUM(''value1'',''value2'',...)
枚舉。一個(gè)僅有一個(gè)值的字符串對(duì)象,這個(gè)值式選自與值列表''value1''、''value2'', ...,或NULL。一個(gè)ENUM最多能有65535不同的值。
SET(''value1'',''value2'',...)
一個(gè)集合。能有零個(gè)或多個(gè)值的一個(gè)字符串對(duì)象,其中每一個(gè)必須從值列表''value1'', ''value2'', ...選出。一個(gè)SET最多能有64個(gè)成員。
總結(jié)
以上是生活随笔為你收集整理的c mysql 添加数据类型_MYSQL的常用命令和增删改查语句和数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 正则表达式python实例_常见的pyt
- 下一篇: php mysql_fetch_arra