1. 更改表格
alter table table_name add column column_name datatype
說明:增加一個列(沒有刪除某個欄位的語法。
alter table table_name add primary key (column_name)
說明:把表的一個列名設爲主鍵
alter table table_name drop primary key (column_name)
說明:把主鍵的定義刪除。
alter table student modify column sno char(30);
說明:更改表的屬性。
2.建立索引
create index index_name on table_name (column_name)
說明:對某個表格的欄位建立索引以增加查詢時的速度。
3.表的數據嵌入
insert into table01 (field01, field02, field03, field04, field05) values
結果->(2, ‘second’, ‘another’, ‘1999-10-23’, ‘10:30:00’);
標準日期格式是"yyyy-mm-dd"。
標準時間格式是"hh:mm:ss"。
引號內要求所給的是上述的標準日期和時間格式。
日期也可以"yyyymmdd"形式,時間也可以"hhmmss"形式輸入,但其值不需要再加引號。
數字值不需要加引號。這種保存與數據類型無關,這些數據類型都有格式化的專欄來包含(例如:文本,日期,時間,整數等)。
MySQL有一個很有用的命令緩衝區。它保存着你目前已經鍵入的SQL語句利用它,對於相同的命令,你就不必一遍又一遍地重複輸入。下一步我們就來看這樣的一個例子。
利用命令緩衝區(及任意的日期和時間格式)增加另一個數據
按兩次鍵盤上的向上箭頭鍵。回車。
在圓括號內輸入新的值,並以分號結尾。
(3, ‘a third’, ‘more’, 19991024, 103004);
回車。
新值存在裏面了嗎?
mysql>select * from table01;
field01 field02 field03 field04 field05
1 first NULL NULL NULL
2 second another 1999-10-23 10:30:00
3 a third more 1999-10-24 10:30:04
4. 查詢資料:
(1)基本查詢(2)組合查詢Select C1,C2 From table_name
Select distinct C1,C2 from T1 //不重複的選取
說明:把T1 的特定欄位資料全部列出來
select * from T1 where C1 = xxx [and C2 > yyy] [or C3 <> zzz]
說明:
1) '*'表示全部的欄位都列出來。
2) where 之後是接條件式,把符合條件的資料列出來。
select C1,C2 from T1 order by C2 [desc]
說明:order by 是指定以某個欄位做排序,[desc]是指從大到小排列,若沒有指明,desc則是從小到大排列
(3)整合性的查詢:組合查詢是指所查詢得資料來源並不只有單一的表格,而是聯合一個以上的表格才能夠得到結果的。
select * from table1,table2 where table1.colum1=table2.column1
Select C1,C2 from T1 where C1= @childName //按照變量childName來作爲C1的值進行選取,也可以用“+ childName +”來代替
說明:
涉及到變量查詢,比較喜歡用MySqlUtil.CS這個幫助類,適用它很簡單,如下:
MySqlParameter[] sqlParam = new MySqlParameter[]{ new MySqlParameter("@childName",childName)}; //即將childName的值加入其中。
DataSet ds = DAL.SqlHelper.ExecuteReader(sqlConnectingStr, CommandType.Text, sqlSelectStr, sqlParam);
(4)複合性的查詢select count (*) fromT1 where C1 = 17 // T1中列C1值爲17的個數
SELECT d.ID,d.Name FROM T_BaseInfo d ,T_Info da WHERE d.Code=da.Code AND da.ID=a.ID and d.ID=01; //將表重新定義只能在From後面進行。
select sum(C1) from T1 //計算C1一整列的總和,可以用avg(平均)、max(最大值)、min(最小值)
select column1,avg(column2) from table_name group by column1 having avg(column2) > xxx
SELECT region, SUM(population), SUM(area) FROM T1 GROUP BY region //按地區顯示總人口數和總面積.
按地區顯示總人口數和總面積,而且僅顯示那些面積超過1000000的地區。
SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region HAVING SUM(area)>1000000
Select id, A.prjno, prjname, DATE_FORMAT(updatetime,'%Y-%m-%d') as updatetime, reporter from
dataSet.prjschedule as A, dataSet.prjbasicinfo as B where A.prjno = B.prjno//這句話的意思是:有兩個表A、B,在顯示時大部分內容是B中的字段,但是還需要A的一個字段,這兩個表有共同的prjno字段,其中這些內容要讀取到一個DataSet中去,但在DataSet中日期格式與MySql中的不符,需要在此語句中進行設定。
(5)其他查詢select * from T1 where exists ( select * from T2 where conditions )
①Exists(not Exists)
INSERT INTO T1(client_id, client_name, client_type) SELECT supplier_id, supplier_name, ''advertising'' FROM T2
WHERE not exists (select * from clients where T1.client_id = T2.supplier_id); //當T1中的id不存在與T2中的id相等的值時則將從T2中選出的字段內容插入到表T1中Create Table If Not Exists pxl_table(id int(16),name varchar(32)); //若不存在這樣的pxl_table則創建(有這樣兩個參數的?)一個表
② IN 從T1中把C1的值在IN()中的項都取出來,C1的屬性必須和()中的值屬性一致。
select * from T1 where C1 in ( select C1 from T2 where conditions )
select * from T1 where C1 like 'x%'
說明:like 必須和後面的'x%' 相呼應表示以 x爲開頭的字串。
select * from table_name1 where column1 between xx and yy
說明:between 表示 column1 的值介於 xx 和 yy 之間。
5.表的數據更新
INSERT INTO T1(industryName) VALUES (@industryTXT) //將insustryTXT作爲列industryName的值插入到表T1中
INSERT INTO T1(prjno) SELECT prjno FROM T2 //將T2中的prjno字段都插入到T1中作爲T1的字段
再次注意語法。文本需要加引號但數字不要。
Update T1 Set C1 = ’ info’ Where C2 = 1;
一次更新多個數據
update table01 set field05=152901 where field04>19990101;