DDL(Data Definition Language,数据定义语言):
用于描述数据库中要存储的现实世界实体的语言。
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等,如:
create table/view/index/syn/cluster
DDL操作是隐性提交的!不能rollback 。
常见DDL操作:
show databases; 显示所有数据库
use 数据库名; 使用该数据库
show create database 数据库名; 显示创建该数据库的SQL语句
create database 数据库名; 创建数据库
create database 数据库名 character set utf8; 创建指定字符编码的数据库
drop databse 数据库名; 删除数据库
create table 表名(id int ,name char(10),age int ); 创建表
show tables; 显示所有表
show create table 表名; 显示创建该表的SQL语句
alter table 表名 add id int ; 表中新增列
alter table 表名 modify id double; 修改表中列的属性
alter table 表名 change id id2 int; 修改表中列的名字和属性
alter table 表名 drop id; 删除表中的列
rename table 表名 to 新表名; 修改表格的名字
alter table 表名 character set utf8; 修改表的字符编码格式
DML( Data Manipulation Language,数据操纵语言):
使用户能够查询数据库以及操作已有数据库中的数据的计算机语言。
数据操纵语言DML主要有三种形式:
插入:insert
更新:update
删除:delete
常见DML操作:
insert into 表名 (字段1,字段2,字段3) values (值1,值2,值3) 新增值到表中
update 表名 set name = 'xx' where id =3; 更新表中数据
delete from 表名 where id = 2; 删除表中的数据
DQL(Data Query Language SELECT,数据查询语言):
主要用来查看表中的数据,也是平时使用最多的操作。
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:
select <字段名表> from <表或视图名> where <查询条件>
常见DQL操作:
select * from 表名 where id =3; 查询表中数据
select * from 表名 order by id desc | asc; 排序查询
select * from 表名 group by 字段; 分组查询
select * from 表名 where name like '%aa%'; 模糊查询
select * from 表名 limit (2,5); 分页查询
select * from 表名 where age between 20 and 30; 范围查询
select * from 表名 where id in (1,3,5); 部分查询
DCL(Data Control Language,数据控制语言):
用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果。如:
grant:授权;
revoke:取消权限;
常见DCL操作:
给用户jerry授予对test_db数据库的增删改查权限,允许该用户从IP为'192.168.0.10'的网络登录:
GRANT INSERT,SELECT,UPDATE,DELETE ON test_db.* TO 'jerry'@'192.168.0.10' IDENTIFIED BY 'password' WITH GRANT OPTION;或
CREATE USER 'jerry'@'192.168.0.10' IDENTIFIED BY 'password';
GRANT INSERT,SELECT,UPDATE,DELETE ON test_db.* TO 'jerry'@'192.168.0.10';
收回用户对test_db库的删除权限:
REVOKE DELETE ON test_db.* FROM 'jerry'@'192.168.0.10';
查询给'jerry'@'192.168.0.10'所授予的所有权限:
SHOW GRANTS FOR 'jerry'@'192.168.0.10';
TCL(Transaction Control Language,事物控制语言):
用来对事务进行管理。 如:
COMMIT : 保存已完成事务动作结果
SAVEPOINT : 保存事务相关数据和状态用以可能的回滚操作
ROLLBACK : 恢复事务相关数据至上一次COMMIT操作之后
SET TRANSACTION : 设置事务选项
DML语句对表数据进行操作的时候都会加上行级锁,确认完成后,必须加上事物处理结束的命令COMMIT才能正式生效,否则改变不一定写入数据库里。如果想撤回这些操作, 可以用命令 ROLLBACK 复原。
注意:
在运行INSERT,DELETE和UPDATE语句前最好估算一下可能操作的记录范围,应该把它限定在较小范围内,例如一万条记录,否则ORACLE处理这个事物用到很大的回退段。程序响应慢甚至失去响应。如果记录数上十万以上这些操作。可以把这些SQL语句分段分次完成。其间加上COMMIT确认事物处理。
数据的提交:
在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。提交数据有三种类型:显式提交、隐式提交及自动提交。
1、显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:
SQL>COMMIT;
2、隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
3、自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:
SQL>SET AUTOCOMMIT ON;