1. 程式人生 > >關於數據庫的建立及增刪改查

關於數據庫的建立及增刪改查

是否為空 family gen 分組查詢 等於 set score 關於 upd

我們打開這個軟件首先要看看是否存在這個數據庫可以使用show databases:查看數據庫是否存在如果不存在我們可以新建數據庫用create database+數據庫的名字;(新建數據庫)use+數據庫的名字;database changed(用這個數據庫)。而後就可以建立表了。用select *from+表名查看表中的數據。

現在先說一下怎樣建立一個基本的表格

Create table+表名(<列明><數據的類型>[列級的約束條件]

<列明><數據的類型>[列級的約束條件]

.....);

例如建立一個“課程”表course.

Create table course

(cno char(4)primary key,//列級完整性約束條件,cno是主碼

Cname char(40)not null,//列級完整性約束性條件,cname不能取空值

Cpno char(4),

Ccredit smallint,

Foreing key (cpno)references course(cno)//表級完整性條件,cno是外碼,被參照表是course,被參照列是cno

);

參照表與被參照表是同一個表

下面就來簡單的介紹一下增刪改查

1 .使用insert插入單行數據:語法:insert [into]<表名> [列名] values <列值>

例:

insert into Students (姓名,性別,出生日期) values (‘邢金聰‘,‘‘,‘1990/6/15‘)

註意:如果省略表名,將依次插入所有列

2.使用insert,select語句將現有表中的 數據添加到已有的新表中

語法:insert into <已有的新表> <列名> select <原表列名> from <原表名>

例:insert into addressList (‘姓名‘,‘地址‘,‘電子郵件‘)selectname,address,email from Strdents

註意:查詢得到的數據個數、順序、數據類型等,必須與插入的項保持一致

1.使用delete刪除數據某些數據 語法:delete from <表名> [where <刪除條件>]  

例:delete from awhere name=‘邢金聰(刪除表a中列值為邢金聰的行) 

註意:刪除整行不是刪除單個字段,所以在delete後面不能出現字段名

2.使用truncate table 刪除整個表的數據

語法:truncate table<表名>

例:truncate table addressList

註意:刪除表的所有行,但表的結構、列、約束、索引等不會被刪除;不能用於有外建約束引用的表

3刪除基本表

Drop table<表名>[restrict /cascade];restrict原本就有限制,約束之意若選擇restrict,則該表的刪除是有限制條件的。欲刪除的基本表不能被其他表的約束條件所引用(如check,foreign key等約束),不能有視圖,不能有觸發器(trigger),不能有存儲過程或函數等。如果存在這些依賴該表的對象,則此表將不能被刪除。而cascade本身有串聯的意思,若選擇cascade,則該表的刪除將沒有限制條件。在刪除基本表的同時,相關的依賴對象例如視圖,都將被刪除。

三、改 

1使用update更新修改數據

語法:update <表名> set <列名=更新值> [where <更新條件>]

例:truncate table addressList

註意:刪除表的所有行,但表的結構、列、約束、索引等不會被刪除;不能用於有外建約束引用的表

2這個用alter table語句修改基本表

Alter table<表名>

[add [column]<新列名><數據類型>[完整性約束]

[add<表級完整性約束>]

[drop[column]<列名>[cascade/restrict]]

[drop constraing<完整性約束>[restrict/cascade]]

[alter column<列名><數據類型>];

其中<表名>是要修改的基本表,add子句用於增加新列,新的列級完整性約束條件和新的表級完整性約束條件。Drop column子句用於刪除表中的列,如果指定了cascade短語,則自動刪除引用該列的其它對象比如視圖;如果指定了restrict短語,則該列被其他對象引用,rdbms將拒絕刪除該列。Drop constraint子句用於刪除指定的完整性約束條件。Alter column子句用於修改原有的列定義,包括修改列名和數據類型。我一下子把alter table 的語句放在一起,沒有分增加或刪除。

四、

1.普通查詢

語法:select <列名>

from <表名>

[where <查詢條件表達試>]

[order by<排序的列名>[ascdesc]] ;

其中where子句表達式從from子句指定的基本表,視圖或派生表中找出滿足該條件的元組,再按select子句中的目標列表達式選出元組中的屬性值形成的結果表

   1).查詢所有數據行和列

    例:select * from a

    說明:查詢a表中所有行和

   2).查詢部分行列--條件查詢

    例:select i,j,k from a where f=5

    說明:查詢表af=5的所有行,並顯示i,j,k3列

   3).在查詢中使用AS更改列名

    例:select name as 姓名 from a where gender=‘

    說明:查詢a表中性別為男的所有行,顯示name列,並將name列改名為(姓名)顯示

   4).查詢空行

    例:select name from a where e-mail is null

    說明:查詢表ae-mail為空的所有行,並顯示name列;SQL語句中用is null或者is not null來判斷是否為空行

   5).在查詢中使用常量

    例:select name ‘廊坊‘ as 地址 from a

    說明:查詢表a,顯示name列,並添加地址列,其列值都為廊坊

   6).查詢返回限制行數(關鍵字:top )

    例1:select top 6 name from a

    說明:查詢表a,顯示列name的前6行,top為關鍵字(oracle 中沒有top關鍵字用rownum替代)

select * from a where rownum<6

   7).查詢排序(關鍵字:order by , asc , desc

    例:select name

      from a

      where grade>=60 分組查詢

      order by desc

    說明:查詢表中成績大於等於60的所有行,並按降序顯示name列;默認為ASC升序 .模糊查詢

   1).使用like進行模糊查詢

    註意:like運算符只用語字符串,多表

    例:select * from a where name like ‘%‘

    說明:查詢顯示表a中,name字段第一個字為趙的記錄

   2).使用between在某個範圍內進行查詢

    例:select * from a where age between 18 and 20

    說明:查詢顯示表a中年齡在1820之間的記錄

   3).使用in在列舉數值內進行查詢(in後是多個的數據) 例:select name froma where address in (‘廊坊‘,‘石家莊‘,‘唐山‘)

    說明:查詢表aaddress值為廊坊或者石家莊或者唐山的記錄,顯示name字段 .分組查詢

   1).使用group by進行分組查詢

    例:select studentID as 學員編號, AVG(score) as 平均成績 (註釋:這裏的score是列名)

      from score (註釋:這裏的score是表名)

      group by studentID 2).使用having子句進行分組篩選

    例:select studentID as 學員編號, AVG    

      from score

      group by studentID

      having count(score)>1

    說明:接上面例子,顯示分組後count(score)>1的行,由於where只能在沒有分組時使用,分組後只能使用having來限制條件, .多表聯接查詢

   1).內聯接

    where子句中指定聯接條件

    例:select a.name,b.mark

      from a,b

      where a.name=b.name

    說明:查詢表a和表bname字段相等的記錄,並顯示表a中的name字段和表b中的mark字段

關於數據庫的建立及增刪改查