• 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;
    以粮为纲全面发展
  • 相关阅读:
    Python 函数装饰器简明教程
    *arg和**kwarg的区别
    克里金插值
    C语言Hello world
    ibatis错误
    typealias
    视图
    权限分级设置
    走出浮躁的泥沼:学会享受学习过程的乐趣
    R语言 eval(quote(x)) 和 eval(x)
  • 原文地址:https://www.cnblogs.com/alexliuf/p/13449715.html
Copyright © 2020-2023  润新知