一、SQL语句概述
(1)SQL全程是“结构化查询语言(Structured Query Language)”。
SQL是大多数主流数据库系统采用的标准查询语言。
(2)SQL语句的优势:语言结构简单、功能强大、简单易学。
(3)在进行SQL开发是为了更容易的访问关系数据库,所以SQL能够执行下面几种操作:
①从数据库中查询数据
②向数据库中插入数据
③从数据库中删除数据
④创建和操作数据库对象(如用户、索引、触发器等)
⑤控制对数据库的访问
⑥更新数据
(4)注意:SQL不是程序设计语言。它只是提供输入、检索、更改、删除和显示存储在数据库中的数据的语句。
(5)如果以后在使用SQL语句出现错误信息,可以进入http://ora-code.com网站查询信息。就是如果报错信息ORA-XXXXXX,其中XXXXXX是一串数字,可能三位可能五位,所以一旦出现这种错误信息,可以登录上面网站查询。
二、SQL分类(重点)
(1)数据定义语言(DDL),如:create,drop,rename…(一旦执行成功,基本不可能恢复原样,没有回旋余地,比如现有A表,将其改名,如果执行成功,无法改变,无法恢复原样)
(2)数据操作语言(DML),如:insert,update,delete…(数据可以回滚)
比如现在登录数据库用户是sys,用如下命令查询t表,其内没有数据信息,如下图:
现在给t表添加数据:
然后查询t表,发现里面有刚才添加的数据:
现在重新开一个cmd窗口,用新用户lisi登录,查询t表,发现其内没有刚才添加的数据,如下图:
在原sys登录的cmd窗口内继续写commit命令,如下图:
然后再去lisi登录的cmd窗口查询t表,发现有新添加的数据,如下图:
【总结】如果用DML操作数据后,必须commit,才能保证真正存到数据库内。
(3)数据控制语言(DCL),如:grant,Revoke…
(4)查询语言,如:select…
(5)事务控制语言(Transaction Control,TC),如:commit,rollback,savepoint…
三、SQL*PLUS概述
1.SQL*PLUS定义,它是一个由ORACLE开发的、可以执行SQL语句的环境,它也是提供了一种连接数据库的直接执行方式。
2.SQL*PLUS特征
它是一个客户端应用工具。如命令行SQL*PLUS、Oracle中的SQL*PLUS
或iSQL*PLUS他们都可以与数据库管理系统直接通信。
3.如果出现下面界面,就是SQL*PLUS环境,如下图:
四、显示表结构语法格式:desc表名
五、查看缓存中SQL语句的语法格式:l(或者list)
例如,如果先输入select*fromall_users;后回车,会看到所有用户,然后这条命令被存入SQL*PLUS缓存,如果这时候输入l,会出现上一条命令信息,如下图:
【注意】将来SQL语句会写很长,所以需要换行写,如下图:
方法是输入完第一行后回车,接着输入第二行,如果输入分号则表示结束,这时候若用l查询上一条语句,也可查询到,如下图:
图中*表示定位在当前行。
六、将缓存中的SQL语句重新运行一次,格式为:/(或者r)
这其实是一个快捷操作。如果写/后回车,则直接运行缓存中的SQL语句;如果写r回车,则先列出缓存中的SQL语句再执行该语句。
七、n命令的使用
如果写的SQL语句出错,可以是使用“n”,这个“n”的意思是设置sql*plus中当前行,“n”就是一个具体的值(如:1,2,3…)。
语法格式:n
例如,写个1回车,则定位到缓存SQL命令中的第1行,写个2回车,则定位到缓存SQL中的第2行
八、删除命令
如果要删除某行,可以使用del命令。
语法格式del n
输入del 2后将缓存中第2行代码删除
九、添加命令
如果现在某一行后面添加一些sql语句,可以使用a(append)。
语法格式:a
例如:先用list查看缓存区命令,然后用a添加命令
发现两个命令靠一起了,即student和where连一起了,所以在使用a命令往缓存区添加命令时候敲两个回车,其中第一个回车是a命令必须带的回车,第二个回车是作为新代码的开头被添加到缓存区,如下图:
问:如果缓存区有3行SQL命令,需要在第二行添加命令,如何操作?
答:先list命令将缓存区命令列举出来,然后用n命令,即输入2定位到第2行,然后用a命令在该行后面添加新命令,然后再用list查看一下新命令,最后运行。全过程如下图:
十、修改命令
如果要修改sql缓存中的语句,可以使用c(change)命令。
语法格式:c /被修改内容/新内容
(c后面有两个空格)
例如,可用c命令做到部分删除的效果,如下图:
先list出缓存区所有命令,然后用n命令定位到第2行,然后用c命令将’%s%’之后命令删除,只要c /or 1=1/即可,也就是将需要删除的部分替换为空白,注意c后面两个回车。