ddl语句和dml语句,创建序列和约束

DML

insert:

SQL> create table t1(x int, y char(1), z date);

SQL> insert into t1(x, y, z) values (1, ‘a‘, sysdate);

SQL> insert into t1(x, z, y) values (2, sysdate+1, ‘b‘);

SQL> insert into t1(x, y, z) values (1, null, sysdate);

SQL> insert into t1(x, z) values (2, sysdate+1);

SQL> insert into t1 values (1, null, sysdate);

SQL> create table my_emp as select * from employees;

SQL> create table my_emp as select last_name, salary from employees where department_id=50;

SQL> create table avg_sal as select department_id, avg(salary) avg_sal from employees group by department_id;

SQL> create table my_emp as select * from employees where 1=0;

SQL> insert into my_emp select * from employees;

update:

SQL> update my_emp set salary=salary*1.1;

SQL> update my_emp set salary=salary*1.1 where department_id=50;

SQL> update my_emp set salary=salary*1.1, commission_pct=0.5 where employee_id=197;

delete:

SQL> delete from my_emp where employee_id=197;

SQL> delete from my_emp where department_id=50;

SQL> delete from my_emp;

子查询:

SQL> create table my_emp as select * from employees;

SQL> alter table my_emp add(department_name varchar2(30));

SQL> update my_emp outer

set department_name=(

select department_name

from departments

where department_id=outer.department_id);

关联子查询 更新表

update (select t1.department_name as aname,t2.department_name bname from my_emp t1 ,departments t2 where t1.department_id=t2.department_id) set aname=bname;

练习:

在new_dept表中删除没有员工的部门

SQL> create table my_dept as select * from departments;

delete from my_dept outer

where not exists

(select 1 from my_emp

where department_id=outer.department_id);

delete和truncate:

delete truncate

语句类型 dml ddl 自动提交

undo数据 产生大量undo数据           不产生undo数据

空间管理             不释放 释放

语法 where 删除全部数据

DDL

字符串:

SQL> create table t1(x char(10), y varchar2(10));

SQL> insert into t1 values(‘x‘, ‘y‘);

SQL> select dump(x), dump(y) from t1;

数值:

SQL> create table t1(x number(5,2), y number(5));

SQL> insert into t1 values (123.45, 12345);

SQL> insert into t1 values (12.345, 12345);

SQL> insert into t1 values (12.345, 123.45);

SQL> select * from t1;

SQL> insert into t1 values (12.345, 112345);

日期时间:

SQL> create table t1(a date, b timestamp, c timestamp with time zone, d timestamp with local time zone);

SQL> insert into t1 values (sysdate, systimestamp, systimestamp, systimestamp);

SQL> alter session set time_zone=‘+9:00‘;

SQL> select * from t1;

修改表结构:

SQL> alter table t1 add(e char(10));

SQL> alter table t1 drop(e);

SQL> alter table t1 modify(d not null);

alter table emp modify(job_id default 10);

约束条件:

字段(列):not null, check(salary>0)

行与行:primary key, unique

表与表之间:foreign key

create table dept (

deptno int constraint dept_deptno_pk primary key,

dname varchar2(20) constraint dept_dname_nn not null);

create table emp (

empno int constraint emp_empno_pk primary key,

ename varchar2(20) constraint emp_ename_nn not null,

email varchar2(50) constraint emp_email_uq unique,

salary int constraint emp_salary_ck check(salary>0),

deptno int constraint emp_deptno_fk references dept(deptno))

SQL> select constraint_name, constraint_type from user_constraints where table_name in(‘DEPT‘, ‘EMP‘);

SQL> insert into emp values (100, ‘abc‘, ‘[email protected]‘, 10000, 10);

insert into emp values (100, ‘abc‘, ‘[email protected]‘, 10000, 10)

*

ERROR at line 1:

ORA-02291: integrity constraint (HR.EMP_DEPTNO_FK) violated - parent key not

found

SQL> insert into dept values (10, ‘sales‘);

1 row created.

SQL> insert into dept values (10, ‘market‘);

insert into dept values (10, ‘market‘)

*

ERROR at line 1:

ORA-00001: unique constraint (HR.DEPT_DEPTNO_PK) violated

SQL> insert into dept values (20, ‘market‘);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into emp values (101, ‘def‘, ‘[email protected]‘, 10000, 20);

create table emp (

empno int constraint emp_empno_pk primary key,

ename varchar2(20) constraint emp_ename_nn not null,

email varchar2(50) constraint emp_email_uq unique,

salary int constraint emp_salary_ck check(salary>0),

deptno int constraint emp_deptno_fk references dept(deptno) on delete set null)或者on delete cascade

instead of trigger视图触发器  先取消工作,再执行触发器工作

序列:

SQL> create sequence test_seq increment by 1 start with 1 maxvalue 1000 nocycle cache 20;

SQL> create table t1(x int primary key, y int);

SQL> insert into t1 values (test_seq.nextval, 11); 反复执行

