ORACLE---Unit01: 数据库原理 、 SQL(DDL、DML)

--SQL语句是不区分大小写的,但是为了增加可读性,可以将关键字全部大写,非关键子全部小写。
SELECT SYSDATE FROM dual;

--SQL语句根据功能有不同分类:
--DDL语句(数据定义语言)
--用于操作数据库对象。数据库对象包括:
--表、视图、索引、序列

--->1.创建表:
CREATE TABLE employee_RR(
 id NUMBER(4),
 name VARCHAR2(20),
 gender CHAR(1),
 birth DATE,
 salary NUMBER(6,2),
 job VARCHAR2(30),
 deptno NUMBER(2)
);

--->2.查看表的结构:(两个地方会用到)
DESC employee_RR

--->3.删除表:
DROP TABLE employee_RR;

---DEFAULT
---设置默认值
---在数据库中,无论字段是什么类型,默认值都是NULL,但是可以在创建表的时候,通过DEFAULT关键字为指定的列单独设置默认值。
---在数据库中,字符串使用单引号表示字面量,这一点与java不一致,需要注意!
---注:不同的数据类型,数字直接就写数字不需要单引号,而字符的自变量就写单引号。
--      和Java中不一样的是,在数据库中,不论单一字符还是多字符的自变量,都是单引号。
---可以通过DEFAULT子句给列指定默认值(null)
---给gender列赋默认值‘M’,如果没有指定性别的员工,默认是男性。
---先将employee表删除,再创建表employee
---注:SQL语句虽然不区分大小写,但是字符串内容是区分大小写的。
CREATE TABLE employee_RR(
       id NUMBER(4),
       name VARCHAR2(20),
       gender CHAR(1) DEFAULT ‘M‘,
       birth DATE,
       salary NUMBER(6,2),
       job VARCHAR2(30),
       deptno NUMBER(2)
); 
DROP TABLE employee_RR;

---NOT NULL约束
---非空约束要求指定字段在任何情况下值不允许为空。
---非空(Not Null)是一种约束条件,用于确保字段值不为空
---默认情况下,任何列都允许有空值 (注意:gender CHAR(1)NOT NULL DEFAULT ‘M‘,为错误,不允许这样)
---(注意:not null是可以看得到的。)
---当某个字段被设置了非空约束条件,这个字段中必须存在有效值
---当执行插入数据的操作时,必须提供这个列的数据
---当执行更新操作时,不能给这个列的值设置为NULL
--->NOT NULL约束
--->NOT NULL约束可以确保指定的字段不允许NULL.
CREATE TABLE employee_RR(
       id NUMBER(4),
       name VARCHAR2(20)NOT NULL,
       gender CHAR(1) DEFAULT ‘M‘,
       birth DATE,
       salary NUMBER(6,2),
       job VARCHAR2(30),
       deptno NUMBER(2)
);
DESC employee_RR

---二.修改表
---修改表可以修改表的名字和表的结构
---2.1修改表名:
---RENAME old_name TO new_name
---在建表后如果希望修改表名,可以使用RENAME语句实现
---语法如下,将改变表名old_name为new_name:
---RENAME old_name TO new_name;
---修改表名employee为myemp
---RENAME employee TO myemp;

RENAME employee_RR TO myemployee_RR

DESC employee_RR
DESC myemployee_RR

---2.2:修改表结构
---添加新字段,删除现有字段,修改现有字段
---就是改变表当中的字段,增删改。添加新的字段,或几个字段。
---增加列
---给表增加列可以使用ALTER TABLE的ADD子句实现。
---语法:
---ALTER TABLE table_name ADD();
---列只能增加在后面,不能插入到现有的列中
---给表增加一列hiredate,并设置默认值为当前日期
---2.2.1:添加新字段
---向myemp表中添加字段hiredate

ALTER TABLE myemployee_RR ADD (hiredate DATE DEFAULT sysdate);
DESC myemployee_RR

---2.2.2:删除字段
---将myemp表中的hiredate删除

ALTER TABLE myemployee_RR DROP (hiredate);
DESC myemployee_RR

