SQL分类:
DDL—数据定义语言:定义对数据库对象的操作。
CREATE、ALTER、DROP、RENAME、TRUNCATE等。
DML—数据操纵语言:定义修改表的内容的操作。
SELECT查询语句:检索数据库表中存储的行。INSERT、DELETE、UPDATE等
DCL—数据控制语言:定义修改数据库结构的操作权限。GRANT、REVOKE等。
TCL—事务控制语言:用于将对行所做的修改永久性地存储到表中,或取消这些修改操作。COMMIT、ROLLBACK、SAVEPOINT等。
一 ORACLE数据类型
1 字符串类型:用单引号引起来的字符序列。
CHAR(length):固定长度字符串,不足自动以空格补齐长度,最多2000个字节。
如:CHAR(10) 使用length(列) 获取的是定义的长度(length)
VARCHAR2(length):可变长度字符串,最多4000个字节。 【常用的字符串类型】
如:VARCHAR2(10) 使用length(列) 获取的是实际数据的长度
举例 title char(10) length(title)永远都是10
content varchar2(10) 插入数据 'test' length(content)是实际数据的长度 4
2 数值类型:
NUMBER[(precision, scale)]:数值型,可以存储整数、浮点数。最高精度38位。如果没有指定最大位数和精度,就存储38位精度的数字。
NUMBER(24) 最多24位 整数类型;
NUMBER(5,3) 总和最多5位,其中小数最大是3位 整数位最大 5-3
NUMBER 最大默认38位 整数和小数位总和不能超过38位
3 日期类型
DATE:存储日期和时间,精确到秒。时间值 【重要的类型】
默认存放格式:“DD-MON-YYYY”
默认显示格式:“DD-MON-YY
orace转换日期格式 yyyy-MM-dd hh:mi:ss
select sysdate from dual --输出的是date类型 (当前系统时间)
select to_char(sysdate,'yyyy-MM-dd hh24:mi:ss') from dual --转换成了char类型 (24小时制)TIMESTAMP[(seconds_precision)]:存储日期、时间和时区信息,带小数位的秒。时间戳
如:TIMESTAMP(3) 秒后面小数点为3位。(最多可9位)
大对象(Large objects)类型:最大存储128TB
CLOB:Character LOB,用于存储字符数据。
BLOB:Binary LOB,用于存储二进制数据。如图形、视频剪辑和声音文件。
BFILE:用于存储二进制文件指针。
二: sql语法注意点
关键字不区分大小写 但是【字符串区分大小写】。
表名和列名不区分大小写。
语句以分号;结束
单行注释使用-- 多行注释 /**/
三: 解锁scott账号
conn /as sysdba --以dba的账号登录
alter user scott account unlock --解锁scott账号
conn scott/tiger --密码是tiger
四:显示表结构
dos命令下 可以使用 以下命令查看表结构
desc 表名称 可以列出表结构
select * from tab; 查询当前用户下的所有的表 ,视图,同义词五:常用的sql语句
select用于crud【create read update delete】 查询 是用于查询和筛选数据 【重中之重】
select语法结构
SELECT 【列名, 列名2…】| * FROM 表名 where 条件 ;【在oracle中字符串 使用''而不是""】
查看当前方案中的表和其它数据库对象:
SELECT * FROM tab;
查询指定表的所有列数据:
SELECT * FROM 表名;
查询指定表的指定列数据:
SELECT 列名, 列名2… FROM 表名;
可以在SELECT语句中使用算术运算符:+、-、*、/
为查询的列取别名:
SELECT 列名 [AS] 别名, … FROM 表名;
使用||做连接 *
举例: select '钱:'||'$'||sal as sal from emp使用DISTINCT消除重复内容
举例:select distinct sal as sal from emp条件过滤(where)语句:
SELECT [DISTINCT] * | [列名 [别名],…] FROM 表名 WHERE 条件;
WHERE子句中的条件表达式:
可以包括运算符(算术、比较、逻辑)
可以使用()
可以使用常量、列、函数。
六: oracle常用的运算符
算术运算符: +、-、*、/
连接操作符:将多个字符串或数据值合并成一个字符串 ||
比较运算符: =、!=(或<>)、<、>、<=、>=
ANY(值1,值2,值3…) 与列表中的任意一个值进行比较
ALL(值1,值2,值3…) 与列表中的所有值进行比较
in(值1,值2,值3) 列的值包含在所给的值中
举例:
--any表示等于其中的任意一个值 一般常用是使用in
select * from emp where job=any('SALESMAN','MANAGER')select * from emp where job in('SALESMAN','MANAGER')
--all 表示和所有值进行 比较 一般用于等于
select * from emp where job!=all('SALESMAN','MANAGER')
select * from emp where job not in('SALESMAN','MANAGER')逻辑运算符:
AND、OR、NOT
举例:
--等价于java &&
select * from emp where sal>2000 and job='MANAGER'
--等价于java ||
select * from emp where sal>2000 or job='MANAGER'
--等价于java !
select * from emp where not sal>2000
SQL 运算符的优先级从高到低的顺序是: 算术 、连接、比较、逻辑(NOT、AND、OR)
模糊匹配 like
_代表一个字母 %代表0个或者多个字母
select * from emp where job like '_A%';SQL操作符可以对字符串、值列表、值范围以及空值进行模式匹配,来限定查询返回的行:
IN (值1,值2…):匹配值列表
LIKE ‘模式字符串’:匹配指定的字符串模式。
下划线字符(_)匹配一个字符。
百分号字符(%)匹配任意个字符。可以使用在任何数据类型中
BETWEEN 值1 AND 值2:匹配值范围。包括边界可用于数值类型和日期时间类型。
IS NULL匹配空值 理解空值(null value):未知的值。并不是一个空字符串。
IS NAN:匹配NAN这个特殊值。NAN表示“非数字”(oracle10g)
注意:这些SQL操作符都可以和NOT组合使用:
NOT IN(…)、NOT LIKE …、NOT BETWEENT. AND .、IS NOT NULL