oaec数据库,凌晨4点我把五菱红光开上秋名山
•发布于   •作者 Y点点滴滴小幸福  •271 次浏览  •来自 博客

第一天

1.安装数据库

11g简化版,打开后找到setup.exe,点击安装,

注意:输入的口令(system管理员的密码),尽量自己好记的密码

路径:不能带中文或者空格,否则无法进行下去

启动:

sqlplus的使用

安装后:有两个管理员,system->密码就是安装时的口令,sys(权限更大)

方式1:

window下找到oracle程序里面的运行sql命令行启动

system或者普通用户的登录:

1)

conn

用户名

口令

2)

conn 用户名

口令

3)conn 用户名/口令

退出:exit或quit

方式2:

打开dos界面

1)

sqlplus

用户名

口令

如果sqlplus命令无法使用,修改一下环境变量,去掉多余的分号试试

sqlplus 用户名

口令

sqlplus 用户名/口令(密码会显示出来)

sys管理员的登录:

运行sql命令行下:

conn /as sysdba

在dos下:

sqlplus "/as sysdba"

sys登录不需要提供口令

常用命令/语句

show user:查看当前连接的用户

可以直接在当前用户下,切换到其它用户的连接

统一用:conn的方式

用户:

管理员:权限很大,做管理的,

普通用户:创建表,做表的增删改查操作

创建一个普通用户:(管理员才有权限)

create user 用户名 identified by 口令;(语句,语句要以分号结束)

创建之后没有任何权限,用户什么都做不了,

授权:通常就两个,connect,resource

grant connect,resource to 用户名;

清屏:clear scre(命令结束不需要加分号,加了不出错)

删除用户:(管理员可以删除)

drop user 用户名 cascade;

修改密码:(忘记密码,需要管理员权限)

alter user 用户名 identified by 新口令;

查看当前系统的时间:

select sysdate from dual;

oracle客户端能够正常连接到服务器端,要求两个服务要启动:

默认自动启动,但有时候开机启动会失败,

找到服务:并启动

    OracleServiceXE:

    OracleXTENSListener:

将来如果不使用oracle数据库,客户两个服务设置为手动启动

1)命名规则:

字母开头

字母,数字,_,美元符号,#

见名知义

不能使用关键字

命名:自己命名建议小写

系统的关键字,建议大写,不区分大小写

(如果写小写,到服务器端还要再转换为大写)

2)数据类型:

NUMBER:数值型,整数,小数,--int,Integer

    eg:NUMBER(10),有效位是10位的整数

    eg:NUMBER(9,2),有效位是9位,最多2位小数

VARCHAR2:可变长度的文本型(字符串)----String

    eg:VARCHAR2(30),最多可以存储30个字符

       根据实际长度开辟空间,

CHAR:固定长度的文本型(字符串)----char 

     eg:CHAR(30),最多可以存储30个字符

       无论实际有几个字符,都开辟30个字符长度空间

DATE:存储时间,有默认的格式的-----date

CLOB:用来存储大量的字符,最多达到2GB

BLOB:用来存储大量的字节,最多可达到2GB

     比如需要把一个图片存储到数据库

     实际上,可以把图片存储到本地,把路径存储到数据库

不同的编码下,

字母就是一个字符长度

汉字占用的至少是2个,也可以是3个或多个

存储学号:不允许重复,不能没有

约束:一种限制,限制数据,对应的要求

共计5种

1)NOT NULL:非空约束,不能没有

2)UNIQUE:唯一,不能重复的

3)CHECK:检查,限定数据的范围

  比如要求成绩只能在0~100之间

4)PRIMARY KEY:主键约束

  在添加一行一行的数据的时候,

  要求不能出现完成重复的数据

  1 aa ...

  1 aa ...  完全一样不允许

   

  加了主键约束:1)不能为空,2)唯一性

  通常,我们都会给每一个表加一个字段id,没有实际含义,

  就像是流水号一样

5)FOREIGN KEY:外键约束   table A(sid,sname,bid)  table B(bid,bname)

  体现表与表之间的关系

  表1:学生信息表:

  sid(主键),sno,name,age,addr,tel

  1        101  aa   10  ..  ..

  2        102  bb   11

  3        103  cc   10