SQL> select * from t1;

索引:

主键和唯一性约束自动创建索引:

SQL> select constraint_name, constraint_type from user_constraints where table_name=‘EMPLOYEES‘;

SQL> select index_name, index_type from user_indexes where table_name=‘EMPLOYEES‘;

SQL> set autot on

SQL> select last_name from employees where employee_id=100; 走索引

SQL> select email from employees; 走索引

SQL> select last_name from employees where salary=2100; 全表扫描

SQL> create index emp_salary_ix on employees(salary);

SQL> select last_name from employees where salary=2100; 走索引

SQL> set autot off

时间: 2025-01-14 12:21:38

ddl语句和dml语句,创建序列和约束的相关文章

7.PL_SQL——在PL_SQL程序中内嵌查询语句、DML语句和事物处理语句

在PL/SQL中可以使用的SQL语句主要有以下几类: SELECT 查询语句,DML语句,Transaction 事物处理语句,本文将对这几类语句在PL/SQL中的用法逐一介绍. 一.查询语句-SELECT SELECT 语句用来查询一条或多条语句.虽然SELECT 语句也属于DML语句,但SELECT是只读的,所以单独列出. 在PL/SQL中使用SELECT 语句的格式如下:   SELECT select_list INTO {variable_name[,variable_name]...

[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL

本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table.View [独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure.function.Sequence [独孤九剑]Oracle知识点梳理(七)数据库常用对象之Cursor [独孤九剑]Oracle知识点梳理(八)常见Exception

jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化

上一章的代码中,可以发现,jdbc执行DDL和DML有几个步骤都是一样的: 1)执行语句开始时,创建驱动注册对象.获取连接的数据库对象.创建Statement对象 1 // 创建驱动注册对象 2 Class.forName("com.mysql.jdbc.Driver"); 3 4 // 获取连接的数据库对象 5 Connection conn = DriverManager.getConnection(url, user, 6 password); 7 8 // 创建Statemen

DDL与DML语句

1. DDL语句 SQL语句:结构化查询语句,使用SQL与数据库"沟通",完成相应的数据库操作. l DDL:数据定义语言,用来维护数据库对象 1.1 创建表 ? CREATE:创建表 演示:创建员工表 CREATE TABLE employee( id NUMBER(4), name VARCHAR2(20), gender CHAR(1), birth DATE, salary NUMBER(6,2), job VARCHAR2(30), deptno NUMBER(2) ); ?

使用DML语句【weber出品必属精品】

DML语句包含以下语法: INSERT:往一个表中增加新行 DELETE:从一个表中删除掉现有的行 UPDATE:更改一个表中现有的行 INSERT语句语法:INSERT INTO TABLE(COLUMN1,COLUMN2,....) VALUES(VAL1,VAL2,...)使用这种方法只能一次插入一行数据 插入包含每一个列值的新行,按缺省顺序列出表中所有的列值. 创建带有结构的空表 SQL> create table t as select * from emp where 1=2;---

03.JDBC数据库编程之处理DML语句

转载请标明出处:http://blog.csdn.net/u012637501 一.DML与Statement接口 1.DML(Data manipulation language) 数据库操作语句,用于添加.删除.更新和查询数据库纪录,并检查数据库的完整性.常用的语句关键字主要包括insert.delete.update等. (1)添加/修改/删除表数据 ■增加一行数据:(思想:往哪张表添加?给哪几行添加值?分别是什么值?) insert  into  表名  (列1,列2,...,列n)  

入门MySQL——DML语句篇

前言:? 在上篇文章中,主要为大家介绍的是DDL语句的用法,可能细心的同学已经发现了.本篇文章将主要聚焦于DML语句,为大家讲解表数据相关操作. 这里说明下DDL与DML语句的分类,可能有的同学还不太清楚. DDL(Data Definition Language):数据定义语言,用于创建.删除.修改.库或表结构,对数据库或表的结构操作.常见的有create,alter,drop等. DML(Data Manipulation Language):数据操纵语言,主要对表记录进行更新(增.删.改)

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第3/5套:Oracle SQL语言DML语句与事务.主要学习Oracle数据库SQL语句INSERT命令,学习使用UPDATE命令,学习使用DELETE命令,学习创建PL/SQL对象,事务概念与控制,锁的检测和锁争用,了解撤销数据. Oracle SQL语言DML语句与事务管理,课

Oracle存储过程使用DML语句问题

前几天用oracle写存储过程,发现在存储过程中写update.insert或者delete语句都会编译错误, 后来在不经意间找到了解决方案, 加入emp表示scott用户的,如果用scott用户创建存储过程,表名=emp,这样创建的存储过程是可以写任意DML语句的 但是用其余用户登录,如果采用normal方式登录,虽然表名可以写成scott.emp,但是在存储过程中的DML语句是不会这样识别的,会提示表或者视图不存在 采用sysdba方式登录就可以采用这样的写法 如果你细心一些会发现,采用不同