對資料庫中列的一些基本的操作的SQL命令(轉)

heying1229發表於2007-06-28
對資料庫中列的一些基本的操作的SQL命令[@more@]
查詢表格的構用desc table_name; 一、data definition language
1
、建表格
create table table_name(column1 datatype [not null] [not null primary key], column2 datatype [not null],..)
datatype -
料的格式
not null -
不可以允許資料有空的
primary key -
是本表的主 例:create table randy (name char(10),age integer);


2
、更改表格
alter table table_name add column column_name datatype
增加一個位(沒有除某個位的法) 例:alter table randy add address varchar(100); --實際應用中不能有column關鍵

alter table table_name add primary key (column_name)
更改表的定把某個設為 例: alter table randy add primary key (name);

alter table table_name drop primary key (column_name)
把主的定義刪 例: alter table randy drop primary key; --實際應用中不需要column_name

3
、建立索引
create index index_name on table_name (column_name)
:某個表格的位建立索引可以增加查詢時的速度 例: create index randyindex on randy (name);

4
除表 drop table_name 除索引 drop index_name 注意不能除表中的某個 例:drop table table_name;
drop index index_name; --
需要指明table index 關鍵 二、料形 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-bytesn不能超127個形支援兩個字元度的字型,例如中文字。   vargraphic(n) 變長度且其最大 n 的雙字元字串,n不能超 2000   date   包含了年份、月份、日期。   time 包含了 、分、秒。   timestamp   包含了年、月、日、、分、秒、千分之一秒。 三、料操作 data manipulation language
1
、增加
insert into table_name (column1,column2,...) values (value1,value2,...)
例: insert into randy (name,age) values ('l',16); --字串要用' '表示。
insert into randy values ('wei',26,'xiddian'); --
沒有指定column會按照序填入 注意table_name也可以是景view_name;

insert into table_name (column1,column2,...) select column1x,column2x,... from another_table
明:也可以經過一個子查詢的表格的料填入 例: insert into randy select * from copyrandy;

2
查詢資
select column1,column2 from table_name
select * from table_name where column1 = xxx [and column2 > yyy] [or column3 <> zzz]
例: select * from randy where name<>'l' and age<27;

select * from table_name order by column2 [desc]
明:order by 是指定以某個位做排序,[desc]是指從大到小排列,而默是從小到大排列。 例:select * from randy order by age desc; --[desc][]只是明是可選項 查詢合一個以上的表格才能得到
select * from table1,table2 where table1.colunn1=table2.column1
例:select * from randy,copyrandy where randy.age=copyrandy.age; 整合性查詢
select count(*) from table_name where column_name = xxx
明:符合條的料共有幾筆 例: select count(*) from randy where age<30;
select sum(column1) from table_name
明:算出和,所位必是可數的數字形 例:select sum(age) from randy; 除此以外avg(),max(),min()等函式。
select column1,avg(column2) from table_name group by column1 having avg(column2)>xxx
明:group by column column1組計column2的平均,如果column1只有一列資料,avg(column2)column2本身。
having
group by 一起使用作整合性的限制。 例:select name,avg(age) from randy group by name having avg(age)<27; 合性查詢
select * from table1_name where exists (select * from table2_name where conditions)
明:exists 指存在與否 例: select * from randy where exists (select * from copyrandy where age=26); --where 後面的部分只是一個條件condition,如果條件則執行前面的部分,前面部分行的內容和條件無

select * from table_name1 where column1 in (select column1 from table_name2 where conditions)
明:in後面是一個集合表示column1存在集合裡面
select
出來的料形符合column1 例:select * from randy where name in (select name from copyrandy); 其他查詢
select * from table_name1 where column1 like 'x%'
明:like與後面的'x%'相呼表示以x開頭的子串 例: select * from randy where name like 'w%';
select * from table_name1 where column1 in ('xxx','yyy',...)
明:in後面是一個集合,表示column1在集合裡面 例:select * from randy where name in ('ling','wei','ran');
select * from table_name1 where column1 between xx and yy
明:between表示column1介於xxyy 例:select * from randy where age between 1 and 27;

3
、更改
update table_name set column1='xxx' where conditions
例:update randy set name='ling' where age=16;

4

delete from table_name where conditions
例:delete from randy where name='ling'; 日期的比不同的資料有不同的表示式
1
access資料 where mydate>#2000-01-01#
2
Oracle資料 where mydate>case('2000-01-01' as date) where mydate>to_date('2000-01-01','yyyy-mm-dd')

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10172717/viewspace-921813/,如需轉載,請註明出處,否則將追究法律責任。

相關文章