sql基础知识(笔记)(一)

**

sql基础知识(笔记)(一)

**
当时学习sql的笔记 (oracle)

1.简单查询:

select * from 表名;

其中select和from是关键字,泛绿色,Oracle所有泛绿色的都是关键字
*是通配符,代表所有的列;
表名即需要查询的表的名字,我们要看哪张表里的数据,就写哪个表的名字,查出来的就是这个表的所有数据;
每一句SQL后都需要有分号,分号代表一个SQL语句的结束,切记.

select 列1,列2,列3 from 表名;

当我们要查询表中的一部分列时,就不能使用了,因为查出的是所有的列,比如成绩单表,语文老师只想看语文成绩,就不需要使用select *
当我们想查询部分列时,把想查询的列名代替*即可,如果要查询多列,则多个列名之间用逗号隔开.
比如查询emp表的empno和ename,按照我们上面说的,就可以写作 select empno, ename from emp;更多的列也是如此,都好隔开即可.
这里注意一个细节,我们查询的列名的顺序,决定结果中列展示的前后顺序,即先查询了empno,则数据展示时先展示empno,再查询了ename,则ename第二位展示.
查询结果的展示顺序,只与查询顺序有关.select *时顺序一直是固定的,因为表中列的顺序是固定的,DBA_TAB_COLUMNS表中有COLUMN_ID这个东西,它就决定了表中列的顺序,也决定了展示顺序;

表取别名和列取别名

select b.列1,b.列2 from 表名 b;

我们在查询一部分列时,实际都是列名前都是有表名的,即 表名.列名 的形式,取别名后,就可以用别名代替表名,即变为 别名.列名形式. 因为只有一张表,所有 表名. 这个部分可以省略。
但我们之后会学习到从多张表查询数据,这时候就不能省略了.尤其表名比较长的时候,表取别名就很实用了,可以提高我们的编码效率,不用再多次数据表名.

select 列1 as 别名1, 列2 别名2 from 表名;

列取别名时,需要注意别名的命名规范:
尽量是单词缩写,若多个单词时,用下划线_连接,不能使用中划线;
数字,_开头时,需要用双引号包裹
列名中包含特殊符号,比如括号等时,需要用双引号包裹
别名可以是中文,且不需要引号,这也是唯一的一处.

**

2.筛选查询:

**

数据类型:
数据类型是指的是数据的格式,这里的数据不是单指数字,是说表里的内容.

常见数据类型有如下几个:
varchar2:字符串类型,包含各种字符,字母,汉字,符号等等.因为编码格式的不同,汉字所占位数会有所差异,GBK 汉字占2位,UTF-8占3位
varchar2区别于varchar,回忆区别的点在哪儿:都是存放字符类型 varchar2是可变的,varchar2(40),如果我只存放了1个字母,实际占位1 varchar分配多少占多少, varchar(40),存放了一个字母,这40个字符全部占满,别人无法使用
字符串格式使用时需要用单引号包裹.(有没有例外情况?) 最大长度 4000

number:数字类型,即数据.1,2,3等的这种.数字是可以直接比较大小的. number(5) 代表是数字类型,最大长度5位. number(4,2)代表最大长度4位,其中小数2位.
比如number(5),最大长度5位,数据可以是1位,比如数字7,也可以是3位,比如156,最多不超过5位.
number(4,2):是指最大长度4位,其中小数2位.即数据可以是1,但显示为1.00,因为有2位小数.即整数最多2位,小数一直是2位.
最长38位

date:时间类型,代表时间,比如当前时间 sysdate. to_date(), to_char()

筛选查询:
之前讲解的都是查询整张表的全部内容或者某几列的全部内容,如果要查询一部分数据,就得用到筛选查询.
基本语法:

select * from 表名 where 列名=值;--查询表中列名的值=值的数据.
比如select * from emp where ename='ADAM';--查询emp表中ename是'ADAM'的人的信息

看列数据类型的几种方式:
1.select * from 表名;鼠标放在某一列数据上,下方会显示这一列数据的类型;
2.Ctrl+鼠标左键,在表名上,点击进去后可以看到每一列的数据类型;
3.USER_TAB_COLUMNS视图内,有每一列的数据类型长度等信息,COLUMN_ID也在里面

其中表名后出现一个关键字 where,可以理解为条件是,或者满足条件,后面跟上查询的条件 列名=值. 表达的意思是满足列中的数据等于后面的值这个条件.

这里面不止=一个运算符,另外还有>,<,>=,<=,<>, between… and, in, not in
其中注意between … and是包含边界的,所有在使用时要注意,如果是统计数据,则慎用.

当前我们是只有一个查询条件,实际应用中我们经常是多个条件同时使用,提高查询的准确度.这里需要引入and和or满足多个条件查询.

and:意为同时满足and前后两个条件
or:满足or前后任意一个条件即可,也可以理解为查询结果是满足前面条件的结果和满足后面条件结果的合集.

而且and和or有优先级关系: ()>and>or
即当有and和or同时存在时,先执行and,再执行or. 如果有括号,则先执行括号. 回看笔记,看一下我们之前的练习题.

日常编码中,我们需要使用括号,提高代码可读性.

筛选查询中还有两个点:

  1. in的用法: 现阶段in可以理解为多个or的组合,在某个范围之内的数据 同理还有 not in
  2. oracle判空: is null,判断不为空时 is not null.其余的方式都不对(=‘ ’, = null)等.

练习题:

create table emp_0204
(emp_no number(4),
emp_name varchar2(50),
emp_job varchar2(50),
emp_hiredate date,
emp_dept varchar2(50)
);

insert into emp_0204 values(0001,'Sucre','MANAGER',to_date('19850308','YYYYMMDD'),'10');
insert into emp_0204 values(0002,'Alex','SALESMAN',to_date('19820110','YYYYMMDD'),'10');
insert into emp_0204 values(0003,'Bill','SALESMAN',to_date('19950820','YYYYMMDD'),'10');
insert into emp_0204 values(0004,'Shown','SALESMAN',to_date('19871102','YYYYMMDD'),'10');
insert into emp_0204 values(0005
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yang_z_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值