oracle数据库入门sql语句

数据库:

命名规范问题 依然是 _流。看来也确实应该抽空 来处理一下 今天吧,不行时间不能浪费。要更加专注。累了 就睡,醒来 就 好好 弄东西。白天 哪怕累一些,强度 大一些,晚上也可以抽空出去。溜溜弯儿。

雷哥 问了一个 问题:

Char 跟 varchar 有什么区别。如果 char 里面 定了4位。存了 一个 汉字,就是 两位。但是 在数据库空间依然是 4位。后面用空格补齐。但是 varchar 里面 假设定了 4位的长,存了一个 汉字 占了两位,这时候 在数据库中就只占2两位。所以 在空间的利用率上varchar 更胜一戳。但是 char 会 在比对时 占用的时间更少。

1、Int 跟 double 跟 number 的区别

2、Varchar2 跟 varchar 的区别。

3、Blob 和 clob 两个是否存在?如何应用?

在 orcl 里面存在 blob  和 clob 。blob 最大单条记录可以存放4G的内容。都是 2进制的形式。通常情况下 我们把这样的内容单独存到一个 文件中,通过地址的链接来进行索引,这样做是为了数据的安全性来考量的。Blob 主要用于存储 声音 和图片类型的文件。对于 clob 同样最大 单条记录是 4g。用于存储文本信息的内容。通常我们也是通过 链接来获得当前文件,如果 需要 对数据库进行一定的安全性的考量可以 把文件封装在 clob里面,但是 通常 我们都比较少用这两个 在orcl里面存在的数据类型。

Create table employee_tb(

Employee_id number,

Employee_name varchar2(20),

Employee_gender char(4),

Employee_age number,

Employee_salary number(9,2),

Employee_hiredate date

);

取命令行 可以显示 表结构 采用 desc employee_tb;

SQL> desc employee_tb;

Name              Type         Nullable Default Comments

----------------- ------------ -------- ------- --------

EMPLOYEE_ID       NUMBER       Y

EMPLOYEE_NAME     VARCHAR2(20) Y

EMPLOYEE_GENDER   CHAR(1)      Y

EMPLOYEE_AGE      NUMBER       Y

EMPLOYEE_SALARY   NUMBER(9,2)  Y

EMPLOYEE_HIREDATE DATE         Y

这个 number(9,2) 也是 需要 注意的一点,就是 在于这个 数字的数字位有9位,小数数字有两位,所以 对应的 前面一共有七位,也就是 这是个 百万级的数字。

Create table department_tb(

Department_id number,

Department_name varchar2(20)

);

1、今日任务:

对了 在这个里面 什么区分大小写 什么不区分大小写来着?可能略有不同跟在mysql里面。这个 点要重新搞一下。

删除表格:

Select * from stu_tb3;

Drop table stu_tb3;

2、今日任务: 不在可选 现在 想到了 还不赶紧弄,等以后 这就会像雪球一样压垮我,去 查看那个 stanford的视频 查看  命名规范。

修改表格

修改表的结构

添加一个字段:

Alter table employee_tb add department_id number;

Select * from emp_tb;

修改字段类型(当心丢失精度) 所以 一定要谨慎。

Alter table employee_tb modify employee_age varchar2(10);

Alter table employee_tb modify employee_age int;

删除字段:

Alter table employee_tb drop column employee_age; [在 orcl里面必须这样删除一个 字段,就是 说 这个 column 关键字 不能省略。]

3、今日任务:在mysql里面 和 orcl里面 这个 都能带着 这个 column关键字么?如果 是的话,或许写一个 这样的差异集合 会比较好。

表的操作;

Select * from employee_tb;

Insert into employee_tb (employee_id,employee_name,employee_hiredate) values(3,‘zhangsan‘,‘1-1月-2016‘);[差异:在添加日期的时候,这个 日期算是被阉割了,也就是说 当插入日期的时候:就是要以这样的标准书写:

比如今天是2016年 1月 8日。那么如下则为今天这样一个 日期的书写:8-1月-2016]

Update employee_tb set employee_name=‘wangwu‘ where employee_id=2;

Delete from employee_tb where employee_id=2

