《Mysql實例MySQL SQL 語法參考》要點:
本文介紹了Mysql實例MySQL SQL 語法參考,希望對您有用。如果有疑問,可以聯系我們。
一、資料定義?ddl(data?definition?language)?
資料定語言是指對資料的格式和形態下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關系、表格內的有什麼欄位主鍵、表格和表格之間互相參考的關系等等,都是在開始的時候所必須規劃好的.?
1、建表格:?
create?table?table_name(?
column1?datatype?[not?null]?[not?null?primary?key],?
column2?datatype?[not?null],?
...);
說明: ?
datatype?--是資料的格式,詳見表.?
nut?null?--可不可以允許資料有空的(尚未有資料填入).?
primary?key?--是本表的主鍵.?
2、更改表格 ?
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)?
說明:把主鍵的定義刪除.?
3、建立索引 ?
create?index?index_name?on?table_name?(column_name)?
說明:對某個表格的欄位建立索引以增加查詢時的速度.?
4、刪除 ?
drop?table_name?
drop?index_name?
二、的資料形態?datatypes?
smallint?
16?位元的整數.?
interger?
32?位元的整數.?
decimal(p,s)?
p?精確值和?s?大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數?
點後有幾位數.如果沒有特別指定,則系統會設為?p=5;?s=0?.?
float?
32位元的實數.?
double?
64位元的實數.?
char(n)?
n?長度的字串,n不能超過?254.?
varchar(n)?
長度不固定且其最大長度為?n?的字串,n不能超過?4000.?
graphic(n)?
和?char(n)?一樣,不過其單位是兩個字元?double-bytes,?n不能超過127.這個形態是為?
了支援兩個字元長度的字體,例如中文字.?
vargraphic(n)?
可變長度且其最大長度為?n?的雙字元字串,n不能超過?2000.?
date?
包含了?年份、月份、日期.?
time?
包含了?小時、分鐘、秒.?
timestamp?
包含了?年、月、日、時、分、秒、千分之一秒.?
三、資料操作?dml?(data?manipulation?language)?
資料定義好之後接下來的就是資料的操作.資料的操作不外乎增加資料(insert)、查詢資料(query)、更改資料(update)?、刪除資料(delete)四種模式,以下分?別介紹他們的語法:?
1、增加資料:?
insert?into?table_name?(column1,column2,...)?
values?(?value1,value2,?...)?
說明:?
1.若沒有指定column?系統則會按表格內的欄位順序填入資料.?
2.欄位的資料形態和所填入的資料必須吻合.?
3.table_name?也可以是景觀?view_name.?
insert?into?table_name?(column1,column2,...)?
select?columnx,columny,...?from?another_table?
說明:也可以經過一個子查詢(subquery)把別的表格的資料填入.?
2、查詢資料:?
基本查詢?
select?column1,columns2,...?
from?table_name?
說明:把table_name?的特定欄位資料全部列出來?
select?*?
from?table_name?
where?column1?=?xxx?
[and?column2?>?yyy]?[or?column3?<>?zzz]?
說明:?
1.'*'表示全部的欄位都列出來.?
2.where?之後是接條件式,把符合條件的資料列出來.?
select?column1,column2?
from?table_name?
order?by?column2?[desc]?
說明:order?by?是指定以某個欄位做排序,[desc]是指從大到小排列,若沒有指明,則是從小到大?
排列?
組合查詢?
組合查詢是指所查詢得資料來源并不只有單一的表格,而是聯合一個以上的?
表格才能夠得到結果的.?
select?*?
from?table1,table2?
where?table1.colum1=table2.column1?
說明:?
1.查詢兩個表格中其中?column1?值相同的資料.?
2.當然兩個表格相互比較的欄位,其資料形態必須相同.?
3.一個復雜的查詢其動用到的表格可能會很多個.?
整合性的查詢:?
select?count?(*)?
from?table_name?
where?column_name?=?xxx?
說明:?
查詢符合條件的資料共有幾筆.?
select?sum(column1)?
from?table_name?
說明:?
1.計算出總和,所選的欄位必須是可數的數字形態.?
2.除此以外還有?avg()?是計算平均、max()、min()計算最大最小值的整合性查詢.?
select?column1,avg(column2)?
from?table_name?
group?by?column1?
having?avg(column2)?>?xxx?
說明:?
1.group?by:?以column1?為一組計算?column2?的平均值必須和?avg、sum等整合性查詢的關鍵字?
一起使用.?
2.having?:?必須和?group?by?一起使用作為整合性的限制.?
復合性的查詢?
select?*?
from?table_name1?
where?exists?(?
select?*?
from?table_name2?
where?conditions?)?
說明:?
1.where?的?conditions?可以是另外一個的?query.?
2.exists?在此是指存在與否.?
select?*?
from?table_name1?
where?column1?in?(?
select?column1?
from?table_name2?
where?conditions?)?
說明: ?
1.?in?後面接的是一個集合,表示column1?存在集合里面.?
2.?select?出來的資料形態必須符合?column1.?
其他查詢?
select?*?
from?table_name1?
where?column1?like?'x%'?
說明:like?必須和後面的'x%'?相呼應表示以?x為開頭的字串.?
select?*?
from?table_name1?
where?column1?in?('xxx','yyy',..)?
說明:in?後面接的是一個集合,表示column1?存在集合里面.?
select?*?
from?table_name1?
where?column1?between?xx?and?yy?
說明:between?表示?column1?的值介於?xx?和?yy?之間.?
3、更改資料:?
update?table_name?
set?column1='xxx'?
where?conditoins?
說明:?
1.更改某個欄位設定其值為'xxx'.?
2.conditions?是所要符合的條件、若沒有?where?則整個?table?的那個欄位都會全部被更改.?
4、刪除資料:?
delete?from?table_name?
where?conditions?
說明:刪除符合條件的資料.?
說明:關于where條件后面如果包含有日期的比較,不同數據庫有不同的表達式.具體如下:?
(1)如果是access數據庫,則為:where?mydate>#2000-01-01#?
(2)如果是oracle數據庫,則為:where?mydate>cast('2000-01-01'?as?date)?
或:where?mydate>to_date('2000-01-01','yyyy-mm-dd')?
在delphi中寫成:?
thedate='2000-01-01';?
query1.sql.add('select?*?from?abc?where?mydate>cast('+''''+thedate+''''+'?as?date)');?
如果比較日期時間型,則為:?
where?mydatetime>to_date('2000-01-01?10:00:01','yyyy-mm-dd?hh24:mi:ss');
維易PHP培訓學院每天發布《Mysql實例MySQL SQL 語法參考》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/13983.html