一.数据控制语句(DML)部分 (1)INSERT(往数据表里插入记录的语句) INSERT INTO 表名(字段名1,字段名2, ……)values(值1,值2, ……); INSERT INTO 表名(字段名1,字段名2, ……) SELECT(字段名1,字段名2, ……)FROM另外的表名; 字符串类型的字段值必须用单引号括起来,例如: ‘GOOD DAY’。如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号’’。字符串类型的字段值超过定义的长度会出错,最好在插入前进行长度校验,日期字段的字段值可以用当前数据库的系统时间SYSDATE,精确到秒。或者用字符串转换成日期型函数: ### ORACLE 常用的SQL语法和数据对象 #### 数据控制语句(DML) **数据控制语言(Data Manipulation Language, DML)**主要包括用于管理数据的语句,如`INSERT`、`UPDATE`、`DELETE`等。下面我们将详细介绍这几个语句及其用法。 ##### INSERT 语句 **功能:** 插入数据到表中。 1. **基本语法:** ```sql INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); ``` - **例子:** ```sql INSERT INTO employees (emp_id, emp_name) VALUES (1, '张三'); ``` 2. **插入多行数据:** ```sql INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...; ``` - **例子:** ```sql INSERT INTO employees (emp_id, emp_name) VALUES (1, '张三'), (2, '李四'); ``` 3. **从另一表中选择数据插入:** ```sql INSERT INTO 目标表 (字段名1, 字段名2, ...) SELECT 字段名1, 字段名2, ... FROM 源表 WHERE 条件; ``` - **例子:** ```sql INSERT INTO new_employees (emp_id, emp_name) SELECT emp_id, emp_name FROM employees WHERE dept_id = 10; ``` 4. **字符串值的特殊处理:** - 字符串类型的字段值必须用单引号括起来,例如 `'GOOD DAY'`。 - 如果字段值中包含单引号 `’`,需要将其替换成两个单引号 `’’`。 - 字符串类型的字段值超过定义的长度会出错,最好在插入前进行长度校验。 - 日期字段的字段值可以使用当前数据库的系统时间 `SYSDATE` 或者用字符串转换成日期型函数 `TO_DATE()`。 5. **处理较长的字符串:** - 如果需要插入的字符串长度超过4000个单字节,则应考虑使用CLOB类型,并借助Oracle内置的`DBMS_LOB`程序包进行处理。 6. **自增序列的使用:** - 首先创建一个序列: ```sql CREATE SEQUENCE 序列名 INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; ``` - 在INSERT语句中使用序列: ```sql INSERT INTO 表名 (字段名1, 字段名2) VALUES (序列名.NEXTVAL, '值2'); ``` 7. **注意事项:** - SQL语句执行后会对表加行级锁,需通过`COMMIT`命令确认更改已写入数据库。使用`ROLLBACK`命令可以撤销更改。 - 在执行大量数据的插入、删除或更新操作前,最好限制操作的记录范围,避免占用过多的回滚段资源。 ##### DELETE 语句 **功能:** 删除表中的记录。 1. **基本语法:** ```sql DELETE FROM 表名 WHERE 条件; ``` - **例子:** ```sql DELETE FROM employees WHERE emp_id = 1; ``` 2. **注意事项:** - 删除记录并不会立即释放所占用的数据块空间,仅标记为未使用状态。 - 若要彻底删除表中的所有记录并释放空间,可使用`TRUNCATE`命令。 ```sql TRUNCATE TABLE 表名; ``` ##### UPDATE 语句 **功能:** 更新表中的记录。 1. **基本语法:** ```sql UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... WHERE 条件; ``` - **例子:** ```sql UPDATE employees SET emp_name = '李四' WHERE emp_id = 1; ``` 2. **注意事项:** - 修改后的值若未指定,默认会被清空为`NULL`。 - 需确保修改后的值不会超出字段的长度限制。 - 修改操作同样需要通过`COMMIT`命令确认更改。 #### 数据定义语句(DDL) **数据定义语言(Data Definition Language, DDL)**主要用于定义和管理数据库对象,如表、索引、视图等。下面将介绍几个常用的DDL语句。 ##### CREATE 语句 **功能:** 创建新的数据库对象。 1. **创建表:** - **基本语法:** ```sql CREATE TABLE 表名 ( 字段名1 类型 [约束], 字段名2 类型 [约束], ... ); ``` - **示例:** ```sql CREATE TABLE employees ( emp_id NUMBER(6) PRIMARY KEY, emp_name VARCHAR2(50) NOT NULL, hire_date DATE DEFAULT SYSDATE ); ``` 2. **字段类型:** - `CHAR`:固定长度字符串。 - `VARCHAR2`:可变长度字符串。 - `NUMBER(M, N)`:数字类型,M表示位数总长度,N表示小数位数。 - `DATE`:日期类型。 3. **创建索引、视图等其他对象:** - **索引:** ```sql CREATE INDEX idx_name ON 表名 (字段名); ``` - **视图:** ```sql CREATE VIEW view_name AS SELECT 字段名1, 字段名2, ... FROM 表名 WHERE 条件; ``` ##### ALTER 语句 **功能:** 修改现有数据库对象。 1. **修改表名:** ```sql ALTER TABLE 表名1 RENAME TO 表名2; ``` 2. **添加字段:** ```sql ALTER TABLE 表名 ADD (字段名 类型); ``` 3. **修改字段:** ```sql ALTER TABLE 表名 MODIFY (字段名 新类型); ``` 4. **添加约束:** ```sql ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名); ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名); ``` 5. **调整表缓存设置:** ```sql ALTER TABLE 表名 CACHE; ALTER TABLE 表名 NOCACHE; ``` ##### DROP 语句 **功能:** 删除数据库对象。 ```sql DROP TABLE 表名 CASCADE CONSTRAINTS; ``` ##### TRUNCATE 语句 **功能:** 清空表中的所有记录,但保留表结构。 ```sql TRUNCATE TABLE 表名; ``` #### 查询语句(SELECT) **功能:** 从表中检索数据。 1. **基本语法:** ```sql SELECT 字段名1, 字段名2, ... FROM 表名 WHERE 条件 ORDER BY 字段名; ``` 2. **示例:** ```sql SELECT emp_name, hire_date FROM employees WHERE dept_id = 10 ORDER BY hire_date DESC; ``` 通过以上的详细介绍,我们可以看到Oracle中常用的SQL语法涵盖了数据的插入、更新、删除以及数据库对象的创建、修改和删除等多个方面。掌握这些基本操作对于管理和维护Oracle数据库至关重要。
- 粉丝: 3
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (175601006)51单片机交通信号灯系统设计
- Starter SINAMICS S120驱动第三方直线永磁同步电机系列视频-调试演示.mp4
- (174755032)抽烟、烟雾检测voc数据集
- 基于滑膜控制的差动制动防侧翻稳定性控制,上层通过滑膜控制产生期望的横摆力矩,下层根据对应的paper实现对应的制动力矩分配,实现车辆的防侧翻稳定性控制,通过通过carsim和simulink联合仿真
- 伺服系统基于陷波滤波器双惯量伺服系统机械谐振抑制matlab Simulink仿真 1.模型简介 模型为基于陷波滤波器的双惯量伺服系统机械谐振抑制仿真,采用Matlab R2018a Simul
- (175989002)DDR4 JESD79-4C.pdf
- lanchaoHunanHoutaiQiantai
- (177377030)Python 爬虫.zip
- (177537818)python爬虫基础知识及爬虫实例.zip
- 自动驾驶横纵向耦合控制-复现Apollo横纵向控制 基于动力学误差模型,使用mpc算法,一个控制器同时控制横向和纵向,实现横纵向耦合控制 matlab与simulink联合仿真,纵向控制已经做好油门刹