在 orcl里面的 事务概念:mysql里面没有说 那估计就是没有了。

在执行的时候 先写一个 commit; 表示开启了一个 事务,然后比如我们删除了一条记录,这个时候执行 rollback。就会回跟到我们事务开始的位置。这是整段的事务提交和回滚。也可以通过 savepoint a;这样的 语句 存储一个节点。然后 部分回滚, 利用语句 rollback to a;

例程:

设:

Create table employee_tb();

Insert into employee_tb();

Commit:

Delete from employee_tb;//没有记录了。

Rollback;//刚刚的一条记录回来了。

Commit;//事务提交。从此以后不再可以 有回滚的节点了。并且此时表中有一条记录。

断点模式:

Create table employee_tb();

Insert into employee_tb();

Commit;

Savepoint point1;

Insert into employee_tb();//数据库中有2条记录

Rollback to point1;//回到断点1,数据库中仅有1条记录。

Insert into employee_tb();

Savepoint point2;

Insert into employee_tb();

Insert into employee_tb();

Rollback to point2;//回到断点2 数据库中有2条记录。

Rollback;//数据库中有 1条记录。

Commit; 所有断点清空,数据库中最后仅有 1条记录。

表约束:

约束的目的: 保证数据表数据的完整性

每个字段的数据类型和长度也是一种约束。

Not null unique check(比如年龄只在 18-60之间,这样一层意思。) primary key foreign key

我们的表里面至少存在一个 主键的约束

约束的添加方式:

1、在创建表的同时,直接在字段后面添加

2、在创建表的所有字段后面添加约束

3、在创建表完成之后添加约束。

非空约束  not null 唯一性约束

Create table student_tb(

Student_id number not null,

Student_name varchar2(20) unique

);

// 主键约束 primary key。

Create table student1_tb(

Student_id number primary key,

Student_name varchar2(20) unique

);

Create table student2_tb(

Student_id number primary key,

Student_name varchar2(20),

Student_gender char(4) defalult ‘男‘,

Student_age number check (student_age between 18 and 60)

);

Select * from student_tb

对于 orcl 来讲,

Student_gender char(1) default ‘男‘   是不可行的 也就是 一个汉字 是两列。

在创建表的同时,的在所有字段后面添加约束

Create table student3_tb(

Student_id number,

Student_name varchar2(20),

Constraint pk_stu3_tb_id primary key(student_id),

Constraint un_stu3_tb_name unique (student_name)

);

在创建表以后添加约束:

Select * from employee_tb;

非空约束

Alter table employee_tb modify employee_name varchar2(20) not null;

主键约束

Alter table employee_tb add constraint pk_employee_tb_id primary key (employee_id);

主键约束

Alter table department_tb add constraint pk_department_tb_id primary key (department_id);

外键约束  (的前提是 主键约束)

Alter table employee_tb add constraint fk_employee_tb_department_id foreign key (dept_id) references department_tb (department_id)

4、今日任务 orcl 里面的主键自增。

数据查询:

基本查询

查询所有字段

Select * from emp;//在scott用户下面自动就有一个emp表,里面拥有各种类型的数据格式。

查询指定字段:

Select empno,ename,job from emp;

Select distinct job emp;

Select distinct job,empno from emp;

Select empno as "编号",ename as empname from emp;[区别 在mysql里面可以允许这个别名用: "" ‘‘  或者 什么都不填 三种形式,而 对于 orcl  只有 加"" 和什么都不填两种形式]

Select empno ,ename,sal*12 as "年薪" from emp;

在 数据库里面有一个函数,如果为空就怎样。ifnull() 【mysql】和 nvl(comm,0)【orcl】

Select empno,ename,(sal+nvl(comm,0))*12 as "年薪" from emp;

【如果不如此,会导致在没有值的列 返回一个 null ,null+number 然后* 12 返回一个 null,这就不合适了,所以 在这里面,就是用了一个 nvl函数 ,一旦为空,就怎样。】

Select * from emp

今天就讲到这里了。

Nullable 是 可以为空的意思。

对于主键并没有过多的描述。只有一个非空的表示。但是可以在查看表里面,得到一些描述。

