1、SQL语言概述、分类
结构化查询语言(Structure Query Language,SQL)。
(1)DDL,数据定义语言
CREATE、ALTER、DROP
(2)DCL,数据控制语言
GRANT、REVOKE
(3)DML,数据操纵语言
SELECT、INSERT、DELETE、UPDATE
SQL语言使用实例
(1)CREATE TABLE abc(a varchar2(10),b varchar2(10));
创建表abc,包含a、b两个字段
(2)ALTER TABLE abc ADD c number;
修改表abc结构,追加一个number型字段c
(3)ALTER TABLE abc DROP COLUMN c;
修改表abc结构,删除字段c。
(4)DROP TABLE abc;
删除表abc
(5)GRANT SELECT ON dept TO TT;
在scott用户连接下,给tt用户授权对dept表查询。
(6)REVOKE SELECT ON dept FROM tt;
撤销tt用户在dept表的SELECT权限
(7)select * from dept;
查询表dept中的所有数据
(8)INSERT INTO abc(a,b) VALUES('abc2','xy2');
向表abc中的a字段和b字段分别插入数据abc,xy。向表记录中的所有字段加入数据可以省略表名后括号内字段名。
(9)UPDATE abc SET b='ttt';
将表abc中全部b字段值改为ttt。
(10) UPDATE abc SET b = 'yyy' WHERE a = 'abc';
找到表abc中a字段值为abc的记录,将去b字段值改为yyy。
(11) DELETE FROM abc WHERE a='abc';
删除表abc中a字段值为abc的记录。
(12)DELETE FROM abc;
将表abc中数据全部删除。
2、常用系统函数
1、字符类型
(1)length:
(a)SELECT LENGTH('ABCDEF') FROM dual;
查询字符串ABCDEF的字符数。
(b)SELECT LENGTH('ABC好EF') FROM dual;
查询字符串ABC好EF的字符数。
(c)SELECT LENGTHB('ABC好EF') FROM dual;
查询字符串ABC好EF的字节数。
(d)SELECT LENGTHB(' ABC好EF') FROM dual;
查询字符串 ABC好EF的字节数。
(2)trim
(a)SELECT LTRIM(' ABC好EF') 左去空格 FROM dual;
去掉括号内字符串左边的空格。
(b)SELECT RTRIM(' ABC好EF ') 右去空格 FROM dual;
去掉括号内字符串右边的空格。
(c)SELECT TRIM(' ABC好EF ') 左右去空格 FROM dual;
去掉括号内左右的空格。
(3)substr:
(a)SELECT SUBSTR('abcdefg',2,3) FROM dual;
截取子串,从第2位开始,往后取3个字符。
(b)SELECT SUBSTR('abcdefg',1,3) FROM dual;
左取3个字符。
(c)SELECT SUBSTR('abcdefg',LENGTH('abcdef')-3+1,3) FROM dual;
右取3个字符。
2、日期类型
(1)SELECT sysdate FROM dual;
查询系统当前时间。
(2)ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy mondd hh:mi:ss';
SELECT CURRENT_DATE FROM dual;
设置当前会话日期格式,查询当前系统日期时间,按设置格式输出。
(3)SELECT NEXT_DAY(sysdate,'星期五') FROM dual;
当前时间之后的星期五,日期。
3、转换类型
(1)SELECT TO_CHAR(sysdate,'yyyy-mm-dd hh:mi:ss') FROM dual;
日期类型转换为字符类型。
(2)SELECT TO_NUMBER('333') FROM dual;
字符型转化为数字型,待转化字符需为数字字符。
4、聚集函数类型
(1)SELECT MAX(PRICE) FROM books;
查询价格最大值。
(2)SELECT MIN(PRICE) FROM books;
查询价格最小值。
(3)SELECT SUM(PRICE) FROM books;
查询价格总和。
(4)SELECT AVG(PRICE) FROM books;
查询价格的平均值。
(5)SELECT COUNT(PRICE) FROM books;
查询PRICE字段的行数。
(6)SELECT COUNT(*) FROM books;
查询books表中记录的行数。
5、其他类型
(1)SELECT user FROM dual;
查询当前用户。
(2)SELECT SUM(DECODE(SEX,'男',1,0)) 男人数,SUM(DECODE(SEX,'女',1,0)) 女人数 FROM e;
分别统计表e中的男性人数和女性人数。
(3)SELECT A1,NVL(A2,'空值') FROM aa;
设定A2列未输入值项的缺省值。
(4)SELECT * FROM aa ORDER BY A1 ASC;
按A1字段升序排列查询结果。
(5)SELECT * FROM aa ORDER BY A1 DESC;
按A1字段降序排列查询结果。
(6)SELECT DISTINCT A1 FROM aa;
查询显示A1字段的唯一值。