SQL语句之查询基础(一)
2017-10-03 17:00
197 查看
--数据库
--文件存储的缺点:
--1.缺乏对数据的管理,并且数据不便修改
--2.不利于数据的分析和共享
--3.数据量巨大,大量的数据不能保存在文件中。
--数据库(DataBase)简称DB,是按照数据结构来组织,存储和管理数据的仓库
--数据库管理系统(DataBase Management System):简称DBMS,是数据库的管理软件
--常见的数据库:
--关系型数据库:(关系:描述两个元素间的关联和对应关系)
--主流的关系型数据库
--oracle(甲骨文)
--Mysql(sun公司收购,orale收购sun公司,5.6)
--DB2(IBM)
--SqlServer(微软)
--Sybase(Sybase,目前被SAP收购)
--表(Table):表示二维的,包含行和列,表的行是横排的(ROW)也叫做记录(Record);表的竖排(Column),是纵列数据库,也被称为字段(Filed)
--一个关系型数据库是由多个数据表组成的,数据库的基本存储结构是数据表,表和表之间是有关联的
--结构化查询语言():SQL是在关系型数据库上执行数据操作,检索,维护的标准语言,可以用来查询数据,操作数据,定义数据,控制数据
--包含以下5种
--数据定义语言(DDL):Data Definition Language
--数据操作语言(DML):Data Manipulation Language
--事物控制语言(TCL):Transation Control Language
--数据查询语言(DQL):Data Query Language
--数据控制语言(DCL):Data Control Language
--在数据库中,大小写不敏感
--1.数据定义语言(DDL):
--用于建立,修改,删除数据库对象
--包括:
--careate:创建表或其他对象的结构
--DESC:查看表结构
--alter:修改表或其他对象的结构
--add:添加新字段在表的最后,不能添加到中间
--drop,drop()跟要删除的字段名
--moditify:修改,若表中有数据,类型尽量不要做修改,而且长度最后变长不要变短
--drop:删除表及其他对象的结构
--代表删除该表中的数据及结构
--truncate:删除表数据,保留表结构
create table Student(
name varchar2(10) not null,
age number(4),
birthday Date
);
alter table Student add (gender char(1));
alter table Student drop(birthday);
alter table Student modify(gender char(1) default 'M');
desc Student;
RENAME STUDENT TO NEWsTUDENT;
desc NEWsTudent;
drop TABLE NEWsTUDENT;
truncate table STudent;
--2.数据操作语言(DML):Data Manipulation Language
--用于改变数据表中的数据,和事物有关,执行完成后需要经过事物控制语句(TCL)提交后才真正的将数据运用到数据表中
--包含以下三种
--insert:将数据插入到数据表中
--update:更新数据表中已存在的数据
--delete:删除数据表中的数据
--3.事物控制语言(TCL):Transation Control Language
--用于维护数据一致性的语句
--包括
--commit:提交,确认以及进行的数据改变
--rollback:回滚,取消以及进行的数据改变
inse
ba2e
rt into student(name,age,gender) values('葫芦娃',18,'F')
insert into student(name,age) values('凹凸曼',20);
--插入语句时,若不指定字段,则是全字段
insert into student values('天使',17,'F');
rollback;
select *from student;
commit;
update student set age=21 where name='凹凸曼';
delete from student where name = '葫芦娃';
--4.数据查询语言(DQL):Data Query Language
--用来查询所需要的数据
--select语句
select age from student where name='凹凸曼';
--5.数据控制语言(DCL):Data Control Language
--用于执行权限的授予和收回的操作
-- 包括
--grant:授予,用于给用户或角色授予权限
--revoke:用于收回用户或角色已有的权限
--create user:创建用户
--default语句:给列指定默认值
--not null:是一种约束条件,用于确保该字段不能为空
--默认情况下,任何列都可以为空
--当某个字段给设置了非空约束,那么该字段就必须存在有效值
--当执行插入操作时,必须提供这个列的数据
--当执行更新操作时,不能设置该值为空
drop table newstudent;
drop table student;
insert into student(name,age) values('聪聪',12);
update student set name='小葱' where age=12;
--Number类型
--表示数字类型,被定义为NUMBER(P,S)形式,P表示数字总位数,S表示小数位数
--NUMBER(P)表示一个整数
--NUMBER(6,2)表示整数最大为4位,9999,小数最大值为2为,最大值为9999.99
--NUMBER(4)表示最大整数为9999
--CHAR类型
--表示固定长度的字符类型
--经常被定义为CHAR(n)形式,N表示占用的字节数,最大长度为2000个字节
--比如name CHAR(20)表示最多可存储20个字节的字符串,并且占用的空间是固定的20个字节
--Char(10,char)://表示最多存储20个字节
--每个英文字符占用一个字节,每个中文字符按编码不同,占被2-4被
--VARCHAR()类型-用法同CHAR
--VARCHAR2类型,它表示变长的字符类型
--定义的格式VARCHAR(20):表示最多可存储20个字节,根据所存数据的长度,占用空间是变化的,最大占用20
--Date类型:
--用于定义日期时间的数据
--长度是7个字节
--默认格式为DO-MON-R,比如 11-APR-15;
--Long类型:varchar的加长版最大存储20G字符串数据
--Clob类型,存储定长或变长字符串,最多能答4GB的字符串数据
--每个表只能有一个Long型,该字段不能作为主键,不能建立索引,不能出现在查询语句中
--普通的字符串建议用varchar2,如果数据比较大,建议用CLOB类型
select ename,sal from emp;
--字符串函数
--concat(char1,char2):返回两个字符串连接后的结果
--等价操作:连接操作符‘||’
select concat(concat(ename, ':'), sal) name_sal from emp; --name_sal为别名,也可在前加as
--适合多个字符串的连接,更加直观,可读性强
select ename||':'||sal from emp;
--length():返回字符串的长度
--length(char):用于返回字符串的长度
--如果该字符串是用char类型定义返回的是定义的长度(除了返回字符串的长度后面还要用空格补上达到定义的长度)
--如果该字符串使用varchar2定义返回的是字符串的长度
select ename,length(ename) from emp;
--UPPER,LOWER,Initcap:大小写转换函数,用来转换字符的大小写
--UPPER(CHAR) 用来将字符转换为大写形式
--LOWER(CHAR):用来将字符转换为小写形式
--Initcap(CHAR):用于将字符转换为每个单词首字母大写
--dual是伪表
select UPPER('hello world'),Lower('HELLO WORLD'),INITCAP('the soap') from dual;
--TRIM,LTRIM,RTRIM:截去子串
--trim(c2 from c1):从c1前后两端截去c2,如果c2是空格,就截去空格,如果不是,就截去c2,如果c2不存在,就截去
--c1两端的空格
--ltrim(c1[,c2]):从C1左边截去c2
--rtrim(c1[,c2]):从c1右边截去c2
select trim('e' from 'eliete') as t1,
ltrim('elite','e') as t2,
rtrim('elite','e') as t3
from dual;
--trim经常用来去除字符串两端的空格
--LPAD,RPAD:补位函数,用于在字符串char1左端或右端用char2补足到n位,char2字符串可以重复多次
--LPAD(char1,n,char2):左补位函数
--RPAD(char1,n,char2):右补位函数
select ename,lpad(sal, 6,'$') from emp;
--SUBSTR:用于返回字符串的子串,返回char中从m位中取n个字符
--如果m=0从首字母开始
--如果m为负数,从尾部开始
--如果没有设置n,或者n的长度超过了n的长度,则取到字符串的末尾
--字符串首位计数从1开始
select substr('think in java',1,6) from dual;
--INSTR
--INSTR(CHAR 1,CHAR2):返回字符串char2在char1中的位置
select instr('I LOVE YOU','LOVE') from dual;
--数值类型
--NUMBER(P,S):P代表总位数,取值1-38位
--NUMBER(P):P代表总位数,1-38位
--数值类型的函数
--ROUND(n[,m]):用于四舍五入
--参数中n可以是任何数字,也即是被处理的函数
--m必须为整数
--m为整数则四舍五入到小数点后m位
--m为0则四舍五入到整数位
--m为负数,则四舍五入到小数点前的m位
--若m缺省,则默认为0
select round(45.6789) from dual;
select round(45.6789,2) from dual;
select round(45.6789,-1) from dual;
select round(45.6789,-2) from dual;
--TRUNC(N[,M]):用于截取
--N和M的定义和Round(N[,M])相同,不同的是功能上按照截取的方式来处理数字n
select trunc(45.6789) from dual;
select trunc(45.6789,2) from dual;
select trunc(45.6789,-1) from dual;
select trunc(45.6789,-2) from dual;
--MOD(M,N)返回m除以n返回的余数
--若n为0,则直接返回m
select ename,mod(sal,100) from emp;
--CEIl和FLOOR()
--CEIL(M) 大于或等于该数最小整数
select CEIL(45.789) from dual;
--FLOOR(M)返回小于或等于该数的最大整数
select floor(45.789) from dual;
--Date类型
--oracle中的日期类型,用来保存日期和时间
--Date:表示的日期范围公元前4712年1月1日到公元9999年12月31日
--第一个字节:世纪
--第二个字节:年
--第三个字节:月
--第四个字节:日
--第五个字节:时
--第六个字节:分
--第七个字节:秒
--timestamp:orcale常用的日期类型
--和Date类型的区别:不仅可以保存日期和时间,还能保存小数秒,最高精确到纳秒(ns)
--在数据库中采用7个或11个字节存储
--第一到第七个字节和Date效果一样,第八到十一个字节采用4个字节存储纳秒,内部运算的类型为整型。
--SYSDATE:本质是orcale的内部函数,返回的是系统当前时间,精确到秒,默认显示格式 DD-MON-RR
select sysdate from dual;
--SYSTIMESTAMP:本质是orcale的内部函数,返回的是系统当前日期和时间,精确到毫秒,
select systimestamp from dual;
--日期转换函数
--to_Date(char(,fmt(,nlsparams))):将字符串按照定制的格式转换为日期类型
--char:要转换的字符串
--fmt:格式
--指定日期语言
--需求:查询2002年后入职的员工
select ename,hiredate from emp where hiredate>to_date('1986-01-01','YYYY-MM-DD');
--常见的日期格式
--YY 2位数字的年份
--YYYY 4为数字的年份
--MM 2位数字的月份
--MON 简拼的月份
--MONTH 全拼的月份
--DD 2位数字的天
--DY 周几的缩写
--DAY 周几的全拼
--HH24 24小时制
--MI 显示分钟
--SS 显示秒
--to_char():将其他类型的数据转换为字符串
--to_char(date,fmt):将指定的日期类型数据date按照指定的格式数组字符串
select ename,hiredate,to_char(hiredate,'YYYY"/"MM"/"DD') from emp;
--空值操作
--null即空值
--在数据库中任何类型的字段均可取空值为null
drop table student;
create table student{
id number(4),
name char(20),
gender char(1);
}
--隐式插入null值
insert into student(id,name)values(9528,'旺财');
--显示插入null值
insert into student(id,name,gender)values(9527,'葫芦娃',null);
--null值的条件查询
select name from student where gender is null;
--空值函数
--NVL(x1,x2):将null值转化为非null值
--NVL:将null值转换为非null值
--select sal+comm from emp; //错误
--x1和x2的类型必须是一致的
select ename,sal,comm,sal+NVL(comm,0) totalSalary from emp;
--NVL2(X1,X2,X3):和NVL功能类似,将null值换成非null值
--NVL2用来判断x1是否是Null值,如果是返回x3,不是返回x2;
--文件存储的缺点:
--1.缺乏对数据的管理,并且数据不便修改
--2.不利于数据的分析和共享
--3.数据量巨大,大量的数据不能保存在文件中。
--数据库(DataBase)简称DB,是按照数据结构来组织,存储和管理数据的仓库
--数据库管理系统(DataBase Management System):简称DBMS,是数据库的管理软件
--常见的数据库:
--关系型数据库:(关系:描述两个元素间的关联和对应关系)
--主流的关系型数据库
--oracle(甲骨文)
--Mysql(sun公司收购,orale收购sun公司,5.6)
--DB2(IBM)
--SqlServer(微软)
--Sybase(Sybase,目前被SAP收购)
--表(Table):表示二维的,包含行和列,表的行是横排的(ROW)也叫做记录(Record);表的竖排(Column),是纵列数据库,也被称为字段(Filed)
--一个关系型数据库是由多个数据表组成的,数据库的基本存储结构是数据表,表和表之间是有关联的
--结构化查询语言():SQL是在关系型数据库上执行数据操作,检索,维护的标准语言,可以用来查询数据,操作数据,定义数据,控制数据
--包含以下5种
--数据定义语言(DDL):Data Definition Language
--数据操作语言(DML):Data Manipulation Language
--事物控制语言(TCL):Transation Control Language
--数据查询语言(DQL):Data Query Language
--数据控制语言(DCL):Data Control Language
--在数据库中,大小写不敏感
--1.数据定义语言(DDL):
--用于建立,修改,删除数据库对象
--包括:
--careate:创建表或其他对象的结构
--DESC:查看表结构
--alter:修改表或其他对象的结构
--add:添加新字段在表的最后,不能添加到中间
--drop,drop()跟要删除的字段名
--moditify:修改,若表中有数据,类型尽量不要做修改,而且长度最后变长不要变短
--drop:删除表及其他对象的结构
--代表删除该表中的数据及结构
--truncate:删除表数据,保留表结构
create table Student(
name varchar2(10) not null,
age number(4),
birthday Date
);
alter table Student add (gender char(1));
alter table Student drop(birthday);
alter table Student modify(gender char(1) default 'M');
desc Student;
RENAME STUDENT TO NEWsTUDENT;
desc NEWsTudent;
drop TABLE NEWsTUDENT;
truncate table STudent;
--2.数据操作语言(DML):Data Manipulation Language
--用于改变数据表中的数据,和事物有关,执行完成后需要经过事物控制语句(TCL)提交后才真正的将数据运用到数据表中
--包含以下三种
--insert:将数据插入到数据表中
--update:更新数据表中已存在的数据
--delete:删除数据表中的数据
--3.事物控制语言(TCL):Transation Control Language
--用于维护数据一致性的语句
--包括
--commit:提交,确认以及进行的数据改变
--rollback:回滚,取消以及进行的数据改变
inse
ba2e
rt into student(name,age,gender) values('葫芦娃',18,'F')
insert into student(name,age) values('凹凸曼',20);
--插入语句时,若不指定字段,则是全字段
insert into student values('天使',17,'F');
rollback;
select *from student;
commit;
update student set age=21 where name='凹凸曼';
delete from student where name = '葫芦娃';
--4.数据查询语言(DQL):Data Query Language
--用来查询所需要的数据
--select语句
select age from student where name='凹凸曼';
--5.数据控制语言(DCL):Data Control Language
--用于执行权限的授予和收回的操作
-- 包括
--grant:授予,用于给用户或角色授予权限
--revoke:用于收回用户或角色已有的权限
--create user:创建用户
--default语句:给列指定默认值
--not null:是一种约束条件,用于确保该字段不能为空
--默认情况下,任何列都可以为空
--当某个字段给设置了非空约束,那么该字段就必须存在有效值
--当执行插入操作时,必须提供这个列的数据
--当执行更新操作时,不能设置该值为空
drop table newstudent;
drop table student;
insert into student(name,age) values('聪聪',12);
update student set name='小葱' where age=12;
--Number类型
--表示数字类型,被定义为NUMBER(P,S)形式,P表示数字总位数,S表示小数位数
--NUMBER(P)表示一个整数
--NUMBER(6,2)表示整数最大为4位,9999,小数最大值为2为,最大值为9999.99
--NUMBER(4)表示最大整数为9999
--CHAR类型
--表示固定长度的字符类型
--经常被定义为CHAR(n)形式,N表示占用的字节数,最大长度为2000个字节
--比如name CHAR(20)表示最多可存储20个字节的字符串,并且占用的空间是固定的20个字节
--Char(10,char)://表示最多存储20个字节
--每个英文字符占用一个字节,每个中文字符按编码不同,占被2-4被
--VARCHAR()类型-用法同CHAR
--VARCHAR2类型,它表示变长的字符类型
--定义的格式VARCHAR(20):表示最多可存储20个字节,根据所存数据的长度,占用空间是变化的,最大占用20
--Date类型:
--用于定义日期时间的数据
--长度是7个字节
--默认格式为DO-MON-R,比如 11-APR-15;
--Long类型:varchar的加长版最大存储20G字符串数据
--Clob类型,存储定长或变长字符串,最多能答4GB的字符串数据
--每个表只能有一个Long型,该字段不能作为主键,不能建立索引,不能出现在查询语句中
--普通的字符串建议用varchar2,如果数据比较大,建议用CLOB类型
select ename,sal from emp;
--字符串函数
--concat(char1,char2):返回两个字符串连接后的结果
--等价操作:连接操作符‘||’
select concat(concat(ename, ':'), sal) name_sal from emp; --name_sal为别名,也可在前加as
--适合多个字符串的连接,更加直观,可读性强
select ename||':'||sal from emp;
--length():返回字符串的长度
--length(char):用于返回字符串的长度
--如果该字符串是用char类型定义返回的是定义的长度(除了返回字符串的长度后面还要用空格补上达到定义的长度)
--如果该字符串使用varchar2定义返回的是字符串的长度
select ename,length(ename) from emp;
--UPPER,LOWER,Initcap:大小写转换函数,用来转换字符的大小写
--UPPER(CHAR) 用来将字符转换为大写形式
--LOWER(CHAR):用来将字符转换为小写形式
--Initcap(CHAR):用于将字符转换为每个单词首字母大写
--dual是伪表
select UPPER('hello world'),Lower('HELLO WORLD'),INITCAP('the soap') from dual;
--TRIM,LTRIM,RTRIM:截去子串
--trim(c2 from c1):从c1前后两端截去c2,如果c2是空格,就截去空格,如果不是,就截去c2,如果c2不存在,就截去
--c1两端的空格
--ltrim(c1[,c2]):从C1左边截去c2
--rtrim(c1[,c2]):从c1右边截去c2
select trim('e' from 'eliete') as t1,
ltrim('elite','e') as t2,
rtrim('elite','e') as t3
from dual;
--trim经常用来去除字符串两端的空格
--LPAD,RPAD:补位函数,用于在字符串char1左端或右端用char2补足到n位,char2字符串可以重复多次
--LPAD(char1,n,char2):左补位函数
--RPAD(char1,n,char2):右补位函数
select ename,lpad(sal, 6,'$') from emp;
--SUBSTR:用于返回字符串的子串,返回char中从m位中取n个字符
--如果m=0从首字母开始
--如果m为负数,从尾部开始
--如果没有设置n,或者n的长度超过了n的长度,则取到字符串的末尾
--字符串首位计数从1开始
select substr('think in java',1,6) from dual;
--INSTR
--INSTR(CHAR 1,CHAR2):返回字符串char2在char1中的位置
select instr('I LOVE YOU','LOVE') from dual;
--数值类型
--NUMBER(P,S):P代表总位数,取值1-38位
--NUMBER(P):P代表总位数,1-38位
--数值类型的函数
--ROUND(n[,m]):用于四舍五入
--参数中n可以是任何数字,也即是被处理的函数
--m必须为整数
--m为整数则四舍五入到小数点后m位
--m为0则四舍五入到整数位
--m为负数,则四舍五入到小数点前的m位
--若m缺省,则默认为0
select round(45.6789) from dual;
select round(45.6789,2) from dual;
select round(45.6789,-1) from dual;
select round(45.6789,-2) from dual;
--TRUNC(N[,M]):用于截取
--N和M的定义和Round(N[,M])相同,不同的是功能上按照截取的方式来处理数字n
select trunc(45.6789) from dual;
select trunc(45.6789,2) from dual;
select trunc(45.6789,-1) from dual;
select trunc(45.6789,-2) from dual;
--MOD(M,N)返回m除以n返回的余数
--若n为0,则直接返回m
select ename,mod(sal,100) from emp;
--CEIl和FLOOR()
--CEIL(M) 大于或等于该数最小整数
select CEIL(45.789) from dual;
--FLOOR(M)返回小于或等于该数的最大整数
select floor(45.789) from dual;
--Date类型
--oracle中的日期类型,用来保存日期和时间
--Date:表示的日期范围公元前4712年1月1日到公元9999年12月31日
--第一个字节:世纪
--第二个字节:年
--第三个字节:月
--第四个字节:日
--第五个字节:时
--第六个字节:分
--第七个字节:秒
--timestamp:orcale常用的日期类型
--和Date类型的区别:不仅可以保存日期和时间,还能保存小数秒,最高精确到纳秒(ns)
--在数据库中采用7个或11个字节存储
--第一到第七个字节和Date效果一样,第八到十一个字节采用4个字节存储纳秒,内部运算的类型为整型。
--SYSDATE:本质是orcale的内部函数,返回的是系统当前时间,精确到秒,默认显示格式 DD-MON-RR
select sysdate from dual;
--SYSTIMESTAMP:本质是orcale的内部函数,返回的是系统当前日期和时间,精确到毫秒,
select systimestamp from dual;
--日期转换函数
--to_Date(char(,fmt(,nlsparams))):将字符串按照定制的格式转换为日期类型
--char:要转换的字符串
--fmt:格式
--指定日期语言
--需求:查询2002年后入职的员工
select ename,hiredate from emp where hiredate>to_date('1986-01-01','YYYY-MM-DD');
--常见的日期格式
--YY 2位数字的年份
--YYYY 4为数字的年份
--MM 2位数字的月份
--MON 简拼的月份
--MONTH 全拼的月份
--DD 2位数字的天
--DY 周几的缩写
--DAY 周几的全拼
--HH24 24小时制
--MI 显示分钟
--SS 显示秒
--to_char():将其他类型的数据转换为字符串
--to_char(date,fmt):将指定的日期类型数据date按照指定的格式数组字符串
select ename,hiredate,to_char(hiredate,'YYYY"/"MM"/"DD') from emp;
--空值操作
--null即空值
--在数据库中任何类型的字段均可取空值为null
drop table student;
create table student{
id number(4),
name char(20),
gender char(1);
}
--隐式插入null值
insert into student(id,name)values(9528,'旺财');
--显示插入null值
insert into student(id,name,gender)values(9527,'葫芦娃',null);
--null值的条件查询
select name from student where gender is null;
--空值函数
--NVL(x1,x2):将null值转化为非null值
--NVL:将null值转换为非null值
--select sal+comm from emp; //错误
--x1和x2的类型必须是一致的
select ename,sal,comm,sal+NVL(comm,0) totalSalary from emp;
--NVL2(X1,X2,X3):和NVL功能类似,将null值换成非null值
--NVL2用来判断x1是否是Null值,如果是返回x3,不是返回x2;
相关文章推荐
- 15个初学者必看的基础SQL查询语句
- 15个初学者必看的基础SQL查询语句
- MySql(4)------SQL基础之DML(Data Manipulation Language)下的查询(select)语句
- 15个初学者必看的基础SQL查询语句
- SQL查询语句的书写要点(基础二、函数)(未完成,先不要看,没有实质内容)
- 15个初学者必看的基础SQL查询语句
- SQL查询语句的书写要点(基础三、子句)(未完成,先不要看,没有实质内容)
- 15个初学者必看的基础SQL查询语句
- 表的记录查询(基础sql语句)
- sql基础查询语句
- 笔记:SQL语句基础操作之查询结果,动态改变结果
- SQL 基础之子查询、多表插入、merge 语句、跟踪一段时间数据变化(二十)
- 关于mysql查询语句基础SQL
- 整理的oracle实现的基础sql语句查询
- 15个初学者必看的基础SQL查询语句
- sql基础查询语句运用
- 15个初学者必看的基础SQL查询语句
- 15个初学者必看的基础SQL查询语句
- Unity复习之SQL语句基础查询
- oracle 的sql语句基础查询