資料庫開發的基本語法

2021-10-09 05:42:17 字數 4887 閱讀 3841

1、數值型:number(p[,s]):表示該型別最多儲存 p位數,其中s位為小數

number(5):表示該型別最多存5位整數

number(5,2):表示該型別最多存3(5-2)位整數,2位小數

2、字元型:

定長字串:char(n):表示該型別如果填寫,則內容長度一定是n個位元組,如果長度小於n則會用空格自動補齊到n個位元組,如果超過n則報錯

變長字串:varchar2(n):表示該型別最多存n個位元組,如果內容長度小於n則不會自動補齊,超過n則報錯

char和varchar的不同:

1、char為定長字串,varchar為變長字串

2、char最多存2000個位元組,varchar最多存4000個位元組

3、根據char型別的查詢效率要高於varchar型別的查詢效率

3、日期型別:date

create table student

( stuno number(2

),stuname varchar2(20

),*** char(2

),height number(3

,2),

birthday date

)

/**

插入 insert into 表名(列,列…) values(值,值…)

注意:值與列對應(型別和個數對應)

insert into student

(stuno,stuname,***,height,birthday)

values(2

,'李四'

,'女'

,1.68

,to_date

('1996-09-08'

,'yyyy-mm-dd'

))

/**

查詢 select 列,列… from 資料來源(表)

注意:1、在查詢語句中, select 和 from 必須有 select用於宣告要顯示的列 from 用於宣告資料**

2、如果只有 select from 則表示展示表中的每一條資料,如果要進行條件查詢需要 select …from…where 查詢條件

這樣會展示資料來源中符合條件的資訊

*/–顯示所有學生的學號,姓名,性別

select stuno,stuname,*** from  student
–查詢所有的女學生的姓名和生日

select stuname,birthday from student where ***=

'女'

–查詢身高在1.65到1.75之間的學員資訊

select stuno,stuname,***,height,birthday from student where height>=

1.65 and height<=

1.75

–查詢所有身高高於1.70或者姓名是男的學員

select stuno,stuname,***,height,birthday from student where height>=

1.7 or ***=

'男'

/**

刪除:delete [from] 表名 where 條件:

從表中刪除符合條件的資訊

注意:刪除語句where是關鍵,因為where決定了刪除那些資訊,如果沒有where表示清空表中全部資料

*/–刪除 學號為 4的學員資訊

delete from student where stuno=

4;

commit;

/**修改:

update 表名 set 列=修改的值,列=修改的值,… where 條件

將表中符合條件的對應字段進行修改

注意:修改where 是關鍵,因為where決定了那些條資料被修改,如果沒有where則表示表中所有的資料都被修改

*/

select stuno, stuname, ***, height, birthday from student
–將1號學員的姓名改為張三丰,身高改為1.85,生日改為1900-09-02

update student

set stuname =

'張三丰'

, height =

1.85

, birthday =

to_date

('1900-09-02'

,'yyyy-mm-dd'

) where stuno =

1

commit;

rollback;

–查詢所有沒有設定獎金的人

select * from emp where comm is null;

--查詢comm列狀態為null的員工資訊

--將員工姓名為allen的員工獎金設定為null

update emp set comm = null where ename =

'allen'

;--表中記錄嚴格區分大小寫

–注意任何資料與null進行運算結果依然為null

– nvl(列,預設值):如果該列為null則返回預設值,如果不為null正常返回

–顯示所有的員工姓名,工資,獎金,和月收入(工資+獎金) (如果獎金為null則預設為0)

select ename ,sal,comm as 獎金,sal+

nvl(comm,

0) as 月收入 from emp

列in (集合)如果列的值等於集合中的某乙個值則表示true

–查詢10部門和20部門的員工資訊

select * from emp where deptno=

10 or deptno=

20

select * from emp where deptno  in (10,

20)

–查詢不在10部門也不在20部門工作的員工

select * from emp where deptno !=

10 and deptno <

>

20

– 列 not in(集合) 如果列的值不等於集合中的某個值,就返回true

select * from emp where deptno not in(10

,20)

模糊查詢是對字串型別進行部分匹配的查詢

模糊查詢的運算子為 like

佔位符: % ,無限制佔位 即佔 >=0

_,佔而且只佔一位 即佔 =1

–查詢姓名以a開頭的員工資訊

select * from emp where ename like 'a%'
–查詢姓名中有字元 a的員工

select * from emp where ename like '%a%'
–查詢姓名以s結尾的員工

select * from emp where ename like '%s'
–查詢姓名中第二個字母為a的員工資訊

select * from emp where ename like '_a%'
–查詢2023年之**職的員工

select * from emp where hiredate>

to_date

('1982-01-01'

,'yyyy-mm-dd'

)

–to_char(date,格式)將時間中指定的屬性轉為字串

–查詢入職時間為2023年的員工

select * from emp where  to_char

(hiredate,

'yyyy')=

'1987'

–查詢1987-04-19入職的員工

select * from emp where hiredate =

to_date

('1987-04-19'

,'yyyy-mm-dd'

) select * from emp where to_char

(hiredate,

'yyyy-mm-dd')=

'1987-04-19'

–查詢所有在4月份入職的員工

select * from emp where to_char

(hiredate,

'mm')=

'04'

select  .

.. from ...

[where ]

[order by 排序列1

,排序列2

]

–查詢工資大於1000的員工,並按照部門編號公升序排序,如果部門編號一致則按照工資倒序,如果工資一致按照員工號倒序

select * from emp where sal>

1000 order by deptno asc,sal desc,empno desc

小結:建議大家根據業務上的需求來進行實際開發sql,首先要一步一步去解決問題,根據你要實現的功能選擇實現的方式(集合、子查詢、內連、外連、函式),接下來我會為大家分享如何用儲存過程、函式來處理業務上的邏輯。

資料庫基本語法

建立studb資料庫 create database studb 修改studb資料庫 alter database studb 刪除studb資料庫 drop database studb 查詢資料庫資訊 exec sp helpdb studb 建立stuinfo資料表 create table...

資料庫的基本語法

1 資料庫表的操作 增 insert into 表名 欄位1,欄位2.values 值1,值2.刪 delete from 表名 where 根據條件 改 update 表名 set 需要修改的字段 要修改的值 查 select from 表名 2 資料庫操作 create database 資料庫...

MySQL資料庫的基本語法

1.mysql資料型別數值以及浮點型介紹 2.mysql資料型別之字串介紹 常用的有 char varchar text。3.mysql資料型別之時間型別介紹 常用的是 timestampt,將時間儲存為時間戳的形式,為int型別,後續再轉化成時間。5.sql語句之運算子介紹 6.sql語句的分類 ...