---2.2.3:修改现有字段
---修改字段可以修改字段的类型,长度添加默认值或者约束条件。
---但是修改字段尽量在表中没有数据的情况下进行,否则尽量不要修改字段类型,
---改长度也尽量只增不减,否则可能修改失败。
--->可以修改字段的类型,长度,默认值,非空

--修改列 MODIFY
--建表之后,可以改变表中列的数据类型、长度和默认值
--修改仅对以后插入的数据有效
--如果把长度由大改小,有可能不成功
--语法:
--ALTER TABLE table_name MODIFY
--修改表myemp的列job,并增加默认值的设置
--ALTER TABLE myemp
--MODIFY(job VARCHAR2(40) DEFAULT‘CLERK‘);
注意:尽量不要修改表结构,修改也是数据空的表,不然说明前期工作分析不足。
1、字段类型不要改,因为表里已经有数据了。如果之前是字符串改为date,就会失败
2、长度尽量大的扩,不要小的缩。
--ALTER TABLE myemployee_RR MODIFY (job NUMBER(10,2)NOT NULL);

ALTER TABLE myemployee_RR MODIFY(job VARCHAR2(40))
DESC myemployee_RR

-----DML语句(数据操作语言)
---DML用于对表中数据进行增、删、改操作
---1.INSERT:插入数据
--INSERT INTO myemployee_RR(id,name,job,deptno)VALUES(1,‘ROSE‘,11,10);
INSERT INTO myemployee_RR(id,name,job,deptno)VALUES(1,‘ROSE‘,‘CLERK‘,10);
COMMIT
SELECT * FROM myemployee_RR

--COMMIT--〉已提交  执行按钮右边第五个铁桶钩也是COMMIT(F11) //再右边是ROLLBACK回滚
--ROLLBACK--〉回退完成。

--INSERT语句中的字段名可以忽略,但是忽略后就是全列插入。
INSERT INTO myemployee_RR VALUES(2,‘rose‘,‘M‘,SYSDATE,5000,‘CLEAK‘,20)
SELECT * FROM myemployee_RR

---插入日期类型数据
---可以直接给定字符串,但是格式必须是:‘DD-MON-RR‘,由于月用得是简拼,
---不同语言地区这里会有出入:
---英语地区是以英文字母缩写形式,如‘01-SEP-03‘
---而中文环境下为:‘01-9月-03‘。所以不建议使用。
---可以使用TO_DATE函数,这是数据库的一个内置函数,可以将一个字符串
---按照指定的日期格式转换为DATE值。

INSERT INTO myemployee_RR(id,name,job,deptno,birth)VALUES
(3,‘mark‘,‘CLERK‘,20, TO_DATE(‘1990-09-13‘,‘YYYY-MM-DD‘))

SELECT * FROM myemployee_RR

---UPDATE语句
---更新表中的记录
---语法如下:
---UPDATE table_name
---SET column= value()
---如果没有where子句,则全表的所有数据都会被更新修改,务必小心

---2.UPDATE,更新数据,将rose的性别改为‘F‘,更新职员rose的薪水为8600
---修改的时候通常要使用WHERE子句来添加过滤条件,这样仅会将满足条件的记录
---进行修改,若不添加过滤条件则是全表更新,这样的情况实际比较少。
UPDATE myemployee_RR SET gender=‘F‘,salary=8600 WHERE name=‘rose‘
SELECT * FROM myemployee_RR

---3.DELECT,删除语句
---删除ROSE
DELETE FROM myemployee_RR WHERE gender=‘M‘
DELETE FROM myemployee_RR WHERE name=‘rose‘
SELECT * FROM myemployee_RR

---DELETE 语句
---在DDL语句中的TRUNCATE语句,同样有删除表数据的作用。
---和DELETE语句的区别:
--DELETE可以有条件删除,TRUNCATE将表数据全部删除
--DELETE是DML语句,可以回退,TRUNCATE是DDL语句,立即生效,无法回退
--如果是删除全部表记录,且数据量较大,DELETE语句效率比TRUNCATE语句低。
--删除全部记录
--DELETE FROM myemp;
--或者
--TRUNCATE TABLE myemp

**************************************************************************************************************************************************************************

