關於數據庫的建立及增刪改查
我們打開這個軟件首先要看看是否存在這個數據庫可以使用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 <列值>
例:
註意:如果省略表名,將依次插入所有列
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<排序的列名>[asc或desc]] ;
其中where子句表達式從from子句指定的基本表,視圖或派生表中找出滿足該條件的元組,再按select子句中的目標列表達式選出元組中的屬性值形成的結果表
1).查詢所有數據行和列
例:select * from a
說明:查詢a表中所有行和
2).查詢部分行列--條件查詢
例:select i,j,k from a where f=5
說明:查詢表a中f=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
說明:查詢表a中e-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升序 2.模糊查詢
1).使用like進行模糊查詢
註意:like運算符只用語字符串,多表
例:select * from a where name like ‘趙%‘
說明:查詢顯示表a中,name字段第一個字為趙的記錄
2).使用between在某個範圍內進行查詢
例:select * from a where age between 18 and 20
說明:查詢顯示表a中年齡在18到20之間的記錄
3).使用in在列舉數值內進行查詢(in後是多個的數據) 例:select name froma where address in (‘廊坊‘,‘石家莊‘,‘唐山‘)
說明:查詢表a中address值為廊坊或者石家莊或者唐山的記錄,顯示name字段 3.分組查詢
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來限制條件, 4.多表聯接查詢
1).內聯接
①在where子句中指定聯接條件
例:select a.name,b.mark
from a,b
where a.name=b.name
說明:查詢表a和表b中name字段相等的記錄,並顯示表a中的name字段和表b中的mark字段
關於數據庫的建立及增刪改查