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語句的分類 ...