1. 程式人生 > >mysql數據庫的增刪改查語句

mysql數據庫的增刪改查語句

mss 成功 -h 突出 返回 name 存在 從大到小 修改用戶密碼

連接命令:mysql -h[主機地址] -u[用戶名] -p[用戶密碼] 創建數據庫:create database [庫名] 顯示所有數據庫: show databases; 打開數據庫:use [庫名] 當前選擇的庫狀態:SELECT DATABASE(); 創建數據表:CREATE TABLE [表名]([字段名] [字段類型]([字段要求]) [字段參數], ......); 顯示數據表字段:describe 表名; 當前庫數據表結構:show tables; ======================================================================= 更改表格 
ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE 說明:增加一個欄位(沒有刪除某個欄位的語法。 ALTER TABLE [表名] ADD PRIMARY KEY ([字段名]) 說明:更改表得的定義把某個欄位設為主鍵。 ALTER TABLE [表名] DROP PRIMARY KEY ([字段名]) 說明:把主鍵的定義刪除。 顯示當前表字段:show columns from tablename; 刪庫:drop database [庫名]; 刪表:drop table [表名]; ====================================================================== 數據操作 添加:INSERT INTO [表名] VALUES(‘‘,‘‘,......順序排列的數據); 查詢: SELECT * FROM [表名] WHERE ([條件]); 建立索引:CREATE INDEX [索引文件名] ON [表名] ([字段名]); 刪除:DELETE FROM [表名] WHERE ([條件]); 修改:UPDATE [表名] SET [修改內容如name = ‘Mary‘] WHERE [條件]; 導入外部數據文本: 1.執行外部的sql腳本 當前數據庫上執行:mysql < input.sql 指定數據庫上執行:mysql [表名] < input.sql 2.數據傳入命令 load data local infile "[文件名]" into table [表名]; 備份數據庫:(dos下) mysqldump --opt school>school.bbb 提示:常用MySQL命令以";"結束,有少量特殊命令不能加";"結束,如備份數據庫 一. 增刪改查操作 ================================================================================= 1. 增: insert into 表名 values(0,‘測試‘); 註:如上語句,表結構中有自動增長的列,也必須為其指定一個值,通常為0 insert into 表名(id,name) values(0,‘尹當‘)--同上 2.刪數據: delete from 表名; delete from 表名 where id=1; 刪除結構: 刪數據庫:drop database 數據庫名; 刪除表:drop table 表名; 刪除表中的列:alter table 表名 drop column 列名; 3. 改: 修改所有:updata 表名 set 列名=‘新的值,非數字加單引號‘ ; 帶條件的修改:updata 表名 set 列名=‘新的值,非數字加單引號‘ where id=6; 4.查: 查詢所有的數據:select *from 表名; 帶條件的查詢: select *from 表名 where 列名=條件值; Select * from 表名 where 列名 not like(like) ‘字符值‘ 分頁查詢:select *from 表名 limit 每頁數量 offset 偏移量; 二.操作命令 ================================================================================= 1. 查看數據庫信息:show databases; 2.查看表信息:show tables; 3.查看表的結構:desc 表名 4. 新建數據庫:create database 數據庫名; 5.操作指定數據庫:use 數據庫名; 6.新建數據表(先use 操作庫); create table 表名(規範為tbl_表名) ( id int auto_increment primary key,( auto_increment為自動增長) name varchar(20) primary key )ENGINE=InnoDB DEFAULT CHARSET=gbk//支持事務和設置表的編碼 6.2添加主外鍵: alter table 外表名 add constraint FK_名稱 foreign key(外列) references 主表名(主列) 如現有兩表 主表tbl_order 子表tbl_orderdetail 現子表tbl_orderdetail的oid列引用了主表 tbl_order的oid列 則命令如下: alter table tbl_orderdetail add constraint FK_oid foreign key(oid) references tbl_order(oid) 7.導出表,備份到一個文件中,如.txt,.doc cmd命令窗口:mysqldump -u 用戶名 -p 需要備份的數據庫名 >備份的文件的保存路徑和文件 名 註:如指定的文件不存在,mysql會自動添加一個文件,此命令不能加分號結尾(文件沒有備份建 數據庫操作) 8.導入數據庫備份文件: (1).在mysql命令窗口 (2).新建一個要導入的數據庫(因為備份中沒有備份建數據庫操作) (3).use 當前庫名 (4).source 備份的文件的保存路徑和文件名(此命令不能加分號結尾) 三:系統操作 ================================================================================= 1. 打開服務:net start mysql(mysql為配置時,可自定名稱) 2.關閉服務:net stop mysql 3.從cmd 模式進入mysql (1).mysql -u 用戶名 -p 回車>輸入正確密碼>進入歡迎 (2).mysql -h IP(本機localhost) -u 用戶名 -p 回車>輸入正確密碼>進入歡迎 3.退出:exit/quit; 4.修改用戶密碼:mysqladmin -u 用戶名 -p password 新密碼 5.處理中文亂碼: (1).在D:/MySQL /MySQL Server 5.0/data的操作數據為文件中查看是否為以下: default-character-set=gbk default-collation=gbk_chinese_ci (2).查看安裝文件默認編碼:D:/MySQL/MySQL Server 5.0>my>default-character-set=gbk ================================================================================= 啟動:net start mySql; 進入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出數據庫:show databases; 選擇數據庫:use databaseName; 列出表格:show tables; 顯示表格列的屬性:show columns from tableName; 建立數據庫: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 [email protected]
/* */ identified by "password"; 每條語句輸入完畢後要在末尾填加分號‘;‘,或者填加‘/g‘也可以; 查詢時間:select now(); 查詢當前用戶:select user(); 查詢數據庫版本:select version(); 查詢當前使用的數據庫:select database(); 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 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、復制表 create table table2 select * from 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)在不同的物理硬盤設備上重新分配磁盤活動; 如果可能,應將最繁忙的數據庫存放在不同的物理設備上,這跟使用同一物理設備的不同分區是 不同的,因為它們將爭用相同的物理資源(磁頭)。 一、連接MYSQL。 格式: mysql -h主機地址 -u用戶名 -p用戶密碼 1、例1:連接到本機上的MYSQL。 首先在打開DOS窗口,然後進入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車後提示你輸密 碼,如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進入到MYSQL中了,MYSQL 的提示符是:mysql> 2、例2:連接到遠程主機上的MYSQL。假設遠程主機的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加個密碼ab12。首先在DOS下進入目錄mysqlbin,然後鍵入以下命令 mysqladmin -uroot -password ab12 註:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。 2、例2:再將root的密碼改為djg345。 mysqladmin -uroot -pab12 password djg345 三、增加新用戶。(註意:和上面不同,下面的因為是MYSQL環境中的命令,所以後面都帶一個分 號作為命令結束符) 格式:grant select on 數據庫.* to [email protected]
/* */ identified by /"密碼/" 例1、增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,並對所有數據庫有查詢、插入 、修改、刪除的權限。首先用以root用戶連入MYSQL,然後鍵入以下命令: grant select,insert,update,delete on *.* to test1@/"%/" Identified by /"abc/"; 但例1增加的用戶是十分危險的,你想如某個人知道test1的密碼,那麽他就可以在internet上的 任何一臺電腦上登錄你的mysql數據庫並對你的數據可以為所欲為了,解決辦法見例2。 例 2、增加一個用戶test2密碼為abc,讓他只可以在localhost上登錄,並可以對數據庫mydb進行 查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL數據庫所在的那臺主機),這 樣用戶即使用知道test2的密碼,他也無法從 internet上直接訪問數據庫,只能通過MYSQL主機上 的web頁來訪問了。 grant select,insert,update,delete on mydb.* to [email protected] identified by /"abc/"; 如果你不想test2有密碼,可以再打一個命令將密碼消掉。 grant select,insert,update,delete on mydb.* to [email protected] identified by /"/"; 在上篇我們講了登錄、增加用戶、密碼更改等問題。下篇我們來看看MYSQL中有關數據庫方面的操 作。註意:你必須首先登錄到MYSQL中,以下操作都是在MYSQL的提示符下進行的,而且每個命令 以分號結束。 一、操作技巧 1、如果你打命令時,回車後發現忘記加分號,你無須重打一遍命令,只要打個分號回車就可以了 。也就是說你可以把一個完整的命令分成幾行來打,完後用分號作結束標誌就OK。 2、你可以使用光標上下鍵調出以前的命令。但以前我用過的一個MYSQL舊版本不支持。我現在用 的是mysql- 3.23.27-beta-win。 二、顯示命令 1、顯示數據庫列表。 show databases; 剛開始時才兩個數據庫:mysql和test。mysql庫很重要它裏面有MYSQL的系統信息,我們改密碼和 新增用戶,實際上就是用這個庫進行操作。 2、顯示庫中的數據表: use mysql; //打開庫,學過FOXBASE的一定不會陌生吧 show tables; 3、顯示數據表的結構: describe 表名; 4、建庫: create database 庫名; 5、建表: use 庫名; create table 表名 (字段設定列表); 6、刪庫和刪表: drop database 庫名; drop table 表名; 7、將表中記錄清空: delete from 表名; 8、顯示表中的記錄: select * from 表名; 三、一個建庫和建表以及插入數據的實例 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(’’,’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的字符字段,而且缺省值為深圳。varchar和char有什 麽區別呢,只有等以後的文章再說了。(4)將YEAR設為日期字段。 如果你在mysql提示符鍵入上面的命令也可以,但不方便調試。你可以將以上命令原樣寫入一個文 本文件中假設為 school.sql,然後復制到c://下,並在DOS狀態進入目錄//mysql//bin,然後鍵 入以下命令: mysql -uroot -p密碼 < c://school.sql 如果成功,空出一行無任何顯示;如有錯誤,會有提示。(以上命令已經調試,你只要將//的註 釋去掉即可使用)。 四、將文本數據轉到數據庫中 1、文本數據應符合的格式:字段數據之間用tab鍵隔開,null值用//n來代替. 例: 3 rose 深圳二中 1976-10-10 4 mike 深圳一中 1975-12-23 2、數據傳入命令 load data local infile /"文件名/" into table 表名; 註意:你最好將文件復制到//mysql//bin目錄下,並且要先用use命令打表所在的庫。 五、備份數據庫:(命令在DOS的//mysql//bin目錄下執行) mysqldump --opt school>school.bbb 註釋:將數據庫school備份到school.bbb文件,school.bbb是一個文本文件,文件名任取,打開看 看你會有新發現。 mysql命令行常用命令 第一招、mysql服務的啟動和停止 net stop mysql net start mysql 第二招、登陸mysql 語法如下: mysql -u用戶名 -p用戶密碼 鍵入命令mysql -uroot -p, 回車後提示你輸入密碼,輸入12345,然後回車即可進入到mysql中 了,mysql的提示符是: mysql> 註意,如果是連接到另外的機器上,則需要加入一個參數-h機器IP 第三招、增加新用戶 格式:grant 權限 on 數據庫.* to [email protected] identified by "密碼" 如,增加一個用戶user1密碼為password1,讓其可以在本機上登錄, 並對所有數據庫有查詢、插 入、修改、刪除的權限。首先用以root用戶連入mysql,然後鍵入以下命令: grant select,insert,update,delete on *.* to [email protected] Identified by "password1"; 如果希望該用戶能夠在任何機器上登陸mysql,則將localhost改為"%"。 如果你不想user1有密碼,可以再打一個命令將密碼去掉。 grant select,insert,update,delete on mydb.* to [email protected] identified by ""; 第四招: 操作數據庫 登錄到mysql中,然後在mysql的提示符下運行下列命令,每個命令以分號結束。 1、 顯示數據庫列表。 show databases; 缺省有兩個數據庫:mysql和 test。 mysql庫存放著mysql的系統和用戶權限信息,我們改密碼和 新增用戶,實際上就是對這個庫進行操作。 2、 顯示庫中的數據表: use mysql; 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 表名; SQL常用命令使用方法: (1) 數據記錄篩選: sql="select * from 數據表 where 字段名=字段值 order by 字段名 [desc]" sql="select * from 數據表 where 字段名 like ‘%字段值%‘ order by 字段名 [desc]" sql="select top 10 * from 數據表 where 字段名 order by 字段名 [desc]" sql="select * from 數據表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)" sql="select * from 數據表 where 字段名 between 值1 and 值2" (2) 更新數據記錄: sql="update 數據表 set 字段名=字段值 where 條件表達式" sql="update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式" (3) 刪除數據記錄: sql="delete from 數據表 where 條件表達式" sql="delete from 數據表" (將數據表所有記錄刪除) (4) 添加數據記錄: sql="insert into 數據表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" sql="insert into 目標數據表 select * from 源數據表" (把源數據表的記錄添加到目標數據表 ) (5) 數據記錄統計函數: AVG(字段名) 得出一個表格欄平均值 COUNT(*|字段名) 對數據行數的統計或對某一欄有值的數據行數統計 MAX(字段名) 取得一個表格欄最大的值 MIN(字段名) 取得一個表格欄最小的值 SUM(字段名) 把數據欄的值相加 引用以上函數的方法: sql="select sum(字段名) as 別名 from 數據表 where 條件表達式" set rs=conn.excute(sql) 用 rs("別名") 獲取統的計值,其它函數運用同上。 (6) 數據表的建立和刪除: CREATE TABLE 數據表名稱(字段1 類型1(長度),字段2 類型2(長度) …… ) 例:CREATE TABLE tab01(name varchar(50),datetime default now()) DROP TABLE 數據表名稱 (永久性刪除一個數據表) select * from test.text where 1 *表示所有欄目 test指數據庫名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的都顯示出來 select * from test.text where id<>4 指ID 不等於4的都出來 select * from test.text where id=1 指ID等於1的出來 select * from test.text where id in(1,3,5) 指找出ID為1 3 5的 not in()則相反 select * from test.text where uid like "%王%" 指UID裏只要帶王字的都出來 %王 表示什麽 王 ,王%表示 王什麽。 select * from test.text where remark like "%學%" 指remark裏帶學的都出來 select * from test.text where id between 1 and 10 and uid like "%王%"表示ID 1-10 並且 UID帶王字的出來 select * from test.text where id not between 1 and 4 指ID不在1-4裏面的 出來 (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不打就是默認從小到大 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條記錄被取出 如圖↓ 如過只寫一個6那就等於0,6 select * from test.text group by remark order by regdate limit 6 先分組 再排序 LIMIT放最後 這是語法不能顛倒。 select count(id) from test.text count()表示查詢有多少條信息 這樣根據表顯示出10條 select max(regdate) from test.text max() 查詢最大值 只能針對數字 包括日期 根據表顯示 出2008-10-22 14:41:30 select min(regdate)from test.text min() 查詢最小值 只能針對數字 包括日期 根據表顯示出 2008-10-07 13:21:32 select avg(id) from test.text avg() 查詢平均值 也只針對數字 包括日期 顯示出5.5 如算 平均分數 select sum(id) from test.text sum() 查詢累計值 數字包括日期 顯示出55 1+2+3+。。 10=55 如算總分數 insert 插入語句 insert into `text`(`id`,`uid`,`regdate`,`remark`)values(null,‘ken‘,now(),‘學生‘) 其中 null就是沒有 now()就是時間日期自動生成 字段的類型要設計好。特別註意! Update 更改語句 Update 表名 set 字段=值 where 條件 LIMIT(可省略) update test.text set uid=‘kenchen‘ where id=11 意思是把ID是11的UID 改成kenchen Delete 刪除語句 Delete from 表命 where limit Delete from text where id=3 意思是把ID=3的信息條刪除! mysql 字段類型說明- - MySQL支持大量的列類型,它可以被分為3類:數字類型、日期和時間類型以及字符串(字符)類型 。本節首先給出可用類型的一個概述,並且總結每個列類型的存儲需求,然後提供每個類中的類 型性質的更詳細的描述。概述有意簡化,更詳細的說明應該考慮到有關特定列類型的附加信息, 例如你能為其指定值的允許格式。 由MySQL支持的列類型列在下面。下列代碼字母用於描述中: M 指出最大的顯示尺寸。最大的合法的顯示尺寸是 255 。 D 適用於浮點類型並且指出跟隨在十進制小數點後的數碼的數量。最大可能的值是30,但是應該不 大於M-2。 方括號(“[”和“]”)指出可選的類型修飾符的部分。 註意,如果你指定一個了為ZEROFILL,MySQL將為該列自動地增加UNSIGNED屬性。 TINYINT[(M)] [UNSIGNED] [ZEROFILL] 一個很小的整數。有符號的範圍是-128到127,無符號的範圍是0到255。 SMALLINT[(M)] [UNSIGNED] [ZEROFILL] 一個小整數。有符號的範圍是-32768到32767,無符號的範圍是0到65535。 MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] 一個中等大小整數。有符號的範圍是-8388608到8388607,無符號的範圍是0到16777215。 INT[(M)] [UNSIGNED] [ZEROFILL] 一個正常大小整數。有符號的範圍是-2147483648到2147483647,無符號的範圍是0到4294967295 。 INTEGER[(M)] [UNSIGNED] [ZEROFILL] 這是INT的一個同義詞。 BIGINT[(M)] [UNSIGNED] [ZEROFILL] 一個大整數。有符號的範圍是-9223372036854775808到9223372036854775807,無符號的範圍是0 到 18446744073709551615。註意,所有算術運算用有符號的BIGINT或DOUBLE值完成,因此你不應該 使用大於9223372036854775807(63位)的有符號大整數,除了位函數!註意,當兩個參數是 INTEGER值時,-、+和*將使用BIGINT運算!這意味著如果你乘2個大整數(或來自於返回整數的函 數),如果結果大於9223372036854775807,你可以得到意外的結果。一個浮點數字,不能是無符 號的,對一個單精度浮點數,其精度可以是<=24,對一個雙精度浮點數,是在25 和53之間,這些 類型如FLOAT和DOUBLE類型馬上在下面描述。FLOAT(X)有對應的FLOAT和DOUBLE相同的範圍,但是 顯示尺寸和小數位數是未定義的。在MySQL3.23中,這是一個真正的浮點值。在更早的MySQL版本 中,FLOAT(precision)總是有2位小數。該句法為了ODBC兼容性而提供。 FLOAT[(M,D)] [ZEROFILL] 一個小(單精密)浮點數字。不能無符號。允許的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。M是顯示寬度而D是小數的位數。沒有參數的FLOAT或有 <24 的一個參數表示一個單精密浮點數字。 DOUBLE[(M,D)] [ZEROFILL] 一個正常大小(雙精密)浮點數字。不能無符號。允許的值是-1.7976931348623157E+308到- 2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。M是顯 示寬度而D是小數位數。沒有一個參數的DOUBLE或FLOAT(X)(25 < = X < = 53)代表一個雙精密 浮點數字。 DOUBLE PRECISION[(M,D)] [ZEROFILL] REAL[(M,D)] [ZEROFILL] 這些是DOUBLE同義詞。 DECIMAL[(M[,D])] [ZEROFILL] 一個未壓縮(unpack)的浮點數字。不能無符號。行為如同一個CHAR列:“未壓縮”意味著數字作 為一個字符串被存儲,值的每一位使用一個字符。小數點,並且對於負數,“-”符號不在M中計 算。如果D是0,值將沒有小數點或小數部分。DECIMAL值的最大範圍與DOUBLE相同,但是對一個給 定的DECIMAL列,實際的範圍可以通過M和D的選擇被限制。如果D被省略,它被設置為0。如果M被 省掉,它被設置為10。註意,在MySQL3.22裏,M參數包括符號和小數點。 NUMERIC(M,D) [ZEROFILL] 這是DECIMAL的一個同義詞。 DATE 一個日期。支持的範圍是‘1000-01-01‘到‘9999-12-31‘。MySQL以‘YYYY-MM-DD‘格式來顯示DATE值 ,但是允許你使用字符串或數字把值賦給DATE列。 DATETIME 一個日期和時間組合。支持的範圍是‘1000-01-01 00:00:00‘到‘9999-12-31 23:59:59‘。MySQL以 ‘YYYY-MM-DD HH:MM:SS‘格式來顯示DATETIME值,但是允許你使用字符串或數字把值賦給DATETIME 的列。 TIMESTAMP[(M)] 一個時間戳記。範圍是‘1970-01-01 00:00:00‘到2037年的某時。MySQL以YYYYMMDDHHMMSS、 YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式來顯示TIMESTAMP值,取決於是否M是14(或省略)、12、8 或6,但是允許你使用字符串或數字把值賦給TIMESTAMP列。一個TIMESTAMP列對於記錄一個INSERT 或UPDATE操作的日期和時間是有用的,因為如果你不自己給它賦值,它自動地被設置為最近操作 的日期和時間。你以可以通過賦給它一個NULL值設置它為當前的日期和時間。 TIME 一個時間。範圍是‘-838:59:59‘到‘838:59:59‘。MySQL以‘HH:MM:SS‘格式來顯示TIME值,但是允 許你使用字符串或數字把值賦給TIME列。 YEAR[(2|4)] 一個2或4位數字格式的年(缺省是4位)。允許的值是1901到2155,和0000(4位年格式),如果你 使用2位,1970-2069( 70-69)。MySQL以YYYY格式來顯示YEAR值,但是允許你把使用字符串或數字 值賦給YEAR列。(YEAR類型在MySQL3.22中是新類型。) CHAR(M) [BINARY] 一個定長字符串,當存儲時,總是是用空格填滿右邊到指定的長度。M的範圍是1 ~ 255個字符。 當值被檢索時,空格尾部被刪除。CHAR值根據缺省字符集以大小寫不區分的方式排序和比較,除 非給出BINARY關鍵詞。NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式來定義CHAR列應該使用缺 省字符集。這是MySQL的缺省。CHAR是CHARACTER的一個縮寫。 [NATIONAL] VARCHAR(M) [BINARY] 一個變長字符串。註意:當值被存儲時,尾部的空格被刪除(這不同於ANSI SQL規範)。M的範圍是 1 ~ 255個字符。 VARCHAR值根據缺省字符集以大小寫不區分的方式排序和比較,除非給出 BINARY關鍵詞值。 VARCHAR是CHARACTER VARYING一個縮寫。 TINYBLOB   TINYTEXT 一個BLOB或TEXT列,最大長度為255(2^8-1)個字符。 BLOB TEXT 一個BLOB或TEXT列,最大長度為65535(2^16-1)個字符。 MEDIUMBLOB   MEDIUMTEXT 一個BLOB或TEXT列,最大長度為16777215(2^24-1)個字符。 LONGBLOB   LONGTEXT 一個BLOB或TEXT列,最大長度為4294967295(2^32-1)個字符。 ENUM(‘value1‘,‘value2‘,...) 枚舉。一個僅有一個值的字符串對象,這個值式選自與值列表‘value1‘、‘value2‘, ...,或NULL 。一個ENUM最多能有65535不同的值。 SET(‘value1‘,‘value2‘,...) 一個集合。能有零個或多個值的一個字符串對象,其中每一個必須從值列表‘value1‘, ‘value2‘, ...選出。一個SET最多能有64個成員。

mysql數據庫的增刪改查語句