Oracle学习笔记

1.显示系统日期

 select sysdate from dual;


2.解锁用户
  首先使用管理员登陆

sqlplus sys/xiaoyaozi as sysdba
alter user scott account unlock


3.使用PL/SQL输出字符串

SQL> set serveroutput on
SQL> begin
  2     dbms_output.put_line('这是第一个PL/SQL程序');
  3  end;
  4  /
结果:
这是第一个PL/SQL程序


4.Oracle基本数据类型

引用

1.字符数据类型
   CHAR,必须指定字符串的长度,默认值为1B最长为255B。
   VARCHAR,必须指定最大字节数,最长为2000B。
   LONG,存储可变长的字符串,最大长度为2GB,LONG具有VARCHAR的多种特征,利用它可以存储较长的文本串一个表中最多只能有一个LONG列,且不能为索引列,不能出现在完整性约束中。
  2.数字数据类型
    NUMBER,最大精度为38位,定点数据类型的语法为:NUMBER(P,S),P代表数字数,S为小数点右边的数字个数,范围为-84~127。
    FLOAT,十进制精度为38位二进制精度为126。
    FLOAT(B),二进制精度为B,B的范围为1-26.
  3。DATE数据类型
    DATE,用于存储日期和时间信息,,每个DATE值,可以存贮世纪、年、月、日、分、秒。如果要指定日期值,需要使用TO_DATE函数来进行转换。
  4.ROWID数据类型
    ROWID为Oracle的伪列,是数据表中每行数据在内的唯一的标识。通过查询ROWID获得行地址。
  5.LOB数据类型
  BLOB,二进制数据可以存储到不同的表空间中。CLOB,字符型数据可以存储到不同的表空间中。BFILE,二进制文件存储在服务器上的外部文件中。


5.定义表结构
①定义学生表students

SQL> create table students(
  2  sid number(5)
  3    constraint student_pk primary key,
  4  mid number(5),
  5  name varchar(10) not null,
  6  sex varchar(2) default '男'
  7    constraint sex_chk check (sex in ('男','女')),
  8  dob date,
  9  specialty varchar(10)
 10  );


  ②定义department表

SQL> create table department(
  2   did number(5)
  3    constraint depart_pk primary key,
  4  dname varchar(8) not null,
  5  address varchar(30)
  6  );

  ③定义教师表teachers

SQL> create table teachers(
  2   tid number(5)
  3   constraint teacher_pk primary key,
  4  name varchar(8) not null,
  5  title varchar(6),
  6  hiredate date default sysdate,
  7  bonus number(7,2),
  8  wage number(7,2),
  9  did number(5)
 10   constraint teach_fk_depart references department(did)
 11  );

    ⑤定义课程cources表

SQL> create table cources(
  2  cid number(5)
  3    constraint course_pk primary key,
  4  cname varchar(30) not null,
  5  chour number(2)
  6  );

 ⑥定义学生成绩stu_grade表

SQL> create table stu_grade(
  2  sid number(5)
  3   constraint stu_grade_fk_students references students(sid),
  4  cid number(5)
  5   constraint stu_grade_fk_cource references cources(cid),
  6  score number(4,1)
  7  );

 6,查看表的结构:

describe <table_name>
或 desc <table_name>

例:
SQL> desc students;
 名称                                                  是否为空? 类型
 ----------------------------------------------------- -------- -------------

 SID                                                   NOT NULL NUMBER(5)
 MID                                                            NUMBER(5)
 NAME                                                  NOT NULL VARCHAR2(10)
 SEX                                                            VARCHAR2(2)
 DOB                                                            DATE
 SPECIALTY                                                      VARCHAR2(10)

 7.添加数据

insert into <table_name>[column name]  values (value1,value2,......,value);

 
插入学生表记录:

INSERT INTO students 
  VALUES(10101,NULL,'王晓芳', '女', '07-5月-1988','计算机');
