emp

python day36

假装没事ソ 提交于 2019-11-28 00:43:09
今日内容 表与表之间建关系 外键  一对多  多对多  一对一所有的信息都记录在一张表中所带来的问题 1.表的结构不清晰 2.浪费硬盘空间 3.表的扩展性极差(无法忽略的缺点) PS:类似于我们将所有的代码都写在用一个py文件内 确立表与表之间的关系,一定要换位思考(必须两方都考虑周全之后才能得出结论)以员工表和部门表为例: 先站在员工表看能否有多个员工对应一个部门 分析: 一个部门能否有多个员工 可以!!!(暂时只能确定员工单向多对一部门) 再站在部门表看能否有多个部门对应一个员工 分析: 一个员工能否属于多个部门 不可以!!!结论: 员工表和部门表之间仅仅是 单向的多对一 那么它们的表关系就是 "一对多" 表关系中没有多对一一说,只有一对多 ( 无论是多对一还是一对多都叫"一对多" ) 关于让两种表有代码层面上真正的关联,必须使用外键什么是外键? 让表与表有硬性层面上的关系foreign key 外键约束 1.在创建表的时候 必须先创建被关联表 2.插入数据的时候 也必须先插入被关联表的数据 # 建表 create table dep( id int primary key auto_increment, dep_name varchar(32), dep_desc varchar(128) ); create table emp( id int primary key

SQL查询

ⅰ亾dé卋堺 提交于 2019-11-28 00:42:46
注 : dual 是一个虚拟表,用来构成select的语法规则,它实际是不存在的 一:单行函数 •字符串处理函数:UPPER(),LOWER() ,INITCAP(),LENGTH(),SUBSTR(),REPLACE(); •数值处理函数:ROUND(),TRUNC(),MOD(); •日期处理函数:ADD_MONTHS(),MONTHS_BETWEEN(),LAST_DAY(),NEXT_DAY(); •转换函数:TO_DATE(),TO_CHAR(),TO_NUMBER(); •通用函数:NVL(),DECODE()。 1.字符串处理函数 (1).转大小写函数: •转大写函数:UPPER(字符串 | 列); •转小写函数:LOWER(字符串| 列); SELECT LOWER (ename) FROM 表名 ; //查询表里员工姓名,姓名小写显示 SELECT * FROM 表名 WHERE ename= UPPER ('inputName'); //查询输入的员工姓名,转大写 (2).获取字符串长度: •长度函数:数字 LENGTH(字符串 | 列); SELECT * FROM emp WHERE LENGTH (ename) = 5 ; //查询所有姓名长度为5的雇员信息 (3).字符串截取; SUBSTR(汉译:字符串的子串,就是截取呀) •截取函数:字符串

test1

穿精又带淫゛_ 提交于 2019-11-28 00:15:18
---视图 ---视图的概念:视图就是提供一个查询的窗口,所有数据来自于原表。 ---查询语句创建表 create table emp as select * from scott.emp; select * from emp; ---创建视图【必须有dba权限】 create view v_emp as select ename, job from emp; ---查询视图 select * from v_emp; ---修改视图[不推荐] update v_emp set job='CLERK' where ename='ALLEN'; commit; ---创建只读视图 create view v_emp1 as select ename, job from emp with read only; ---视图的作用? ---第一:视图可以屏蔽掉一些敏感字段。 ---第二:保证总部和分部数据及时统一。 ---索引 --索引的概念:索引就是在表的列上构建一个二叉树 ----达到大幅度提高查询效率的目的,但是索引会影响增删改的效率。 ---单列索引 ---创建单列索引 create index idx_ename on emp(ename); ---单列索引触发规则,条件必须是索引列中的原始值。 ---单行函数,模糊查询,都会影响索引的触发。 select * from emp

hive知识点总结

