傳奇手游官網(wǎng)下載威海seo公司
文章目錄
- 數(shù)據(jù)庫
- 數(shù)據(jù)類型
- 建表create table
- 插入數(shù)據(jù)insert into
- 查詢數(shù)據(jù)select from
- 修改數(shù)據(jù)update set
- 刪除數(shù)據(jù)delete from
- 備份ctas
- 結(jié)果插入iis
- 截斷表 truncate table
- 修改表結(jié)構(gòu)alter table
- 添加注釋
注:本文的SQL語法是基于Oracle數(shù)據(jù)庫操作的,但是基本的SQL語法在數(shù)據(jù)庫中應(yīng)該都是通用的
數(shù)據(jù)庫
什么是數(shù)據(jù)庫?什么是表?
數(shù)據(jù)庫可以理解為圖書館,圖書館里面的書就是數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫表就是書架,每個架子都有自己名字(編號),不同的架子放的是不同類型的書,數(shù)據(jù)庫表也一樣。
針對表的操作有很多,可以分為對表本身的操作,包括創(chuàng)建表、刪除表、修改表,這類操作稱為DDL;還有操作表中的數(shù)據(jù),包括插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù),這類操作稱為DML;還有一類是對前面操作的授權(quán),稱為DCL;最重要的是查詢表中數(shù)據(jù)的操作,稱為DQL。
- DDL(data definition language)操作包括:create table、alter table、drop table;
- DML(data manipulation language)操作包括:insert into、update set、delete from、truncate table;
- DCL(data control language)操作包括:grant、revoke;
- TCL(transaction control language)操作包括:commit、rollback;
- DQL(data query language)操作包括:select;
數(shù)據(jù)類型
Oracle數(shù)據(jù)庫中常用的數(shù)據(jù)類型大致如下:
類 型 | 描 述 |
---|---|
char(n) | 保存固定長度的字符串,n在1-2000之間。 |
varchar2(n) | 保存數(shù)字、字母等變長字符串,n在1-4000之間。 |
number(m,n) | 保存數(shù)字,是整數(shù)或小數(shù)。n表示小數(shù)長度,整數(shù)長度是m-n。 |
date | 保存日期時間類型,不含毫秒。 |
timestamp | 保存日期時間類型,含毫秒。 |
clob | 存放海量文字。 |
blob | 存放海量二進制文件,如圖片、電影、音樂等。 |
還有其他類型,如long、float、int、rowid(偽列)等。
注:
- oracle數(shù)據(jù)庫的表中的每一行數(shù)據(jù)都有一個唯一的標識符,或者稱為rowid,在oracle內(nèi)部通常就是使用它來訪問數(shù)據(jù)的。
- char是一種固定長度的類型,無論儲存的數(shù)據(jù)有多少都會固定長度,如果插入的長度小于定義長度,則可以用空格進行填充。而varchar2是一種可變長度的類型,當(dāng)插入的長度小于定義長度時,插入多長就存多長。
在SQL中沒有bool類型,在plsql中有bool類型。
建表create table
create table 表名 (列名1 類型, 列名2 類型....)
說明:
- “create table 表名(列名 類型)”是固定寫法。表名是自己起的,英文開頭,可以包含數(shù)字,可以包含下劃線,表名中不能有空格,不要使用中文做表名。
- 表名后面必須跟小括號,里面是列的定義,列名后面是一個類型,中間用空格區(qū)分;多個列定義之間使用逗號分割。列名定義規(guī)則跟表名一樣。
- 創(chuàng)建表時,只能執(zhí)行一次,多次執(zhí)行會報錯“00955 名稱已由現(xiàn)有對象使用”。
eg:創(chuàng)建學(xué)生表stu
create table stu(sno number, sname varchar2(32), sage int, sdate date, sincome number(8,2));
插入數(shù)據(jù)insert into
語法如下:
insert into 表名(列1,列2,......)values(值1,值2,......);
說明:
- “insert into (…) values (…)”是固定結(jié)構(gòu),小括號是必須有的。
- 第一個小括號中是需要插入的列名,第二個小括號中是需要插入的值。一定要注意的是列名跟值是一一對應(yīng)的。不僅個數(shù)一致,位置也要一致。
- 插入的值,必須跟數(shù)據(jù)類型保持一致:number/int類型就是純數(shù)字,varchar2類型是用單引號引起來;date類型是字符串前面加date;
- 被插入的表必須存在,如果不存在,需要create table創(chuàng)建。
- 同一條插入語句,重復(fù)執(zhí)行,會插入多條相同的數(shù)據(jù)。
eg:向表中插入下述內(nèi)容
insert into stu(sno, sname, sage, sdate, sincome)values(1,'張三',23,date'1990-02-23', 3000.32);
insert into stu(sno, sname, sage, sdate, sincome)values(2,'李四',24,date'1989-10-12', 4300.46);
insert into stu(sno, sname, sage, sdate, sincome)values(3,'王五',25,date'1987-07-03', 4977.58);
查詢數(shù)據(jù)select from
語法如下:
select * from 表名;
select 列名1, 列名2... from 表名;
說明:
- “select … from …”是固定結(jié)構(gòu),先寫select,再寫from;
- select后面跟著是星號,表示顯示所有列;
- select后面可以跟具體的列名,多個列名之間使用逗號分割;
- from后面跟的是表名;
修改數(shù)據(jù)update set
語法如下:
update 表名 set 列名1=新值1,列名2=新值2 [where 列名=某值];
說明:
- “update … set …”是固定結(jié)構(gòu)。
- set后面的等號表示把新值1賦給某一列,讓該列的值變成新的值;有多個列的值要修改,就寫多個等式,中間用逗號分割。
- where是可選的,如果沒有where條件,意味著對所有行都修改;有where條件,只對滿足條件的行做修改。
eg:按下面要求,修改stu中的數(shù)據(jù)
update stu set sincome=4000;
update stu set sincome=4000 where sno=1;
update stu set sincome=4000 where sno<3;
update stu set sincome=sincome+1000;
刪除數(shù)據(jù)delete from
語法如下:
delete from 表名 [where條件];
說明:
- 如果不帶where條件,則刪除表中所有記錄;帶where條件,則刪除符合條件的行。
eg:按如下要求刪除stu表中數(shù)據(jù)
-- 刪除張三
delete from stu where sno=1;
-- 刪除所有
delete from stu;
備份ctas
如果對一個表進行備份,或者對表中一部分數(shù)據(jù),一部分列備份,就可以使用ctas。
相當(dāng)于“文件的另存為”功能。
語法如下:
create table 新表名 as select語句
eg:
對stu表備份,新的表名是stu1
create table stu1 as select * from stu;
把stu表的sno、sname、sage三列數(shù)據(jù)備份到新的表stu2中。
create table stu2 as select sno, sname, sage from stu;
創(chuàng)建一個表stu3,結(jié)構(gòu)跟stu表完全相同,但是沒有數(shù)據(jù)。
create table stu3 as select * from stu where 1=2;
結(jié)果插入iis
查詢一個表的內(nèi)容,把查詢結(jié)果插入到另一個表中。
語法如下:
insert into 表名 select語句;
例 :演示iis插入數(shù)據(jù)。
insert into stu3 select * from stu;
截斷表 truncate table
對于刪除整個表的所有數(shù)據(jù),delete并不會釋放表所占用的空間。
如果用戶確定是刪除整表的所有數(shù)據(jù),那么使用 truncate table 速度更快。
一個表可以看做是一張紙,上面有很多數(shù)據(jù),使用delete刪除相當(dāng)于使用橡皮擦擦除數(shù)據(jù),使用truncate刪除相當(dāng)于換了一張新的紙,非常干凈,而且速度快。
使用delete刪除,可以回滾數(shù)據(jù);使用truncate刪除,不能回滾數(shù)據(jù)。
例 :對stu1表進行截斷操作。
truncate table stu2;
修改表結(jié)構(gòu)alter table
主要操作包括增加列、刪除列、修改列名、修改列的數(shù)據(jù)類型。
- 添加字段
語法如下:
alter table 表名 add(列名1 列類型, 列名2 列類型)
說明:
- 添加列,add后面有小括號,里面是列名和類型;添加多個列,使用逗號分隔;
例 :在stu表中增加一列sphone,類型是varchar2(11)。
alter table stu add (sphone varchar2(11));
- 刪除字段
alter table 表名 drop column 列名
例 :刪除stu表中剛剛添加的sphone列。
alter table stu drop column sphone;
- 修改字段
-- 列的名字重新命名
alter table 表名 rename column 舊的列名 to 新的列名
-- 修改列的類型
alter table 表名 modify 列名 新的列類型
例 :把stu表中的列sincome改為salary。
alter table stu rename column sincome to salary;
添加注釋
comment on table 表名 is '注釋內(nèi)容';
comment on column 表名.字段名 is '注釋內(nèi)容';
例 :給stu表添加表注釋和字段注釋,并在plsql developer中點擊右鍵“描述”查看注釋。
comment on table stu is '學(xué)生表';
comment on column stu.sno is '學(xué)號';
comment on column stu.sname is '學(xué)生姓名';