接着上篇说起,数据库操作语句,看了网上说的,有很多种说法,我现在总结的为DML DDL DCL TCL.
DML (Data Manipulation Language)数据操纵语言statements are used for managing data within schema objects.由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。DML分成交互型DML和嵌入型DML两类。依据语言的级别,DML又可分成过程性DML和非过程性DML两种。需要commit.
SELECT : Select * from tablename;
INSERT : Insert into tablename(column1,column2,...)values(value1,value2,...);
UPDATE : Update tablename set column1=?,... Where columnn=?;
DELETE : Delete * from tablename where column=?;
MERGE : 上篇阐述过
CALL : Call函数调用存储过程
mysql> CREATE PROCEDURE myProc(aNumber int) //创建mysql存储过程
-> Begin
-> IF (isodd(aNumber)) THEN
-> SELECT ' is odd';
-> ELSE
-> SELECT ' is even';
-> END IF;
-> END$$
mysql> delimiter ;
mysql> call myProc(2); //call 调用存储过程
EXPLAIN PLAN : 查看 SQL 执行计划 , 与其相同的还有 autotrace, 区别在于前者只是优化器通过读取数据字典的统计信息做出 ' 最佳 ' 访问路径判断,并没有真正去执行语句;后者是实际去执行了 SQL 语句,同时把访问记录数、执行计划、统计信息等打印出来。
Explain plan for+sql语句
LOCK TABLE : Lock table tablename; 此语句用于防止其它并发事务访问或修改表。
DDL (Data Definition Language)数据库定义语言statements are used to define the database structure or schema.DDL是SQL语言的四大功能之一。用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束.DDL不需要commit.
CREATE :
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
列名后可添加相关限制条件
ALTER :
添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….);
修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);
删除字段的语法:alter table tablename drop (column);
添加、修改、删除多列的话,用逗号隔开。详细的可参考:http://blog.csdn.net/piaoxuan1987/article/details/12277407
DROP :
Drop table tablename;删除表
Drop atabase databasename;删除数据库
有关drop比较多,每个数据库操作有些区别,这里放入Oracle的删除表和各个数据库删除索引的区别
http://blog.csdn.net/holly2008/article/details/22902597 Oracle删除表
http://www.w3school.com.cn/sql/sql_drop.asp 各个数据库删除索引
TRUNCATE : Truncate table tablename;删除表中数据而保留表
COMMENT :
Comment 用来注释表和列如同写代码注释一样,如alter table tablename add column comment‘新增列’;(MySQL操作)
comment on TABLE table_name IS '备注内容';(Oracle操作)
comment on column table_name.columnname IS '备注内容';(Oracle操作)
RENAME : Rename table oldtablename to newtablename; 重命名表
DCL(Data Control Language)数据库控制语言 授权,角色控制等
GRANT 授权,REVOKE取消授权
GRANT 授权
mysql 赋给用户远程权限 grant all privileges on
语法: grant all privileges on 库名.表名to '用户名'@'IP地址' identified by '密码' with grant option; flush privileges;
库名:要远程访问的数据库名称,所有的数据库使用“*”
表名:要远程访问的数据库下的表的名称,所有的表使用“*”
用户名:要赋给远程访问权限的用户名称
IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%”
密码:要赋给远程访问权限的用户对应使用的密码
bindaddress : 设定哪些ip地址被配置,使得mysql服务器只回应哪些ip地址的请求),最好注释掉该参数或设置成为127.0.0.1以外的值
skip-networking : 如果设置了该参数项,将导致所有TCP/IP端口没有被监听,也就是说出了本机,其他客户端都无法用网络连接到本mysql服务器,所以应该注释掉该参数
Oracle授权:
1、grant select,insert,update on tablename to public;给所有用户授予查询、插入、更新tablename表的权限
2、revoke select,insert,update on tablename from public;//收回所有用户查询、插入、更新tablename表的权限
3、grant select,insert,update on tablename,viewname,sequencename,indexname to public;
4、grant dba to username;
5、revoke dba from username;//对用户username回收dba权限
6、grant connect to username;
7、revoke connect to username;//对用户username回收connect权限
8、3、查看指定用户有哪些系统权限
select * from dba_role_privs where grantee=upper('username');
9、4、查看指定用户有哪些对象权限
select * from dba_tab_privs where grantee=upper('username');
TCL (Transaction Control Language)事务控制语言
SAVEPOINT 设置保存点
ROLLBACK 回滚
SET TRANSACTIO
Savepoint&rollback&commit
Start transaction;
Insert into tablename(column,...) values (value,....);
Savepoint s1;
Commit&rollback to s1; 这是个简单的事物开始提交回滚,真正做的时候当然不会这样做,那样就没意义了.
有关数据库操作语句就说到这里......