SQL分为下列语言类别
  1.数据定义语言(DDL)
  Create、Alter、Drop

  2.数据操纵语言(DML)
  Insert、Select、Delete、Update

  3.事务控制语言(TCL)
  Commit、Savepoint、Rollback

  4.数据控制语言(DCL)
  Grant、Revoke

数据定义语言(DDL)

数据定义语言用于改变数据库结构,包括创建、更改和删除数据库对象
用于操纵表结构的数据定义语言命令有:
  1.CREATE TABLE
  2.ALTER TABLE
  3.TRUNCATE TABLE
  4.DROP TABLE

创建表

--建立一个微博的web程序,从而创建一个微博的用户表

--用户表信息 帐号,密码,昵称,性别

Create table  blog_user(
User_name varchar2(20) not null, --用户名
User_pwd varchar(20) not null, --用户密码
User_age int default 15, --年龄
User_sex char(2) default '男', --性别
User_alias varchar(1) --昵称
)
Create table blog_article(
Art_id int not null,
Art_author varchar2(20) not null,
Art_content varchar2(100),
Art_time date
)

给表中添加主键或外键

1、创建表时同时创建主键约束

(1)无命名:

create table student (studentId int primary key not null, studentName varchar(8), age int);

(2)有命名:

create table student(studentId int, studentName varchar(8), age int, constraint yy primary key(studendId));

2、删除表中已有的主键约束
(1)无命名可用

select * from user_cons_columns;

查找表中主键名称得student表中的主键名为SYS_C002715

alter table student drop constraint SYS_C002715;

(2)有命名

alter table students drop constraint yy;

3、向表中添加主键约束

alter table student add constraint pk_student primary key(studentid);

4、向表中添加外键约束

alter table table_A add constraint FK_name foreign key(id) references table_B(id);

修改表

--修改列的长度

alter table blog_user Modify user_alias varchar(10) 

--添加一列

 Alter table blog_user Add birth date   --增加一个新列

--删除一列

alter table 表名 drop column 列名;

--设置用户名为主键:add constraint 约束名  约束类型

Alter table blog_user Add constraint Pk_user_name primary Key(user_name)

--检查约束,年龄不能为负数

Alter table blog_user Add constraint ck_age check(User_age>0 and User_age<150)

--删除某个约束;

Alter table blog_user_age Drop constraint 约束名;

--添加一个外键

Alter table blog_article Add constraint fk_user_name_art_name foreign Key(Art_author) References blog_user(user_name)

--修改表列名

ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名

--修改表名

ALTER TABLE 表名 RENAME TO 新表名;

删除表

--普通删除(数据库回收站中还会有)
drop table 表名 --彻底删除表的命令如下:
drop table 表名 purge

数据操纵语言(DML)

数据操纵语言用于检索、插入和修改数据
数据操纵语言是最常见的SQL命令
数据操纵语言命令包括:
  SELECT
  INSERT
  UPDATE
  DELETE

伪列

  • Oracle 中伪列就像一个表列,但是它并没有存储在表中
  • 伪列可以从表中查询,但不能插入、更新和删除它们的值
  • 常用的伪列有ROWID和ROWNUM
  • ROWID 是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用 ROWID 伪列快速地定位表中的一行
  • ROWNUM 是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数

伪列的使用

Select rownum, rowid,tablename.* from tablename;

DML:数据操纵语言,数据的增删改查操做

Insert     delect     select     update

--创建一个表,数据来自另外一个表
Create table emp2 as select empon, ename,job,salfrom emp --Select: 查询
Select 列名 from表名,其他查询 [where 条件 group by 列名 having 子句 order by 列名] --查询整个blog_user表的所有信息
Select * from blog_user; --只查询名字和密码,昵称 这三列
Select user_name,user_pwd,user_alia from blog_user; --给列取名
Select user_name as uanem,user_pwd as upwd from blog_uesr -计算列:列是通过计算而来的(并不存在)
Select sa1,sa1*2 as 双倍工资 from emp; --双倍工资是通过计算来的 --去除重复数据:把内容完全一样的重复数据去除
Select distinct job from emp;

有条件的查询:where 条件

Select * from emp where job='SALESMAN' –所有的销售人员

--获取系统的日期格式
Select sysdate from dual; -- 22-10月-15 Select * from emp where hiredate <'1-6月-81'>;-受雇佣在81年6月22日

