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...