1.数据库的简介
1.1 数据库的由来
学生信息管理系统 - 主要实现学生信息的增删改查操作。
- 使用集合实现,都是将数据存放在内存中,读写速度比较快,不能永久保存。
- 使用文件进行存取,文件是存放在硬盘上的,读写速度慢,能永久保存,效率低
对查询等针对性的操作没有很好的支持。
- 使用数据库进行存取,效率相对比较好,对查询等针对性操作有很好的支持。
数据库的本质依然是存放在磁盘上的文件。
目前主流的开发都是采用数据库,是一种质的提升。
1.2 基本概念
数据库就是指 存放数据的 仓库,叫做DataBase,简称为DB。
DBA - DataBase Administrator,就是 数据库管理员。
- 大数据时代,银行、金融。
RDB - Relational DataBase,就是关系型数据库.
目前主流的数据库都是关系型数据库。
关系型数据库就是指以关系模型为依据的数据库。
关系模型就是以二维表体现的模型,也就是具有行和列信息的二维表。
1.3 主要代表
目前主流的数据库主要有:Oracle(甲骨文)、DB2、SQL Server、mysql、nosql、mogodb等等。
其中oracle数据库 占据市场50%左右,在java领域占据市场60%左右。 - oracle公司
其中DB2数据库 占据市场20%左右。 - 国际商业化机器(IBM)公司
其中SQL Server数据库 占据市场15%左右。 - 微软公司
其中mysql数据库 是一个小型数据库,受程序员的爱戴。 - Oracle-sun公司
... ...
oracle公司的主要产品:oracle数据库和oracle数据库的服务器,主要的oracle版本有:8i 9g 10g 11g ... ...
1.4 SQL语言
为了使得不同的数据库操作保持统一,提出了一门名字为 SQL(Structured Query Language 结构化查询语言)的语言,主要分为以下五大类:
(1)select查询语句,主要用于进行数据的查询操作。
(2)DML数据操作语句(Data Manipulation Language)
- 主要用于进行数据的增删改操作,使用insert/delete/update关键字。
(3)DDL数据定义语句(Data Definition Language)
- 主要用于进行表的增删改操作,使用create/drop/alter关键字。
(4)TCL事务控制语句(Transaction Control Language)
- 主要用于进行数据的提交/回滚/保存操作,使用commit/rollback/savepoint
(5)DCL数据控制语句(Data Control Language)
- 主要用于进行账户的授权和解除,使用grant/revoke关键字。
2.环境的搭建
2.1 远程数据库的使用
(1)登录远程服务器
使用命令: telnet 服务器的IP地址 - 表示登录远程服务器
如:
telnet 192.168.35.20
ping 192.168.35.20
输入服务器的用户名和密码才能登录成功。
(2)登录服务器的数据库
a.使用命令/工具:sqlplus 用户名/密码 - 表示登录数据库
b.使用图形化工具登录,操作简单,但容易破坏数据。
其中sqlplus是oracle自带的工具,采用命令行的方法进行操作。
一般情况下,先使用sqlplus命令回车,再根据提示输入用户名和密码。
使用exit命令可以断开数据库的连接。
2.2 本地数据库的使用
(1)安装注意事项
输入口令:admin 路径中不要有中文路径
(2)数据库的使用
开始 => 运行 => 输入cmd => 回车 => 输入sqlplus,回车 => 用户名的信息输入 :system,密码的信息输入:admin => 连接数据库成功。
(3)环境的准备
a.启动oracle自带的用户:scott/tiger,以后的sql都在该用户下执行。
b.在oracle的安装目录中搜索文件 scott.sql,将该文件复制到外层目录中,
如:oraclexe目录中
c.通过dos窗口使用system/admin登录数据库,执行以下指令:
@scott.sql文件的路径信息
@D:\oraclexe\scott.sql - 执行该文件中的sql语句
d.alter user scott identified by tiger; - 修改密码为小写 tiger
e.show user - 表示查看当前用户信息,显示scott就恭喜你成功了!
f.以后连接oracle数据库都采用 sqlplus scott/tiger 用户信息,使用exit可以退出
2.3 查看用户的表结构
desc 表名 - 可以查看指定表名的表结构。
后期的学习主要使用两张表:emp员工表、dept部门表。
SQL> desc emp
名称 是否为空? 类型
----------------------------------------- -------- -------------
EMPNO 员工编号 NOT NULL NUMBER(4)
ENAME 员工姓名 VARCHAR2(10)
JOB 职位 VARCHAR2(9)
MGR 领导编号 NUMBER(4)
HIREDATE 入职日期 DATE
SAL 薪水 NUMBER(7,2)
COMM 提成 NUMBER(7,2)
DEPTNO 部门编号 NUMBER(2)
SQL> desc dept;
名称 是否为空? 类型
----------------------------------------- -------- ----------------
DEPTNO 部门编号 NOT NULL NUMBER(2)
DNAME 部门名称 VARCHAR2(14)
LOC 办公地点 VARCHAR2(13)
2.4 常用的数据类型
数值型:
number(n) - 表示具有n位数字组成的整数
number(n,m) - 表示具有n位数字组成的小数,小数点后面有m位数字
文本型:
char(n) - 表示定长字符串,要求n个字符组成,不够用空格填充
varchar2(n) - 表示变长字符串,可以由n个字符组成,不够写多少算多少
日期型:
date - 表示世纪/年/月/日/时/分/秒
注意:
sql语句中不区分大小写,但""和''中的字符除外。
3.select语句
3.1 如何查询单个字段的信息?
select 字段名 from 表名;
如:
--查询员工信息:员工姓名
select ename from emp;
--查询员工信息:员工薪水
select sal from emp;
注意:
其中分号并不是sql语句中的内容,而是为了表达该语句结束的含义。
使用 / 表示执行上一条sql语句。
3.2 如何查询多个字段的信息?
select 字段名1,字段名2,... from 表名;
如:
--查询员工信息:员工编号、员工姓名、员工薪水
select empno,ename,sal from emp;
--查询员工信息:员工编号、员工姓名、入职日期、员工提成
select empno,ename,hiredate,comm from emp;
3.3 如何查询所有字段的信息?
可以将所有字段名列举出来进行查询,也可以使用*来查询
如:
--查询员工的所有信息
select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;
--查询员工的所有信息
select * from emp; -- 解析*需要消耗时间
3.4 字段的算数运算
+ - * / ()
如:
--查询员工的信息:要求给每个员工的薪水 加 200元奖金
select empno,ename,sal,sal+200 from emp;
--查询员工的信息:要求给每个员工的薪水 减 100元
select empno,ename,sal,sal-100 from emp;
--查询员工的信息:要求显示每个员工的年薪,一年16薪
select empno,ename,sal,sal*16 from emp;
--查询员工的信息:要求显示每个员工的日薪
select empno,ename,sal,sal/22 from emp;
--查询员工的信息:要求显示每个员工的年薪,一年16薪,3000元的过节费
select empno,ename,sal,sal*16+3000 from emp;
--查询员工的信息:要求给每个员工的月薪涨500,显示年薪,16薪
select empno,ename,sal,(sal+500)*16 from emp;
3.5 给字段和表达式起别名
在select查询语句中,可以给指定的字段或者表达式起别名,具体方式如下:
select 字段名1 [as] 别名1,字段名2,... from 表名;
如:
--查询员工的信息:要求显示每个员工的年薪,一年16薪,起别名为yearsalary
select empno,ename,sal,sal*16 from emp;
select empno,ename,sal,sal*16 as yearsalary from emp;
select empno,ename,sal,sal*16 yearsalary from emp;
select empno,ename,sal,sal*16 year salary from emp; -- error year为别名
select empno,ename,sal,sal*16 "year salary" from emp; -- 双引号表示整体
select empno,ename,sal,sal*16 "Income" from emp; -- 区分大小写
select empno,ename,sal,sal*16 年收入 from emp; -- 支持汉字
select empno,ename,sal,sal*16 "年收入" from emp; -- 与上面结果一样
select empno,ename,sal,sal*16 365 from emp; -- error 数字做别名
select empno,ename,sal,sal*16 "365" from emp;
select empno,ename,sal,sal*16 from from emp; -- error 关键字做别名
select empno,ename,sal,sal*16 "from" from emp;
注意:
当别名中出现特殊字符如空格、别名使用数字、别名使用关键字、区分大小写的情况下,使用双引号将别名括起来。
给表名也可以起别名,在多表查询时使用。
网友评论