INSERT INTO students
  VALUES(10205,NULL,'李秋枫', '男', '25-11月-1990','自动化');
INSERT INTO students
  VALUES(10102,10101,'刘春苹', '女', '12-8月-1991','计算机');
INSERT INTO students
  VALUES(10301,NULL,'高山', '男', '08-10月-1990','机电工程');
INSERT INTO students
  VALUES(10207,10205,'王刚', '男', '03-4月-1987','自动化');
INSERT INTO students
  VALUES(10112,10101,'张纯玉', '男', '21-7月-1989','计算机');
INSERT INTO students
  VALUES(10318,10301,'张冬云', '女', '26-12月-1989','机电工程');
INSERT INTO students
  VALUES(10103,10101,'王天仪', '男', '26-12月-1989','计算机');
INSERT INTO students
  VALUES(10201,10205,'赵风雨', '男', '25-10月-1990','自动化');
INSERT INTO students
  VALUES(10105,10101,'韩刘', '男', '3-8月-1991','计算机');
INSERT INTO students
  VALUES(10311,10301,'张杨', '男', '08-5月-1990','机电工程');
INSERT INTO students
  VALUES(10213,10205,'高淼', '男', '11-3月-1987','自动化');
INSERT INTO students
  VALUES(10212,10205,'欧阳春岚', '女', '12-3月-1989','自动化');
INSERT INTO students
  VALUES(10314,10301,'赵迪帆', '男', '22-9月-1989','机电工程');
INSERT INTO students
  VALUES(10312,10301,'白菲菲', '女', '07-5月-1988','机电工程');

INSERT INTO students
  VALUES(10328,10301,'曾程程', '男', NULL,'机电工程');
INSERT INTO students
  VALUES(10128,10101,'白昕', '男', NULL, '计算机');
INSERT INTO students
  VALUES(10228,10205,'林紫寒', '女', NULL, '自动化');
 
插入department数据:

INSERT INTO department VALUES(101,'信息工程','1号教学楼');
INSERT INTO department VALUES(102,'电气工程','2号教学楼');
INSERT INTO department VALUES(103,'机电工程','3号教学楼');
INSERT INTO department VALUES(104,'工商管理','4号教学楼');
 
插入teachers表数据:

INSERT INTO teachers
  VALUES(10101,'王彤', '教授', '01-9月-1990',1000,3000,101); 
INSERT INTO teachers
  VALUES(10104,'孔世杰', '副教授', '06-7月-1994',800,2700,101); 
INSERT INTO teachers
  VALUES(10103,'邹人文', '讲师', '21-1月-1996',600,2400,101); 
INSERT INTO teachers
  VALUES(10106,'韩冬梅', '助教', '01-8月-2002',500,1800,101); 

INSERT INTO teachers
  VALUES(10210,'杨文化', '教授', '03-10月-1989',1000,3100, 102); 
INSERT INTO teachers
  VALUES(10206,'崔天', '助教', '05-9月-2000',500,1900, 102); 
INSERT INTO teachers
  VALUES(10209,'孙晴碧','讲师', '11-5月-1998',600,2500, 102); 
INSERT INTO teachers
  VALUES(10207,'张珂', '讲师', '16-8月-1997',700,2700, 102); 

INSERT INTO teachers
  VALUES(10308,'齐沈阳', '高工', '03-10月-1989',1000,3100, 103); 
INSERT INTO teachers
  VALUES(10306,'车东日', '助教', '05-9月-2001',500,1900, 103); 
INSERT INTO teachers
  VALUES(10309,'臧海涛','工程师', '29-6月-1999',600,2400, 103); 
INSERT INTO teachers
  VALUES(10307,'赵昆', '讲师', '18-2月-1996',800,2700, 103); 

INSERT INTO teachers
  VALUES(10128,'王晓', NULL,'05-9月-2007',NULL,1000, 101); 
INSERT INTO teachers
  VALUES(10328,'张笑', NULL, '29-9月-2007',NULL,1000, 103); 
