ORACLE的基本操作

基本操作

create table T_STUDENT
(
    name varchar2(10) not null,  -- 姓名,不能为空
    id char(11) not null,  -- 学号,不能为空
    age number(3) constraint CKC_age_STUDENT check (age >=10) not null, -- 年龄,不能为空
    gender char(1) constraint CKC_gender_STUDENT check (gender in (1,2)), -- 性别,1--男,2--女
    class varchar2(10) not null,
    height number(5,2),
    weight number(5,2),
    crttime date default sysdate not null,
    primary key (name,id) --符合主键 --最后一句不可以加","
)tablespace USERS; -- 指定表空间

-- 查询语句
-- 用*查询一定不能出现在程序中,表结构一旦发生改变程序就容易出现错误
select * from T_STUDENT;
select name,id,age,gender from T_STUDENT;

-- 主键
-- 一个表只能有一个主键,而且组成主键的每个字段值都不能为空。
-- 主键的作用:(1)体现数据结构设计的合理性。 
--             (2)提升数据操作的速度。 
--             (3)保证数据的完整性,在表中添加或修改记录时,数据库会检查该记录主键的值,
--                  不允许与其它记录主键的值重复,这种做法有个专业的名词:主键约束。
-- 创建主键
-- 1-直接在创建表时创建
-- 2-创建完后再增加主键

-- 查询表的约束名命
select * from user_cons_columns where table_name = 'T_STUDENT';
-- 删除主键
alter table T_STUDENT drop constraint SYS_C0011106;
alter table T_STUDENT add constraint PK_STUDENT primary key(name,id);


-- 插入语句
insert into T_STUDENT(name,Id,age,gender,class,HEIGHT,WEIGHT,CRTTIME) 
values ('张三','2020100000','12',1,'六年级一班',170.00,60.00,sysdate);

-- 没有指定CRTTIME,会使用缺省值
insert into T_STUDENT(name,Id,age,gender,class,HEIGHT,WEIGHT) 
values ('李四','2020100001','13',1,'六年级一班',170.00,60.00);

-- 更新语句
update T_STUDENT set id = '2020100003' where name='李四';
update T_STUDENT set id = '2020100003',gender='2' where name='李四';

-- 删除表
drop table T_STUDENT;
-- 修改表名
alter table T_STUDENT rename to STUDENT;
alter table STUDENT rename to T_STUDENT;

-- 删除列
alter table T_STUDENT drop column remarks;
-- 修改列名
alter table T_STUDENT rename column id to card;
alter table T_STUDENT rename column card to id;
-- 增加字段
alter table T_STUDENT add remarks varchar2(100);

-- 修改字段属性
alter table T_STUDENT modify name varchar2(20);

序列生成器

-- 创建序列生成器
create sequence SEQ_STUDENT;

create sequence SEQ_STUDENT_1 
       minvalue 10 /* 最小值 */
       maxvalue 9999999999999999999999999999 /* 最大值 */
       increment by 20 /* 步长 */
       start with 30 /* 序列的起始值 */
       /* 是否采用缓存机制,nocache不采用缓存,缺省cache 20,
       数据库每次会生成20个值放在缓存中,如果缓存中有数据,
       就不需要再查数据库了,采用缓存机制可以提升效率。 */
       cache 20 
       /* 获取序列的时候是否按顺序给值,如果多用户一
       起获取序列的值,使用order可以保证序列值的顺序
       按访问序列的事件排序,缺省是noorder。 */
       noorder 
       /* cycle(循环),nocycle(不循环)是否循环,
       缺省不循环,如果不循环,序列值到了maxvalue后将不可用。 */
       nocycle ;

-- 获取序列生成器的下一个值
select SEQ_STUDENT.nextval from dual;

-- 获取序列生成器的当前值
-- 第一次取序列要先nextval才可以currval
select SEQ_STUDENT.currval from dual;

-- 修改序列
alter sequence SEQ_STUDENT_1  cache 40 order cycle;

-- 删除序列
drop sequence SEQ_STUDENT_1;

-- 注意
序列的nextval方法不会产生事务,事务回滚命令rollback不会恢复序列的值

日期函数

-- 日期函数转换为字符串
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyymmddhh24miss') from dual;
select to_char(sysdate,'yyyymmddhh24:mi:ss') from dual;
select to_char(sysdate,'yyyymmdd-hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(sysdate,'hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

-- 将字符串转换为日期
create table ttime
(
    datetime date
);
select * from ttime;
insert into ttime(datetime) values (to_date('2021-01-22','yyyy-mm-dd'));

-- 日期运算

-- 加一天
select sysdate,sysdate+1 from dual;
-- 加一小时
select sysdate,sysdate+1/24 from dual;
-- 加一分钟
select sysdate,sysdate+1/24/60 from dual;
-- 加一秒钟
select sysdate,sysdate+1/24/60/60 from dual;

-- 加整月,月的大小是不同的
select sysdate,add_months(sysdate,1) from dual;
select add_months(to_date('2021-12-1','yyyy-mm-dd'),1) from dual;
select add_months(to_date('2021-1-31','yyyy-mm-dd'),1) from dual; -- 取2021-02-28
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值