CREATE TABLE emp_RR(
   empno NUMBER(4,0),
   ename VARCHAR2(10),
   job VARCHAR2(9),
   mgr NUMBER(9),
   hiredate DATE,
   sal NUMBER(7,2),
   comm NUMBER(7,2),
   deptno NUMBER(2,0)
);

DESC emp_RR

CREATE TABLE dept_RR(
   deptno NUMBER(2,0),
   dname VARCHAR2(14 BYTE),
   loc VARCHAR2(13 BYTE)
);

DESC dept_RR
DROP TABLE dept_RR;

INSERT INTO emp_RR(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
VALUES(7369,‘SMITH‘,‘CLERK‘,7902,to_date(‘1980-12-17‘,‘YYYY-MM-DD‘),800,NULL,20);
INSERT INTO emp_RR VALUES(7499,‘ALLEN‘,‘SALESMAN‘,7698,TO_DATE(‘1981-2-22‘,‘YYYY-MM-DD‘),1600,300,30);
INSERT INTO emp_RR VALUES(7521,‘WARD‘,‘SALESMAN‘,7698,TO_DATE(‘1981-2-22‘,‘YYYY-MM-DD‘),1250,500,30);
INSERT INTO emp_RR VALUES(7566,‘JONES‘,‘MANAGER‘,7839,TO_DATE(‘1981-4-2‘,‘YYYY-MM-DD‘),2975,NULL,20);
INSERT INTO emp_RR VALUES(7654,‘MARTIN‘,‘SALESMAN‘,7698,TO_DATE(‘1981-9-28‘,‘YYYY-MM-DD‘),1250,1400,30);
INSERT INTO emp_RR VALUES(7698,‘BLAK‘,‘MANAGER‘,7839,TO_DATE(‘1981-5-1‘,‘YYYY-MM-DD‘),2850,NULL,30);
INSERT INTO emp_RR VALUES(7782,‘CLARK‘,‘MANAGER‘,7839,TO_DATE(‘1981-6-9‘,‘YYYY-MM-DD‘),2450,NULL,10);
INSERT INTO emp_RR VALUES(7788,‘SCOTT‘,‘ANALYST‘,7566,TO_DATE(‘1987-4-19‘,‘YYYY-MM-DD‘),3000,NULL,50);
INSERT INTO emp_RR VALUES(7839,‘KING‘,‘PRESIDENT‘,NULL,TO_DATE(‘1981-11-17‘,‘YYYY-MM-DD‘),5000,NULL,10);
INSERT INTO emp_RR VALUES(7844,‘TURNER‘,‘SALESMAN‘,7698,TO_DATE(‘1981-9-8‘,‘YYYY-MM-DD‘),1500,0,30);
INSERT INTO emp_RR VALUES(7876,‘ADAMS‘,‘CLERK‘,7788,TO_DATE(‘1987-5-23‘,‘YYYY-MM-DD‘),1100,NULL,20);
INSERT INTO emp_RR VALUES(7900,‘JAMES‘,‘CLERK‘,7698,TO_DATE(‘1981-12-3‘,‘YYYY-MM-DD‘),950,NULL,30);
INSERT INTO emp_RR VALUES(7902,‘FORD‘,‘ANALYST‘,7566,TO_DATE(‘1981-12-3‘,‘YYYY-MM-DD‘),3000,NULL,20);
INSERT INTO emp_RR VALUES(7934,‘MILLER‘,‘CLERK‘,7782,TO_DATE(‘1982-1-23‘,‘YYYY-MM-DD‘),1300,NULL,10);

SELECT * FROM emp_RR;

INSERT INTO dept_RR(DEPTNO,DNAME,LOC) VALUES(10,‘ACCOUNTING‘,‘NEW YORK‘);
INSERT INTO dept_RR VALUES(20,‘RESEARCH‘,‘DALLAS‘);
INSERT INTO dept_RR VALUES(30,‘SALES‘,‘CHICAGO‘);
INSERT INTO dept_RR VALUES(40,‘OPERATIONS‘,‘BOSTON‘);

SELECT * FROM dept_RR;

**************************************************************************************************************************************************************************

时间: 2024-11-07 05:58:12

ORACLE---Unit01: 数据库原理 、 SQL(DDL、DML)的相关文章

1.SQL DDL DML

1.DDL数据定义语言(Data Definiton Language)用于create 和alter Schema. 2.DML数据操作语言(Data manipulation Language)用于操作和获取数据,insertion,update,deletion,,,,. sql书 sql tuning,anintroduction to database system http://www.mathcomp.uokufa.edu.iq/staff/kbs/file/2/An%20Intr

SQL: DDL, DML,表定义与含义

DDL: 数据定义语言:CREATE, ALTER, DROP DB组件:数据库.表.索引.视图.用户.存储过程.存储函数.触发器.事件调度器等 CREATE相关的常用命令: CREATE DATABASE CREATE EVENT CREATE FUNCTION CREATE FUNCTION UDF CREATE INDEX CREATE PROCEDURE CREATE SERVER CREATE TABLE CREATE TABLESPACE CREATE TRIGGER CREATE

数据存储——SQLite数据库存储——SQL语句——DML数据操作语言、内置函数聚合函数

一.连接查询之内连接 select   a.字段,b.字段   from   表1   a,表2   b    where   a.字段=b.字段  And ... 二.DML 数据操作语言 1.增  insert  into values 1-insert  into 表名  values (跟所有字段一一对应的值的列表) 2-insert  into 表名(字段列表)  values (跟字段列表一一对应的值的列表) 3-insert  into 表名  select  对应的字段列表  f

JAVA-Unit01: 数据库原理 、 SQL(DDL、DML)

Unit01: 数据库原理 . SQL(DDL.DML) SQL语句是不区分大小写的,但是行业里习惯将关键字与分关键字用大小写岔开以提高可读性. SELECT SYSDATE FROM dual DDL语句 数据定义语言 用于操作数据库对象 数据库对象有:表,视图,索引,序列 创建表: CREATE TABLE employee( id NUMBER(4), name VARCHAR2(20), gender CHAR(1), birth DATE, salary NUMBER(6,2), jo

Oracle数据库的sql语句性能优化

在应用系统开发初期,由于开发数据库数据比较少,对于查询sql语句,复杂试图的编写等体会不出sql语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要问题之一.系统优化中一个很重要的方面就是sql语句的优化.对于海量数据,劣质sql语句和优质sql语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就行,而是要写出高质量的sql语句,提高系统的可用性. Oracle的sql调优第一个复杂的主题,甚至需要长

Oracle数据库常用Sql语句大全

一,数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, --) VALUES ( 值1, 值2, --); INSERT INTO 表名(字段名1, 字段名2, --)  SELECT (字段名1, 字段名2, --) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: 'GOOD DAY' 如果字段值里包含单引号' 需要进行字符串转换, 我们把它替换成两个单引号''. 字符串类型的字段值超过

Oracle中的DDL,DML,DCL总结

转自http://blog.csdn.net/w183705952/article/details/7354974 DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据.    DML包括:  SELECT:用于检索数据:        INSERT:用于增加数据到数据库:        UPDATE:用于从数据库中修改现存的数据         DELETE:用于从数据库中删除数据. DDL(Data Definition Language,数据定

DDL, DML不是所有SQL都是可以自动回滚的

因为DDL没有事务性,所以DDL不能回滚. 要实现自动回滚.(begin,commit,rollback),则SQL语句中只能包括DML. 这样,自动化发布就会受限规范格式. 故而,一刀切的办法是,假定所有SQL不支持事务,自已定义好ROLLBACK的SQL脚本,在出错时能用代码回滚, 而不是依赖于数据库本身的功能. ======================== DDL和DML DDL (Data Definition Language 数据定义语言) create table 创建表 al

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语句与事务管理,课

SQL中的四种语言DDL,DML,DCL,TCL

1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema. DDL是SQL语言的四大功能之一.用于定义数据库的三级结构,包括外模式.概念模式.内模式及其相互之间的映像,定义数据的完整性.安全控制等约束DDL不需要commit.CREATEALTERDROPTRUNCATECOMMENTRENAME 2.DML(Data Manipulation Lang