INSERT INTO teachers
  VALUES(10228,'赵天宇', NULL, '18-9月-2007',NULL,1000, 102);
INSERT INTO teachers
  VALUES(11111,'林飞', NULL, '11-10月-2007',NULL,1000, NULL);
 
插入cources表数据:

INSERT INTO cources VALUES(10101,'计算机组成原理',4);
INSERT INTO cources VALUES(10201,'自动控制原理',4);
INSERT INTO cources VALUES(10301,'工程制图',3);

INSERT INTO Cources VALUES(10102,'C++语言程序设计',3);
INSERT INTO cources VALUES(10202,'模拟电子技术',4);
INSERT INTO cources VALUES(10302,'理论力学',3);

INSERT INTO cources VALUES(10103,'离散数学',3);
INSERT INTO cources VALUES(10203,'数字电子技术',4);
INSERT INTO cources VALUES(10303,'材料力学',3);
 
插入stu_grade表数据:

INSERT INTO stu_grade VALUES(10101,10101,87);
INSERT INTO stu_grade VALUES(10101,10201,100);
INSERT INTO stu_grade VALUES(10101,10301,79);

 7.显示所有数据:

select * from <table_name>
或select <column_name> from <table_name>


SQL> select * from stu_grade;

       SID        CID      SCORE
---------- ---------- ----------
     10101      10101         87
     10101      10201        100
     10101      10301         79
 

8.删除数据:

delete from <table_name> [ where <condition> ]

 9.NVL函数:

SQL> select name 姓名,NVL(bonus,0)+wage 薪水 from teachers;
或者:
SQL> select name 姓名,NVL2(bonus,bonus+wage,wage) 薪水 from teachers;
或者:
(返回第一个非空值)
SQL> select name 姓名,COALESCE(bonus+wage,wage) 薪水 from teachers;


 姓名           薪水