这是合理的 并且也只有这两种书写方式。

orcl 加双引号 或者不加

Mysql 双引号 单引号  或者不加

查询年薪。

这样的话 感觉会很悲剧。奖金拿不到 甚至连 工资都没了。

所以 有一个 zai orcl里面的函数:

这个是nvl是 如果没有值的话,就把结果当 0。

这个函数在 mysql里面 是 ifnull。

时间: 2024-08-07 08:17:11

oracle数据库入门sql语句的相关文章

Oracle数据库入门——sql语句和函数详解

一.oracle常用数据类型 一.  数据定义语言(ddl) 数据定义语言ddl(data definition language)用于改变数据库结构,包括创建.更改和删除数据库对象. 用于操纵表结构的数据定义语言命令有: create table alter table truncate table drop table eg. --创建tb_stu表数据结构 create table tb_stu( id number, name varchar2(20) );   --修改tb_stu表数

Oracle数据库常用Sql语句大全

一,数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, --) VALUES ( 值1, 值2, --); INSERT INTO 表名(字段名1, 字段名2, --)  SELECT (字段名1, 字段名2, --) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: 'GOOD DAY' 如果字段值里包含单引号' 需要进行字符串转换, 我们把它替换成两个单引号''. 字符串类型的字段值超过

Oracle 数据库常用sql语句及知识

<Oracle 数据库> 一.常用sql语句: 1.连接系统管理员账号:conn system/system(安装时口令); 2.创建新账号:create user Leo(账号名) identified by Leo(密码): 3.给新账号授权:grant connect,resource to Leo; 4.从某个账户收权:revoke resource from Leo; 5.连接新账号:conn Leo/Leo; 6.显示当前客户:show user; 7.查看表结构:desc s_e

Oracle数据库的sql语句性能优化

在应用系统开发初期,由于开发数据库数据比较少,对于查询sql语句,复杂试图的编写等体会不出sql语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要问题之一.系统优化中一个很重要的方面就是sql语句的优化.对于海量数据,劣质sql语句和优质sql语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就行,而是要写出高质量的sql语句,提高系统的可用性. Oracle的sql调优第一个复杂的主题,甚至需要长

oracle数据库之sql语句使用

SCOTT E-R模型图 DEPT 部门表             EMP 雇员表               BONUS 奖金表         GRADE 工资等级 DEPTNO 部门编号         EMPNO    雇员编号         ENAME 雇员名称     GRADE  工资等级 DNAME  部门名称        ENAME    雇员名称         JOB 工作职位          LOSAL   最低薪资 LOC    部门位置       JOB  

Oracle 数据库常用SQL语句(2)查询语句

一.SQL基础查询 1.select语句 格式:select 字段 from 表名; 2.where 用于限制查询的结果. 3.查询条件 > < >= <= = != 4.与 或(AND,OR) 5.在 不在(IN,NOT IN) 练习:查询工号为1,9,11,16且工资低于1000的员工. 6.在 [a,b] (between val1 and val2) 查询工资大于1000,小于1500的员工. select * from s_emp where salary between

解决oracle数据库删除sql语句出现^H字样

1:安装readline包 yum install readline* 2:安装源码包: rlwrap-0.30.tar.gz ./configure && make && make install 3:修改oracle用户的环境变量: alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman'

ORACLE数据库的SQL语句之约束——基础篇

/*修改用户密码:1.输入cmd打开dos窗口2.sqlplus/nolog3.conn/as sysdba4.alter user system identified by orcl;*/ /**数据完整性指存储在数据库中的所有数据值均正确的状态.如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性*/ CREATE TABLE tb_student(NAME VARCHAR2(18),sex CHAR(3),age INT,address VARCHAR2(100),phone

oracle数据库常用SQL语句

1)删除表的一列 ALTER TABLE 表名 DROP COLUMN 列名; 2)增加表的一列 且默认值为0alter table 表名 add 字段名 类型 default '0'; 3)修改表的字段为NULLALTER TABLE 表名 MODIFY 要修改的字段名字 NULL; 4)修改表的字段名alter table 表名 rename column 原字段名 to 目标字段名;