查看表的结构:

DESC 表名

删除表:

DROP TABLE 表名;

查看当前用户下所有的表名:

SELECT table_name FROM user_tables;

第二天

通常把表的创建,数据的添加都放到一个  ***.sql下   

格式:e:\aa\my.sql

以sql结尾,数据库脚本

直接通过命令执行脚本

start 脚本路径

或者@脚本路径

如果脚本中的日期是英文的,需要把当前环境的日期语言修改

注意:仅针对于当次会话(会话:一个用户的当次连接)

alter session set nls_date_language=english;

//1.创建一个用户:oaec,密码:oaec,授权

//2.连接到oaec,修改日期的会话语言,执行脚本

但凡出错,导致脚本执行失败,先删除用户重头再来

空值转换函数NVL(列,值)

对于数值列:NVL(列,数值),如果是null,取数值

对于字符串列:NVL(列,'字符串常量');,如果是null,取值字符串常量

sys:最大的管理员,在安装后就存在,级别最高,拥有所有的权限

system:第二大管理员,在安装后就存在,级别第二高,拥有基本的管理普通用户的权限

我们需要创建的表,都是属于某一个用户的,(选择使用普通用户)

通过system创建普通用户,授予基本权限

做事情,一定先切换到普通用户,再做普通用户的

show user:查看当前用户

表达式中的运算符:

比较运算符:

>,=,>=,<=,   !=,<>,^=,不等于

BETWEEN...AND...:在..和..之间

IN:在某一个集合范围内

LIKE:像...样的,模糊查询

IS NULL:是空的

NOT BETWEEN...AND...

NOT IN()

NOT LIKE ''

IS NOT NULL

逻辑运算符:与或非

AND:与  ,两个结果都满足才满足

OR:或    只要有一个结果满足就满足

NOT:非

LIKE(模糊查询): 

%:可以表示任意的0个或多个字符 '张%'--- 张三, 张三三,张三三阿三,张

_:可以表示任意的1个字符     '张_' --- 张X

3.单行函数

函数分为:

单行函数:一行可以得到一个结果

多行函数(组函数):多个行得到一个结果,(一组得到一个结果)

1)字符函数(字符串)

LOWER:转换为小写

UPPER:转换为大写

INITCAP:把每个单词的首字母大写,其余都小写

CONCAT:拼接

LENGTH:长度

SUBSTR(字符串,起始点,长度)  在数据库中,起始点都是1

SELECT SUBSTR('helloevery',2,4) FROM dual;=>ello

FROM dual;

补充:dual,虚表,为了满足select... from...语法

SELECT 1+2

FROM dual;

2)数值函数

ROUND:四舍五入

TRUNC:截取

MOD:取余数

第三天

3.日期函数

MONTHS_BETWEEN(date1,date2):两个日期的月份差,求出的结果带小数部分

SELECT MONTHS_BETWEEN(sysdate,'28-Jan-17')

FROM dual;

求年差:

MONTHS_BETWEEN(date1,date2)/12

求日期差:

date1-date2

求小时差:

(date1-date2)*24

求分:

(date1-date2)*24*60

求秒:

(date1-date2)*24*60*60

add_months(date,添加的月份):增加几个月

SELECT add_months(sysdate,3)

FROM dual;

增加年:

add_months(date,n*12):增加n年

增加日期:date+n

sysdate+3

增加小时:

sysdate+3/24

增加分:

sysdate+3/24/60

增加秒:

sysdate+3/24/60/60

NEXT_DAY(date,'sunday'):当前日期之后的第一个星期日

FROM dual;

LAST_DAY(date):当前日期所在的月的最后一天

4.转换函数

思考:java中转换?? 

基本类型->字符串

字符串->基本类型

时间对象->字符串  to_char()

时间格式的字符串->时间对象 to_date()

to_char:转换为字符串

日期->字符串

SELECT sysdate

FROM dual;

SELECT TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss')

FROM dual;

yyyy:四位数字的年

mm:两位数字的月

dd:两位数字的日期

hh24:24进制的小时

mi:分

ss:秒


0 回复
回到顶部

©2017 Powered by 三十三行伪代码
皖ICP备17005175号-3