-------- ----------
王彤           4000
孔世杰         3500
邹人文         3000
韩冬梅         2300
杨文化         4100
崔天           2400
孙晴碧         3100
张珂           3400
齐沈阳         4100
车东日         2400
臧海涛         3000
赵昆           3500
王晓           1000
张笑           1000
赵天宇         1000
林飞           1000
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简单的介绍了一个常用的SQL 语句 3.2 例3.2_1 执行SQL语句。 SELECT sysdate FROM dual; 例3.2_2 执行PL/SQL程序。 SET SERVEROUTPUT ON BEGIN DBMS_OUTPUT.PUT_LINE('这是第一个PL/SQL程序'); END; / 3.3.2 定义表的结构 例3.3_1 students表结构 CREATE TABLE students ( student_id NUMBER(5) CONSTRAINT student_pk PRIMARY KEY, monitor_id NUMBER(5), name VARCHAR2(10) NOT NULL, sex VARCHAR2(6) CONSTRAINT sex_chk CHECK(sex IN ('男','女')), dob DATE, specialty VARCHAR2(64) ); 例3.3_2 departments表结构 CREATE TABLE departments( department_id NUMBER(3) CONSTRAINT department_pk PRIMARY KEY, department_name VARCHAR2(8) NOT NULL, address VARCHAR2(40) ); 例3.3_3 teachers表结构 CREATE TABLE teachers ( teacher_id NUMBER(5) CONSTRAINT teacher_pk PRIMARY KEY, name VARCHAR2(8) NOT NULL, title VARCHAR2(6), hire_date DATE DEFAULT SYSDATE, bonus NUMBER(7,2), wage NUMBER(7,2), department_id NUMBER(3) CONSTRAINT teachers_fk_departments REFERENCES departments(department_id ) ); 例3.3_4 courses表结构 CREATE TABLE courses( course_id NUMBER(5) CONSTRAINT course_pk PRIMARY KEY, course_name VARCHAR2(30) NOT NULL, credit_hour NUMBER(2) ); 例3.3_5 students_grade表结构 CREATE TABLE students_grade( student_id NUMBER(5) CONSTRAINT students_grade_fk_students REFERENCES students(student_id), course_id NUMBER(5) CONSTRAINT students_grade_fk_courses REFERENCES courses(course_id), score NUMBER(4,1) ); 例3.3_6 grades表结构 CREATE TABLE grades ( grade_id NUMBER(1) CONSTRAINT grade_pk PRIMARY KEY, low_score NUMBER(4, 1), high_score NUMBER(4, 1), grade VARCHAR2(6) ); 3.3.3 查看表结构 例3.3_7 查看students表结构 DESCRIBE students; 例3.3_8 查看teachers表结构 DESCRIBE teachers; 例3.3_9 查看departments表结构 DESCRIBE departments; 例3.3_10 查看courses表结构 DESCRIBE courses; 例3.3_11 查看students_grade表结构 DESCRIBE students_grade; 例3.3_12 查看Grades表结构 DESCRIBE grades; 3.3.4 删除表 例3.3_13 删除teachers表。 DROP TABLE teachers; 例3.3_14 删除departments表。 DROP TABLE departments; 例3.3_15 删除students_grade表。 DROP TABLE students_grade; 例3.3_16 删除students表。 DROP TABLE students; 例3.3_17 删除courses表。 DROP TABLE courses; 例3.3_18 删除grades表。 DROP TABLE grades; 3.3.5 添加数据 同名,同生日(参加工作时间),时间数据为NULL. 例3.3_19 添加students记录 学生记录: INSERT INTO students VALUES(10101,NULL,'王晓芳', '女', '07-5月-1988','计算机'); INSERT INTO students VALUES(10205,NULL,'李秋枫', '男', '25-11月-1990','自动化'); INSERT INTO students VALUES(10102,10101,'刘春苹', '女', '12-8月-1991','计算机'); INSERT INTO students VALUES(10301,NULL,'高山', '男', '08-10月-1990','机电工程'); INSERT INTO students VALUES(10207,10205,'王刚', '男', '03-4月-1987','自动化'); INSERT INTO students VALUES(10112,10101,'张纯玉', '男', '21-7月-1989','计算机'); INSERT INTO students VALUES(10318,10301,'张冬云', '女', '26-12月-1989','机电工程'); INSERT INTO students VALUES(10103,10101,'王天仪', '男', '26-12月-1989','计算机'); INSERT INTO students VALUES(10201,10205,'赵风雨', '男', '25-10月-1990','自动化'); INSERT INTO students VALUES(10105,10101,'韩刘', '男', '3-8月-1991','计算机'); INSERT INTO students VALUES(10311,10301,'张杨', '男', '08-5月-1990','机电工程'); INSERT INTO students VALUES(10213,10205,'高淼', '男', '11-3月-1987','自动化'); INSERT INTO students VALUES(10212,10205,'欧阳春岚', '女', '12-3月-1989','自动化'); INSERT INTO students VALUES(10314,10301,'赵迪帆', '男', '22-9月-1989','机电工程'); INSERT INTO students VALUES(10312,10301,'白菲菲', '女', '07-5月-1988','机电工程'); INSERT INTO students VALUES(10328,10301,'曾程程', '男', NULL,'机电工程'); INSERT INTO students VALUES(10128,10101,'白昕', '男', NULL, '计算机'); INSERT INTO students VALUES(10228,10205,'林紫寒', '女', NULL, '自动化'); 例3.3_20 添加departments记录 系部记录: INSERT INTO departments VALUES(101,'信息工程','1号教学楼'); INSERT INTO departments VALUES(102,'电气工程','2号教学楼'); INSERT INTO departments VALUES(103,'机电工程','3号教学楼'); 连接查询时使用: INSERT INTO departments VALUES(104,'工商管理','4号教学楼'); 例3.3_21 添加teachers记录 教师记录: INSERT INTO teachers VALUES(10101,'王彤', '教授', '01-9月-1990',1000,3000,101); INSERT INTO teachers VALUES(10104,'孔世杰', '副教授', '06-7月-1994',800,2700,101); INSERT INTO teachers VALUES(10103,'邹人文', '讲师', '21-1月-1996',600,2400,101); INSERT INTO teachers VALUES(10106,'韩冬梅', '助教', '01-8月-2002',500,1800,101); INSERT INTO teachers VALUES(10210,'杨文化', '教授', '03-10月-1989',1000,3100, 102); INSERT INTO teachers VALUES(10206,'崔天', '助教', '05-9月-2000',500,1900, 102); INSERT INTO teachers VALUES(10209,'孙晴碧','讲师', '11-5月-1998',600,2500, 102); INSERT INTO teachers VALUES(10207,'张珂', '讲师', '16-8月-1997',700,2700, 102); INSERT INTO teachers VALUES(10308,'齐沈阳', '高工', '03-10月-1989',1000,3100, 103); INSERT INTO teachers VALUES(10306,'车东日', '助教', '05-9月-2001',500,1900, 103); INSERT INTO teachers VALUES(10309,'臧海涛','工程师', '29-6月-1999',600,2400, 103); INSERT INTO teachers VALUES(10307,'赵昆', '讲师', '18-2月-1996',800,2700, 103); 教师记录(NULL): INSERT INTO teachers VALUES(10128,'王晓', NULL,'05-9月-2007',NULL,1000, 101); INSERT INTO teachers VALUES(10328,'张笑', NULL, '29-9月-2007',NULL,1000, 103); INSERT INTO teachers VALUES(10228,'赵天宇', NULL, '18-9月-2007',NULL,1000, 102); 连接查询时使用: INSERT INTO teachers VALUES(11111,'林飞', NULL, '11-10月-2007',NULL,1000, NULL); 例3.3_22 添加Courses记录 INSERT INTO courses VALUES(10101,'计算机组成原理',4); INSERT INTO courses VALUES(10201,'自动控制原理',4); INSERT INTO courses VALUES(10301,'工程制图',3); INSERT INTO Courses VALUES(10102,'C++语言程序设计',3); INSERT INTO courses VALUES(10202,'模拟电子技术',4); INSERT INTO courses VALUES(10302,'理论力学',3); INSERT INTO courses VALUES(10103,'离散数学',3); INSERT INTO courses VALUES(10203,'数字电子技术',4); INSERT INTO courses VALUES(10303,'材料力学',3); 例3.3_23 添加students_grade记录 INSERT INTO students_grade VALUES(10101,10101,87); INSERT INTO students_grade VALUES(10101,10201,100); INSERT INTO students_grade VALUES(10101,10301,79); 例3.3_24 添加grades记录 INSERT INTO grades VALUES(1,0,59,'不及格'); INSERT INTO grades VALUES(2,60,69,'及格'); INSERT INTO grades VALUES(3,70,79,'中等'); INSERT INTO grades VALUES(4,80,89,'良好'); INSERT INTO grades VALUES(5,90,100,'优秀'); 3.3.6 查看数据 例3.3_25 查看students数据 SELECT * FROM students; 例3.3_26 查看teachers数据 SELECT * FROM teachers; 例3.3_27 查看departments数据 SELECT * FROM departments; 例3.3_28 查看courses数据 SELECT * FROM courses; 例3.3_29 查看students_grade数据 SELECT * FROM students_grade; 例3.3_30 查看grades数据 SELECT * FROM grades; 3.3.7 删除数据 例3.3_31 删除students_grade数据 DELETE FROM students_grade; 例3.3_32 删除teachers数据 DELETE FROM teachers; 例3.3_33 删除departments数据 DELETE FROM departments; 例3.3_34 删除courses数据 DELETE FROM courses; 例3.3_35 删除students数据 DELETE FROM students; 例3.3_36 删除grades数据 DELETE FROM grades;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值