資料庫學習3 dml和序列

2021-06-22 16:24:45 字數 4752 閱讀 9823

1. 序列

一組等長間隔的數字,主要就是用在主鍵的值

/*create sequence 序列名

increment by  1  負數是遞減

start with    10

maxvalue      10000000

minvalue      10

cycle|nocycle

nocache|cache 20;

*/--alter sequence 序列名

-- start with 是不能修改的

--drop sequence 序列名

--使用序列 :

--序列名.nextval 序列名.currval

2. 插入和更新資料操作

3. 刪除資料操作

4. 複製建表

--建立序列

create sequence seq_***

--預設開始位置 1 間隔1 快取20 不迴圈 最大值99999999999999999999

create sequence seq_***2

start with 1000 --開始位置

increment by 2 --間隔

cache 30|nocache --快取 30或不快取

maxvalue 99999999999999 --最大值

cycle|nocycle --迴圈或不迴圈

create sequence seq_***2

start with 1000 --開始位置

increment by 2 --間隔

nocache --快取 30或不快取

maxvalue 10000000000000 --最大值

cycle --迴圈或不迴圈

create table oder--訂單表

( o_id number primary key,

o_name varchar2(20),

custom number references custom(c_id)

) insert into oder values(seq_***2.nextval,'合肥的一批大公尺','');

select * from oder;

create table custom --客戶表

( c_id number primary key,

c_name varchar2(20)

)--dual虛表(偽表)

select * from dual;

select 1+1 from dual;

select sysdate from dual;

select seq_***2.nextval from dual;

-- 修改序列

alter sequence seq_***2

--start with 900 開始的位置不允許修改

increment by 1

cache 100

nocycle

maxvalue 99999999999999

--刪除

drop sequence seq_***2;

--檢視已經建立的序列

select * from user_sequences;

--更新表的資料

-- 格式: update 表名 set 欄位名='更新的值'

-- 或者update 表名 set 欄位名='更新的值' where 表示式

update oder set o_name = '新的值' where o_id = 1002;

--update oder set o_name = '123456' where o_name = '合肥的一批大公尺';

--刪除表的資料

--刪除所有的資料: delete from 表名; truncate table 表名;

delete from oder; --逐行的刪除,可以找回,通常資料操作中用delete

truncate table oder; --一次性刪除,找不回

delete from oder where o_id = 1004;

--複製表

create table oder2 as select * from oder; --複製建表,不複製約束

--複製表,不複製資料

create table oder3 as select * from oder where 1=2;

--insert into ... select ... from 批量的新增資料

insert into oder3 select * from oder where o_id = 1004;

select * from oder3;

--複製表不複製資料

create table emp2 as select * from emp where 1 = 2;

--批量新增資料到複製表中

insert into emp2(empno,ename,job,hiredate,sal,comm,deptno)

select empno,ename,job,hiredate,sal,comm,deptno from emp

where empno>7900;

--刪除原表資料

delete from emp where empno > 7900;

/*3. 運算子

3.1算術運算子: *, /

+, -

3.2連線運算子:||

3.3比較運算子:>, >=, <, <=, <>(!=)

3.4特殊比較運算子:

is[not] null,[not] like,[not] in

[not] between ... and

3.5邏輯運算子:

not

and

or*/select ename,job,sal*6.35-sal*6.35*0.1 from emp;

-- || 連線運算子

select ename||'在'||job||'工作崗位上',hiredate from emp;

-- =,<>(!=)

select * from emp where job = 'manager';

select * from emp where job <> 'manager';

select * from emp where job != 'manager';

-- is (資料庫中 '' 相當於 null)

-- 查詢有提成的員工

select * from emp where comm is null;

-- 查詢沒有提成的員工

select * from emp where comm is not null;

-- in 是否在列表範圍

-- 查詢工作崗位是經理或者辦事員的員工

select * from emp where job = 'manager' or job = 'clerk';

select * from emp where job in ('manager','clerk');

-- 查詢工作崗位 不 是經理或者辦事員的員工

select * from emp where job not in ('manager','clerk');

-- like 模糊查詢 萬用字元'%'表示任意個數的任意字元, '_'表示單個的任意字元

--查詢名字中包含有『a』的員工

select * from emp where ename like '%a%';

--查詢名字中第二個字元為『a』的員工

select * from emp where ename like '_a%';

-- not like

select * from emp where ename not like '%a%';

-- between ... and 取值範圍

-- 查詢工資在1000到2000之間的員工

select * from emp where sal between 1000 and 2000;

select * from emp where sal >= 1000 and sal<=2000;

-- 查詢入職日期在1981 - 1982 之間的員工

select * from emp where to_char(hiredate,'yyyy') between '1981' and '1982';

select * from emp where sal not between 1000 and 2000;

select * from emp where sal < 1000 or sal > 2000;

-- not, and , or

select * from emp where sal <1000 or sal > 2000;

select * from emp where sal >1000 and sal < 2000;

--查詢工資在1000 到2500 之間的經理

select * from emp where sal >= 1000 and sal <= 2000 and job = 'manager';

--查詢工資不在1000 到2500 之間的經理

select * from emp where (sal < 1000 or sal > 2000) and job = 'manager';

Mysql資料庫 DML查詢(3)

7.多表查詢練習 1.給出乙個員工的生日 收入 部門名字 2.給出各部門歷任領導的記錄並附上部門名字 3.計算各個部門的平均工資並排序,給出平均工資 部門名稱 答案 1.第一題 select a.emp no,salary,birth date,dept name from employees as...

資料庫 DDL 和 DML操作

目錄 一 ddl操作 1.運算元據庫 2.運算元據庫表 二 dml操作 1.insert 2.delete 3.update create database if not exists dbname 建立資料庫 drop databasae if exists dbname 銷毀資料庫 2.1 新增...

資料庫語言 DDL和DML

按照資料庫系統概念 來說 資料庫系統提供 資料庫定義語言 data definiton language 來定義資料模式 和 資料操縱語言 data manipulation language 來表達資料庫的查詢和更新.而資料庫定義語言和資料庫操縱語言構成了sql語言的不同部分.什麼是ddl?dat...