多个查询条件:and和or组合

--如何判断用户输入是正确的用户名和密码
Select * from blog_user where user_name='admin' and user_pwd='' 成绩在80到100分之间的所有记录
Select * from表名 where 列名 between 80 an 100; 成绩分别为80.90/100的记录,并按成绩的高低排序
Select * from 表名 where score in(80, 90, 100) score = 80 or score=90 or score=100;

模糊查询

Like 条件;
    % _   ('%'表示0个,1个或多个字符、'_'表示一个字符)表示通配符,代表任意的内容,代表一个任意内容

--找出所有姓陈的人
Select * from blog_user where user_name like '陈%'
--第三个字母为A的人
Select * from blog_user where user_name like '__A%' --查找年龄为20、25岁的数据
Select * from blog_user where user_age in(20, 25);

插入数据

--指定列名:
insert into 表名(列名1, 列名2, ……) values(值1, 值2, ……);
Insert into blog_user(user_name, user_pwd, user_sexy) values('old_2', '', default) --未指定列名:
insert into 表名 values(值, 值, ……); 有几列就需要几个值 --同时插入多条语句
Insert into blog_user(user_name, user_pwd) select ename, empno from emp --数据来自其他表,需要注意数据类型和个数

修改数据

Udpate 表名 set 列名=新值, 列名2=新值 …… where 条件
Update blog_user set user_sexy='女' where user_name='JONES';

--修改多列
Update blog_user set user_age=20, user_alias='老大' where user_name='KING'; --模糊匹配修改数据
Update blog_user set user_age = 20 where user_name like 'J%'

删除数据

--Delete 表名 where 条件

Delete blog_user where user_name = 'old_2'

--删除多行
Delete blog_user where user_age < 18;
Delete bolg_user where user_age is null; --删除所有age列为null的数据
Delete blog_user where user_age in not null; --删除非空的 Truncate table 表名; --效率比delete要高

事务控制语言(TCL)

事务是最小的工作单元,作为一个整体进行工作
保证事务的整体成功或失败,称为事务控制
用于事务控制的语句有:
  COMMIT - 提交并结束事务处理
  ROLLBACK -  撤销事务中已完成的工作
  SAVEPOINT – 标记事务中可以回滚的点

Commit:提交事务,保存。
Rollback:回滚事务,返回到事务开始之前的状态。
Savepoint:保存事务点(类似存档),事务可以回滚到这个位置点。

Delete blog_user where user_age < 22;  --删除所有小于22岁的用户
Savepoint del22; --保存这个事务,命名为del22
Delete blog_user; --删除所有数据
Rollback to savepoint del22; --返回所有事务,只返回上一个保存点之后的数据

数据控制语言(DCL)

数据控制语言为用户提供权限控制命令
用于权限控制的命令有:
  GRANT 授予权限
  REVOKE 撤销已授予的权限
GRANT 命令可用于为用户分配权限或角色
GRANT CONNECT TO MARTIN;  --CONNECT角色允许用户连接至数据库,并创建数据库对象
GRANT RESOURCE TO MARTIN;  --RESOURCE角色允许用户使用数据库中的存储空间
GRANT CREATE SEQUENCE TO MARTIN;  --此系统权限允许用户在当前模式中创建序列,此权限包含在CONNECT角色中
 
授予用户 MARTIN 操作TEST表对象的权限  
GRANT SELECT ON TEST TO MARTIN;  --允许用户查询 TEST 表的记录
GRANT UPDATE ON TEST TO MARTIN;  --允许用户更新 TEST 表中的记录
GRANT ALL ON TEST TO MARTIN;  --允许用户插入、删除、更新和查询TEST 表中的记录
ALTER USER 命令可用于更改口令
ALTER USER MARTIN IDENTIFIED BY martinpass;  --修改 MARTIN 用户的密码
DROP USER 命令用于删除用户
DROP USER MARTIN CASCADE;  --删除 MARTIN 用户模式

撤销,收回权限

Revoke 权限名 [on 表名]  from 角色名;

