小型数据库:access、foxbase
中型数据库:mysql、sql server、informix
大型数据库:sybase、oracle、db2
如何选取适合的数据库:
项目的规模:负载量多大、用户多大;成本;安全性
DBA认证(数据库管理员)
sys用户是超级用户,具有最高权限,默认密码manager
system用户是管理操作员,没有created database权限,默认密码change_on_install
oracle常用SQL语法和数据对象
SQL 语句分类:按其功能分为5类,即数据查询语句、数据操纵语句、数据定义语句、事务控制语句和数据控制语句。
DML语言,比如update,delete,insert等修改表中数据的需要commit;
DDL语言,比如create,drop等改变表结构的,就不需要写commit(因为内部隐藏了commit);
1、数据控制语句(DML)部分
1)INSERT
2)DELETE对表进行删除
3) UPDATE
2、数据定义语句(DDL)部分
1)CREATE
2)ALTER改变系统参数
3)DROP
4)TRUNCATE
3、查询语句(SELECT)部分
4、oracle里常用的数据对象
1)索引(INDEX)
2)视图(VIEW)
3)同义词(SYNONMY)
4)数据库链接(DATABASE LINK)
5、权限管理(DCL)语句
1)GRANT 赋予权限
2)REVOKE 回收权限
6、事务控制语句
COMMIT:用于提交由DML语句操作的事务
ROLLBACK:用于回滚DML语句改变了的数据
my objects->Tables ->右键
查看、查询数据(查询出来,仅显示一部分)
SQL的查询语句
关键字大写其他小写以做区分
特定列的查询、where语句、在SQL语句中使用列的别名
创建别名时,在列名后使用AS关键字,之后紧跟别名,或者在列名后加空格,然后紧跟着别名(但是此时的列标题在显示时为别名的大写格式)。如果要保持别名的格式,可以使用双引号
推荐书写SQL语句的规范:
1) SQL语句的关键字要大写,对象名小写
2) 缩进对齐,这样便于阅读
3) 每个子句一行
单行函数
单行函数分为字符型单行函数、数字型单行函数和日期型单行函数
1)字符型单行函数
LOWER、UPPER、INITCAP(首字母大写)、CONCAT(连接两个字符串)、SUBSTR(从一个字符串中获取一个子串)、LENGTH(计算字符串中字符的个数)、INSTR、TRIM(在字符串中剪切一个字符)、REPLACE
2)数字型单行函数
ROUND(四舍五入保留指定位小数)、TRUNC(截断,不四舍五入)、MOD
3) 日期型单行函数
SYSDATE、MONTHS_BETWEEN(得到两个日期之间的月数)、ADD_MONTHS、NEXT_DAY、 LAST_DAY
空值和空值处理函数
NVL(expr1, expr2)如果expr1的值为空值,则返回expr2的值,否则返回expr1的值
NVL2(expr1, expr2, expr3)如果expr1值为空,返回expr3,若不为空,返回expr2
NULLIF(expr1,expr2)如果两者相等返回空值NULL,若不相等返回expr1(要求expr1不为空)
COALESCE(expr1,expr2...)返回第一个不为空的表达式的值
条件表达式
CASE、DECODE
分组函数(分组函数作用于一组数据,返回一个值(如员工工资最大值))分组函数会自动忽略空值
AVG(求均值)、SUM(求和)、MAX、MIN、COUNT(返回经计算得到的返回行数,包括空行和重复的行)、VM_concat(行转列)、GROUP BY、分组函数的嵌套使用、HAVING子句
NVL函数-滤空函数
使用多个列分组
所有包含于SELECT列表中,而未包含于组函数的列都必须包含于GROUP BY子句中
where 使得分组记录数大大降低,从而提高效率
a命令 追加 eg:a (两个或以上空格) desc
/执行 ed编辑
group by的增强:group by rollup(a,b)等价于group by a,b + group by a + group by null
desc a 查询表结构
select DISTINCT(CAR_ID) from HIS_GPS_DATA t 去除重复
操作符
使用关联查询
使用外关联查询
分组函数的概念、使用、使用Group by子句数据分组、使用Having子句过滤分组结果集
多表查询、笛卡尔集(每张表的列数相加,行数相乘)、等值连接、不等值连接、外连接、自连接(通过别名,将同一张表视为多张表,不适合操作大表)、层次查询(某些层面上可以取代自连接,本质上是单表查询)
为了避免笛卡尔全集,可以在where加入有效的连接条件
在实际运行环境下,应避免使用笛卡尔全集
右外连接where e.deptno(+)=d.deptno
左外连接 where e.deptno=d.deptno(+)
子查询语句放到小括号里面
不可以在GROUP by子句后插入子查询(from 后面子查询)
行号只能使用<,<=不能使用>,>=
VARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容