时间秒杀一切 提交于 2019-11-27 20:38:52
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 Metastore (hive元数据) Hive将元数据存储在数据库中,比如mysql ,derby.Hive中的元数据包括表的名称,表的列和分区及其属性,表的数据所在的目录 Hive数据存储在HDFS,大部分的查询、计算由mapreduce完成 Hive数据仓库于数据库的异同 (1)由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言, 再无类似之处。 (2)数据存储位置。 hdfs raw local fs (3)数据格式。 分隔符 (4)数据更新。hive读多写少。Hive中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。 INSERT INTO … VALUES添加数据,使用UPDATE … SET修改数据 不支持的 HDFS 一次写入多次读取 (5) 执行。hive通过MapReduce来实现的 而数据库通常有自己的执行引擎。 (6)执行延迟。由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致Hive执行延迟高的因素是MapReduce框架 (7)可扩展性 (8)数据规模。 hive几种基本表类型

单表查询

妖精的绣舞 提交于 2019-11-27 20:34:47
目录 单表查询 完整的查询语句语法 简单查询 where关键字 group by 分组查询 order by 排序 Limit 限制显示的记录数 单表查询 完整的查询语句语法 # []为可选项 select [distinct] *|字段名|四则运算|聚合函数 from 表名 [where 条件] [group by 字段] [having 条件] [order by 条件] [limit m,n] 控制从哪里开始显示以及显示几条 以上就是书写顺序,必须按照这个顺序来书写sql语句。书写顺序并不代表执行顺序 简单查询 1.distinct是可选项,用于去除重复记录 2.as 是用来取别名,取别名as可以省略 3.可以对字段的数据进行四则运算 4.concat()字符串连接,concat_ws()可以指定连接符连接字符串 # 准备数据 create table stu(id int primary key auto_increment,name char(10),math float,english float); insert into stu(name,math,english) values("赵云",90,30),("小乔",90,60),("大乔",10,70),("李清照",100,100),("铁拐李",20,55),("小李子",20,55),("李四",59,98)

表与表之间建立关系

我们两清 提交于 2019-11-27 20:31:35
外键 前戏之一对多关系 # 定义一张部门员工表 id name gender dep_name dep_desc 1 jason male 教学部 教书育人 2 egon male 外交部 漂泊游荡 3 tank male 教学部 教书育人 4 kevin male 教学部 教书育人 5 owen female 技术部 技术能力有限部门 """ 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 """ # 上述的弊端产生原因类似于把代码全部写在一个py文件中,你应该怎么做?>>>解耦合!将上述一张表拆成员工和部门两张表! # 分析表数据之间的关系:多个用户对应一个部门,一个部门对应多个用户。禁止一个用户对应多个部门 # 如何查找表与表之间的关系 ''' 以员工和部门表为例。查找表关系需要做到换位思考(站在两边去找表关系) 先站在员工表: 找员工表的多条数据能否对应部门表的一条数据 翻译: 多个员工能否属于一个部门 可以!之后不能直接下结论,还需要站在部门表的角度再确认关系 再站在部门表: 找部门表的多条数据能否对应员工表的一条数据 翻译: 多个部门能否有同一个员工 不可以! 只有站在两边表的角度都分析过了,才能够下结论 员工表单向多对一部门表 ''' 一对多(Foreign Key) # 如何查找表与表之间的关系 """ 老师与课程表 1

表与表之间建立关系

泄露秘密 提交于 2019-11-27 20:31:11
一、表的概念与分类   主要通过外键关键字:pirmary key 来建立连系 1、表与表之间的关系可以分为三种:一对多,多对多,一对一的关系   建立表关系的原因?: 2、 针对数据量大的情况下讨论   1:表的结构不清晰(一张表中涵盖多种数据)   2:浪费硬盘空间(有重复的数据)   3:表的扩展性极差(不便于增加,修改,删除等操作) 二、表与表的关系:一对多 例如:一个公司的员工和部门之间的连系,把员工和部门分别抽离出来分析   (1)先站在员工表看能否有多个员工对应一个部门>>>一个部门能否有多个员工(可以)   (2)再站在部门表看能否有多个部门对应一个员工>>>一个员工能否属于多个部门(不可以) 结论:员工表和部门表之间的关系是“一对多”的关系(一对多或者多对一) 根据id索引来寻找匹配的内容先通过列表的形式,把一张完整的表切分出来,分析它们之间的关系多对一还是多对多就可以看出情况,换位思考! foreign key:外键约束   1、创建表的时候,必须先创建被关联的表   2、插入数据的时候,也必须先插入被关联表的数据(先后顺序不能颠倒,不然会报错!) 代码如下:   建表: # 先建被关联的表 create table dep( id int primary key auto_increment, dep_name varcher(32), dep_desc

