MySQL學習筆記 1.0

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)基本查詢

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則是從小到大排列

(2)組合查詢

組合查詢是指所查詢得資料來源並不只有單一的表格,而是聯合一個以上的表格才能夠得到結果的。

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);

(3)整合性的查詢:

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中的不符,需要在此語句中進行設定。


(4)複合性的查詢

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 )

(5)其他查詢

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章