資料庫介紹--認識簡單的SQL語句
1、資料操縱語言DML
實現對錶內容(資料)的操作
insert/update/delete語句進行操作,需要進行commit
語句才能確認提交。
注意:sqplus預設是自動提交,若不是自動提交那麼
要手動提交(使用commit語句)
1)插入資料insert
寫法一:插入全部欄位
insert into table_name values(值1,值2...);
寫法二:插入指定欄位
insert into table_name(column_name1,column_name2)
values(值1,值2);
注意:
a.使用寫法一時,需要插入全部欄位,欄位值不能多也
不能少
b.欄位值是字元時候需要使用單引號
c.欄位值是日期型別,需要考慮當前的會話日期格式
演示日期資料插入:
create table temp(
birth date
);
//插入資料
insert into temp values('17-5月-18');
alter session set nls_date_format='yyyy-mm-dd';
insert into temp(birth) values('2018-05-16');
//查詢temp表資料
select sysdate from dual;
select birth from temp;
未選定行:表示查詢不到任何一條記錄
//往部門表插入資料
insert into dept_xu values(10,'研發部','南京');
insert into dept_xu values(20,'財務部','蘇州');
insert into dept_xu values(30,'銷售部','合肥');
insert into dept_xu(deptno,dname,location)
values(40,'行政部','上海');
commit;
//檢視錶
select deptno,dname,location from dept_xu;
//建立員工表(emp_xu)
create table emp_xu(
empno number(4),
ename varchar2(10),
position varchar2(20),
salary number(7,2),
bonus number(5,2),
hiredate date,
leader number(4),
deptno number(2)
);
//檢視
select empno,ename from emp_xu;
2)更新資料update
寫法:
update table_name set column_name1=值1,
column_name2=值2 where condition;//多列修改逗號隔開
注意:如果沒有where語句(條件),則表示表中的欄位
全部被修改成相同的值。
//更新部門表中40號部門的部門地點改為'無錫'
update dept_xu set location='無錫' where
deptno=40;
commit;//手動提交
3)刪除資料delete
寫法:
delete [from] table_name [where condition];//[]可選項
注意:如果沒有where語句,則表示表的資料全部被刪除
//刪除部門表中50號部門的資料
insert into dept_xu(deptno,dname)
values(50,'後勤部');//指定欄位
delete from dept_xu where deptno=50;
commit;
刪除相關:
DDL:
drop table table_name;//刪除表內容和結構
truncate table table_name;//刪除表內容保留結構
DML:
delete from table_name;//刪除表內容保留結構
truncate和delete區別:
a.delete是屬於資料操縱語言DML,truncate屬於資料
定義語言DDL
b.delete可以有條件刪除,truncate則表示全部刪除
c.delete可以回退(撤銷),truncate立即生效不可以
回退
d.如果刪除全部資料並且資料量比較大,delete語句
的執行效率比truncate效率低。
2、基礎查詢
1)簡單查詢表資料
select sysdate from dual;
select deptno,dname,location from dept_xu;
select empno,ename from emp_xu;
select * from emp_xu;//星號表示查詢表的全部列
//設定換行字元
set linesize 100
//查詢1005的員工資訊
查詢哪個表->判斷是否有條件->補全結果集
select *
from emp_xu
where empno=1005;
2)列別名
計算員工的月薪和年薪(salary*12)
select ename,salary,salary*12 [as] year_salary
from emp_xu;//as表示可選項,可以不加的
3)空值問題
空值使用NULL表示的
結論要注意:
a.任何資料型別都可以取空值null(插入資料)
insert into dept_xu(deptno,dname)
values(50,'後勤部');
insert into dept_xu values(50,'後勤部',null);
b.空值和任何資料型別進行算術運算時結果都是
空值null
//計算員工的月薪(salary+bonus)
select ename,salary,bonus,salary+bonus month_sal
from emp_xu;//錯誤結果
c.空值和字串型別做連線操作,結果相當於空值不
存在
4)空值處理函式
語法:nvl(d1,d2)
如果d1為空值時,則用d2來代替,否則就用d1的值
注意:nvl函式的兩個引數可以是數值、字元、日期,
但是兩個引數的資料型別必須一致
修改:
select ename,salary,bonus,
salary+nvl(bonus,0) month_sal
from emp_xu;
insert into emp_xu(empno,ename)
values(1013,'歐陽鋒');
//查詢員工的姓名和職位,如果沒有職位則顯示
'No Position'
select ename,
nvl(position,'No Position') as position
from emp_xu;
//查詢員工的入職時間,沒有入職時間顯示當前時間
select ename,nvl(hiredate,sysdate) hiredate
from emp_xu;
select ename,nvl(hiredate,'17-5月-18') hiredate
from emp_xu;
5)插入一條記錄
insert into emp_xu(empno,ename)
values(1013,'歐陽鋒');//指定欄位
insert into emp_xu
values(1013,'歐陽鋒',null,null,null,null,null,null);//
全部欄位,如果最後一個null預設,會報錯的,null
和什麼都不寫是不同的
6)連線符
連線符操作使用||
'||'符號表示將兩個資料連線起來,類似於java中
兩個字串的'+'號。其中一個資料為null時,相當於
不連線任何資料。
//查詢員工的姓名和職位進行連線操作
select empno,ename || ' is ' || nvl(position,'No Position')
from emp_xu;
7)複製表
select * from emp_xu;
create table temp_emp as select * from emp_xu;
select * from temp_emp;
8)去掉重複資料
去重使用distinct
注意:distinct表示去重必須只能跟在select後面
//查詢有哪些職位
select position from emp_xu;//資料有重複,職位
為空也算一個職位
select distinct position from emp_xu;//沒有職位
算一種職位
//查詢有哪些部門
select distinct deptno from dept_xu;//存在一個
部門沒有員工情況,為了資料準確該使用部門表
//查詢每個部門不重複的職位(不同部門可以有相同職位)
select distinct deptno,position from emp_xu;//
需要多兩個欄位進行聯合去重,distinct指全部列的
唯一組合
9)大小寫問題
SQL語句大小寫不敏感(不區分),資料(單引號裡面的)
大小寫敏感(區分)
//查詢職位是'Analyst'的員工資訊
select *
from emp_xu
where position='Analyst';//查詢出3條記錄
select *
from emp_xu
where position='analyst';//未選定行,資料區分大小寫的
SELECT *
from emp_xu
where position='Analyst';//sql語句不區分大小寫
lower():將字元資料轉換成小寫
upper():將字元資料轉換成大寫
select lower('AB') from dual;
select *
from emp_xu
where lower(position)='analyst';
10)介於兩者之間
between 低值 and 高值
注意:臨界值
閉區間:[低值,高值]
//查詢薪水大於等於5000並且小於等於10000的員工資訊
select ename,salary
from emp_xu
where salary>=5000 and salary<=10000;
等同於:
select ename,salary
from emp_xu
where salary between 5000 and 10000;
11)IN關鍵字使用
//查詢職位是'Manager'或者'Analyst'的員工資訊
select ename,position
from emp_xu
where position='Manager' or position='Analyst';
等同於:
select ename,position
from emp_xu
where position in('Manager','Analyst');//in表示
判斷在不在列表項中,只要滿足一個即可
12)模糊查詢
模糊查詢使用like,"%"表示0到多個字元,"_"表示1個
字元
//查詢員工姓名包含'張'字的員工資訊
select ename from emp_xu
where ename like '%張%';
//查詢職位中第二個字元是'a'的員工姓名和職位
select ename,position
from emp_xu
where lower(position) like '_a%';
//查詢當前使用者下有哪些表的表名是以'EMP_'開頭的
select table_name from user_tables
where upper(table_name) like 'EMP\_%' escape '\';
注意:
如果查詢的資料中包含特殊的字元%、_,在模糊匹配
時需要加上'\'進行轉義,並且用escape來指明轉義
的字元。
相關文章
- JavaScript return語句簡單介紹JavaScript
- javascript with()語句用法簡單介紹JavaScript
- 精妙SQL語句介紹SQL
- javascript流程控制語句簡單介紹JavaScript
- 【資料庫】SQL語句資料庫SQL
- mysql資料庫sql語句基礎知識MySql資料庫
- ORACLE資料庫體系框架介紹及SQL語句效能探討(轉)Oracle資料庫框架SQL
- js如何退出迴圈語句簡單介紹JS
- SQL高手篇:精妙SQL語句介紹SQL
- SQL語句的分類簡介SQL
- 資料庫常用的sql語句大全--sql資料庫SQL
- 資料庫常用sql 語句資料庫SQL
- 資料庫SQL拼接語句資料庫SQL
- Sql server 的update語句的新認識SQLServer
- 資料庫菜鳥不可不看簡單SQL語句小結資料庫SQL
- 1.4 資料庫和常用SQL語句(正文)——MySQL資料庫命令和SQL語句資料庫MySql
- 資料庫介紹--初識資料庫資料庫
- mysql 常用sql語句 簡介MySql
- 簡單的SQL語句學習SQL
- MySql和簡單的sql語句MySql
- SQL JOIN 簡單介紹SQL
- [轉]Oracle資料庫ASH和AWR的簡單介紹Oracle資料庫
- 資料庫常用操作SQL語句資料庫SQL
- SQL資料庫連線語句SQL資料庫
- javascript for in語句瀏覽器相容問題簡單介紹JavaScript瀏覽器
- js使用與或運算子替代if語句簡單介紹JS
- HSQL 資料庫介紹(1)--簡介SQL資料庫
- 達夢資料庫執行緒簡單介紹資料庫執行緒
- 資料庫常用的sql語句彙總資料庫SQL
- 資料庫巡檢常用的SQL語句資料庫SQL
- SQLServer資料庫管理的常用SQL語句SQLServer資料庫
- 資料庫安全知識介紹資料庫
- 專用IE瀏覽器的if判斷語句簡單介紹瀏覽器
- Oracle 資料庫監控SQL語句Oracle資料庫SQL
- 一條簡單SQL語句的構成及語句解析SQL
- 認識及操作SQL Server 資料庫SQLServer資料庫
- 簡單Sql語句統計每年每個月的資料,每個月為資料的每列,簡單SQL練習SQL
- 簡單SQL語句小結(轉)SQL