入门MySQL——查询语法练习

[亡魂溺海] 提交于 2019-11-27 18:30:30
前言: 前面几篇文章为大家介绍了DML以及DDL语句的使用方法,本篇文章将主要讲述常用的查询语法。其实MySQL官网给出了多个示例数据库供大家实用查询,下面我们以最常用的员工示例数据库为准,详细介绍各自常用的查询语法。 1.员工示例数据库导入 官方文档员工示例数据库介绍及下载链接: https://dev.mysql.com/doc/employee/en/employees-installation.html 同样的,为了方便大家,我这里将员工库的数据库备份分享给大家,大家也可以下载我这份数据,然后再解压导入进你们本地库就可以了。 链接: https://pan.baidu.com/s/13s1OH-3DepN-rpejys76Ww 密码: 2xqx 下载解压后,直接导入即可,如链接失效可后台联系我。 如果你导入完成,就可以看到下面这6张表了,这就是我们接下来练习查询语法要用的表哦。 为了让大家对示例数据库更了解,这里给出此数据库各表之间的关系图: 简单介绍下这6张表: departments :部门表,记录的是9个部门的部门编号和部门名称。 dept_emp :部门员工表,记录各部门员工数据,员工id和部门id,起始时间和结束时间(注:9999-01-01的意思就是仍在该部门就职)。 dept_manager :部门经理表,同第二张表结构差不多,记录每个部门的每个经理的任职时期

Oracle-DQL 1- select基础

自作多情 提交于 2019-11-27 18:21:01
说明:语句中说到的“表”,以及表中有哪些“列”自行脑补......重要的是理解概念,能看懂语句代表的含义就可以了~ DQL-数据查询语句: 1.* 表示所有列 SELECT * FROM emp; 2.指定查询的列 SELECT ename,job,sal FROM emp; 3.可以在查询语句中对数据进行运算 SELECT ename,job,sal, 12*sal FROM emp; -- 对于数字类型的数据可以进行数学运算:+ - * / -- 对于日期类型的数据可以进行加减运算,表示加上或者减去天数 SELECT ename,hiredate, hiredate+30 FROM emp; -- 对于字符类型不能做数学运算 -- 空值参与运算得到的结果也为空 SELECT ename,job,sal,comm,12*(sal+ comm ) FROM emp; 4.别名 /* 列名 别名 列名 AS 别名 列名 "别名" 如果别名中保护特殊字符(空格)或者区分大小写时,使用双引号 在sql'语句中只有定义别名时才会出现双引号,其他任何地方都不会再出现双引号 */ SELECT ename mingzi,job zhiwei FROM emp; SELECT ename AS mingzi,job AS zhiwei FROM emp; SELECT ename "ming

Mysql

天大地大妈咪最大 提交于 2019-11-27 16:38:40
0、数据库基础介绍 数据库管理系统  DBMS(data base management system ),包括Oracle,mysql,SQLserver,MongoDB,db2等 数据库/仓库    DB SQL       结构化查询语言 Mysql      一种数据库软件,使用sql语言管理数据 数据库中事务的四大特性(ACID):原子性(Atomicity);一致性(Consistency);隔离性(Isolation);⑷ 持久性(Durability) SQL语句分类: 1、DQL:数据查询语句,select         (Data Query Language) 2、DML:数据操作语句,insert/delete/update  (Data Manipulation Language) 3、DDL:数据库定义语句,create/drop/alter   (Data Denifition Language) 4、TCL:事务控制语言,commit/rollback    (Trasactional Control Language) 5、DCL: 数据控制语言,grant ,revoke     (Data Control Language) 创建数据库: create database bjpowernode; 导入数据库脚本 数据库脚本:以