MYSQL的常用命令和增刪改查語句和數據類型 收藏
- 連接命令: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 user@localhost 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 用戶名@登錄主機 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 test2@localhost identified by \"abc\";
- 如果你不想test2有密碼,可以再打一個命令將密碼消掉。
- grant select,insert,update,delete on mydb.* to test2@localhost 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 用戶名@登錄主機 identified by "密碼"
- 如,增加一個用戶user1密碼為password1,讓其可以在本機上登錄, 並對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入mysql,然后鍵入以下命令:
- grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";
- 如果希望該用戶能夠在任何機器上登陸mysql,則將localhost改為"%"。
- 如果你不想user1有密碼,可以再打一個命令將密碼去掉。
- grant select,insert,update,delete on mydb.* to user1@localhost 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個成員。
