SQL学习笔记day01

一.引言

1.为什么要学习数据库?(对数据进行持久化(persistence)存储)

-变量,数组,对象,集合

缺点:不能长久保存数据

-文件,通过io读写

缺点:无法控制并发,效率低

-数据库解决上述问题

存储大量数据,长久保存,支持并发,数据安全,访问简单

2.数据库的分类

-关系型数据库:Oracle | DB2 | MySql |SqlSever

-对象型数据库: Object Database

-非关系型数据库:Redis | mongDB

二.数据库的安装

二.Oracle数据的安装

计算名配置:C:oraclexeapporacleproduct10.2.0serverNETWORKADMIN

OracleServiceXE:Oracle数据库的核心服务

OracleXETNSListener:Oracle数据库的对外服务

三.Oracle数据库的相关概念

  • Oracle数据库:关系型数据库管理系统---RDBMS

  • 数据库:存储和管理数据(database)--DB

  • 用户:hr

  • 表:table,真正存储和管理数据

  • 行: row,代表数据库的一条数据,对象(Object),实体(entity),记录(record)

  • 列:column,代表所有数据的一个属性,单元格(一个对象的一个属性),字段(Field),键(Key)

  • 主键:primary key,一行数据的唯一标识

  • 外键:foreign Key,多张表之间的联系

四.基本查询

1.简单查询

--(双短杠表示单行注释)
/**/(多行注释)
--查询表内所有信息
select * from employees;
/*
常见错误
表或者视图不存在:表名写错了
未找到要求的FROM关键字,无效的sql语句:查询结构不完整
*/
/*
不建议使用*(星号)
  使用星号的时候
1.项匹配成每一列的名字,然后再查询
2.会找出无用数据,降低查询效率
3.可读性比较差
*/
--开发使用查询所有列名称
select Employee_id,First_name,Last_name,Email,phone_number from Employees;
--查询部分列信息
--查询工号 名字 工资信息
select employee_id,first_name,salary from employees;
--对列数据进行运算 + -
select employee_id,salary*12 from employees;
--给列起别名 (as可以省略 文字之间有空格需要用双引号引起来)
select employee_id as 编号,salary as 工资 from employees;
select salary "工 资" from employees
--链接多列 ||
--查询员工全名
select first_name||'.'||last_name from employees;
注:如果需要连接字面值(字符常量),需要使用‘字符串常量’

2.排序

--基本语法
select...from 表名 order by 排序条件
--按照工资降序查询员工信息
select * from employees order by salary desc;
注解:asc(默认)升序排序 desc降序排序
--按照工资升序查询员工信息,工资相同按照入职时间排序
select * from employees order by salary,hire_datee;
注解:如果order by后有两个字段,表示如果按照第一个个字段排序完成后,第一个字段相同
的情况下,按照第二个字段进行排

3.条件查询

  基础语法 

select ...from...where...
原理:将基表加入缓存,然后使用基表的么欸一条数据与过滤做运算,满足显示,不满足删除

  比较查询 >< >= <= != =

--查询工号为105的员工信息
select * from employees  where employee_id=105;

  多条件查询and or

--查询部门编号为80且工资大于12000的员工信息
select * from employees where department_id =80 and salary>12000;
--查询部门编号为60,80,90
select * from employees department_id =60 or department_id =80 or department_id =90;

  空值判断 is [not] null

--查询部门经理为空的员工信息
select * from mployees where manager_id is null;
--提成不为空的员工信息
select * from employees where commission_pct is not null

   区间处理[not] between and 闭区间

--查询工资大于8000小于10000的员工 
select * from employees where salary between 8000 and 10000;

  枚举查询[not] in

--查询部门编号为60,80,90的员工
select * from employees where salary in(60,80,90);

  模糊查询[not]like

--查询姓氏以"K"的员工信息
--%: 表示任意字符0—n
select *from employees where last_name like 'K%';
--  _:表示单个字符
select * from employees where last_name like '___k';

  分支查询

--显示数据工资大于10000为高收入,工资>6000为中等收入,工资<=6000为低等工资
select  employee_id,first_name,salary,
case 
    when
from employees;
以粮为纲全面发展
原文地址:https://www.cnblogs.com/alexliuf/p/13449715.html