Oracle学习笔记四 SQL命令(二):SQL操作语言类别的更多相关文章

  1. Oracle学习笔记--第3章 使用sql*plus工具

    使用sql*plus工具 1.sqlplus连接方式示例 sqlplus system/123[as sysdba]; 2.查看表结构命令;desc[ribe] e.g.      desc scot ...

  2. oracle学习笔记(十七) PL/SQL高级应用

    PL/SQL高级应用 动态SQL 在PL/SQL中,不能直接执行DDL(create,alter,drop),得使用动态SQL,当然,除了DDL,动态SQL也可以执行DML(select,insert ...

  3. oracle学习笔记3:基本的SQL语句

    oracle基本的SQL语句和SQLSERVER基本一样,在这里只简单列出与SQLSERVER不一样的地方 1.select * from orderinfo where address = 'abc ...

  4. Oracle学习笔记之五sp1,PL/SQL之BULK COLLECT

    Bulk Collect特性可以让我们在PL/SQL中能使用批查询,批查询在某些情况下能显著提高查询效率. BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQ ...

  5. Linq学习笔记四之linq to sql 的基本操作

    首先需要在项目中新增一个 linq  to sql 的服务 新增项,数据,LINQ TO sql 类的这个方法 第二步需要一个model类,用作映射 [Table] public class S_ZD ...

  6. oracle 学习笔记(四)

    1. SQL(高级查询) 1.1. 子查询 1.1.1. 子查询在WHERE子句中 在SELECT查询中,在WHERE查询条件中的限制条件不是一个确定的值,而是来自于另外一个查询的结果.为了给查询提供 ...

  7. Oracle学习笔记四

    一.PL/SQL编程 游标(光标Cursor) 为什么使用游标 在写java程序中有集合的概念,那么在pl/sq中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据. 语法: C ...

  8. Oracle学习笔记(四)

    六.约束 1.约束的作用 定义规则:什么数据可以输入,什么不可以 确保完整性:数据的精确性和可靠性 2.Oracle五个重要的约束: 非空约束.主键约束.外键约束.检查约束.唯一约束. (1)非空约束 ...

  9. WPF学习笔记四之命令

    1.概念 对于程序来说,命令就是一个个任务,例如保存,复制,剪切这些操作都可以理解为一个个命令.即当我们点击一个复杂按钮时,此时就相当于发出了一个复制的命令,即告诉文本框执行一个复杂选中内容的操作,然 ...

随机推荐

  1. .NET 基础 一步步 一幕幕[数组、集合、异常捕获]

    数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类 ...

  2. 使用google 语言 api 来实现整个网站的翻译

    ---恢复内容开始--- 使用google 语言 api 来实现整个网站的翻译,这时我们可以利用免费的google api来做处理来实现多语言的功能. 放在 HTML 文件中 <div id=& ...

  3. IOC的理解

    转载http://www.cnblogs.com/xdp-gacl/p/4249939.html 很不错的文章,虽说是java的,但是.net也通用,所以复制一分,拿来看看挺不错的. 1.1.IoC是 ...

  4. JavaScript高级程序设计--表单脚本

    1.提交表单 submit onsubmit   2.表单的change事件 input与textarea元素的change事件触发在,他们失去焦点且value值改变的时候 select的change ...

  5. Matlab 利用参数方程绘制空心球体

    基本原理: 实质为利用球面参数方程,利用网格化数据绘制 x=R*sin(theta)*cos(phi) y=R*sin(theta)*sin(phi) z=R*cos(theta) 绘制函数: fun ...

  6. 初识AngularJS 之 HelloWorld和数据绑定

    1.Hello World 我用的开发工具是   atom   ,大家有需要的话可以找我要安装包嘻嘻 第一步: 写入以下代码: <!DOCTYPE html> <html ng-ap ...

  7. CSS3 Notes: -webkit-box-reflect实现倒影

    平常我们要实现倒影的效果,一般的做法是使用多个DOM元素绝对定位+scale(负-1)或者rotate.这种方法的缺点是占据空间以及DOM元素过多. 在使用webkit内核的浏览器中(chrome,s ...

  8. 前端开发工具vue.js开发实践总结

    最近有很长时间没有更新博客了,换了公司,全部的心思都放在项目上了.通过这次项目的上线,让我感受最深的是前后端分离后,前端页面的模块化管理,以及前端页面的数据邦定.在接触vue.js之前,我之前端要用到 ...

  9. HTML5 学习总结(二)——HTML5新增属性与表单元素

    一.HTML5新增属性 1.1.contextmenu contextmenu的作用是指定右键菜单. <!DOCTYPE html> <html> <head> & ...

  10. jvm系列(三):java GC算法 垃圾收集器

    GC算法 垃圾收集器 概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计 ...