来段前言
笔者年前至今因工作调整开始接触SQL语言以及数据库,鉴于简道云数据工厂的可视化节点操作与SQL的殊途同归之效,特此想写几篇关于数据工厂和SQL查询之间的那些事,一来帮助自己熟悉记录这段时间SQL语言的学习,二来通过SQL语言的编写和对数据库表格的了解反过来思考简道云表单设计和数据工厂建模,三来通过数据工厂和SQL语言的对应给读者一些参考能够对于数据工厂建模有不一样的认识。本篇将主要介绍本系列所需的表格数据,以及数据工厂的基础知识和SQL查询的基础知识。这些表格的建立和表格所包含的数据以及不同表格之间的关联关系或许对于以后简道云的表单设计建模会有所反思。
基础表介绍
本系列所采用的的数据为MySQL数据库原带的数据,共有16个表。表数据涉及的业务是十几年前流行的碟片租赁业务。数据库管理工具用的是navicat。
这一部分内容建议熟练了解,便于后面我们的建模讲解和业务分析。下面将详细介绍下各个表相关的数据以及字段、字段数据类型。
- actor——演员表,存储的是所有碟片相关的电影里的演员的信息
- actor_id。演员id。数值型。主键
- first_name。演员名。文本型。
- last_name。演员姓。文本型。
- last_update。数据最后更新时间(所有表相同,后面不赘述了)。日期型。
address——地址信息
- address_id。地址id。数值型。主键。
- address。地址。文本型。
- address2。地址2。文本型
- district。区域。文本型。
- city_id。城市id。数值型。外键。
- postal_code。邮编。文本型
- phone。(不懂为何会有地址电话)。文本型
- location。定位(经纬度)。文本字段(应该为定位字段,但定位字段无法导入,只能导入为文本)
- last_update。同上
category——电影种类信息
- category_id。电影分类名称id。数值型。主键。
- name。分类名称。文本型。
- last_update。同上
city——城市信息
- city_id。城市id。数值型。主键
- city。城市名称。文本型
- country_id。所属国家id。文本型。外键
- last_update。同上
country——国家信息
- country_id。国家id。数值型。主键
- country。国家名称。文本型
- last_update。同上
customer——会员信息表
- customer_id。会员id。数值型。主键
- store_id。店面id。数值型。外键
- first_name。名字。文本型
- last_name。姓。文本型
- email。邮箱。文本型
- address_id。地址id。数值型。外键
- active。是否活跃(可能是这个意思)。数值型
- create_date。会员创建时间。日期型。
- last_update。同上
film——电影信息表
- film_id。电影id。数值型。主键
- title。电影名称。文本型。
- description。电影描述。长文本型。
- release_year。电影发行年份。文本型
- language_id。电影语言id。数值型。外键
- original_language_id。
- rental_duration。租赁周期。数值型
- rental_rate。租金。数值型
- length。电影时长。数值型
- replacement_cost。重新购买成本。数值型
- rating。电影分级。文本型
- special_features。影片特点
- last_update。同上
film_actor——电影和演员的对应表
- actor_id。演员id。数值型。外键
- film_id。电影id。数值型。外键
- last_update。同上
film_category——电影类型对应表
- film_id。电影id。数值型。外键
- category_id。类型id。数值型。外键
- last_update。同上
film_text——电影描述(这部分信息表7中已经包含了,不明白为何还单独有一张表)
- film_id。电影id。数值型。外键
- title。电影名称。文本型。
- description。电影描述。长文本
inventory——电影清单
- inventory_id。清单id。数值型。主键
- film_id。电影id。数值型。外键
- store_id。店面id。数值型。外键
- last_update。同上
language——语言表
- language_id。语言id。数值型。主键
- name。语言名称。文本型
- last_update。同上
payment——支付明细表
- payment_id。支付id。数值型。主键
- customer_id。会员id。数值型。外键
- staff_id。职员id。数值型。外键
- rental_id。租赁id。数值型。外键
- amount。租金。数值型。
- payment_date。支付日期。日期型
- last_update。同上
rental——租赁明细表
- rental_id。租赁id。数值型。主键
- rental_date。租赁日期。日期型
- inventory_id。清单id。数值型。外键
- customer_id。会员id。数值型。外键
- return_date。归还日期。日期型
- staff_id。职员id。数值型。外键
- last_update。同上
staff——职员信息表
- staff_id。职员id。数值型。主键
- first_name。名字。文本
- last_name。姓。文本
- address_id。地址id。数值型。外键
- picture。照片。图片型
- email。邮箱。文本型。
- store_id。店面id。数值型。外键
- active。是否活跃(?)。数值型
- username。用户名。文本型。(登录店面租赁系统的账户名吧)
- password。密码。文本型
- last_update。同上
store——租赁店面信息表
- store_id。店面id。数值型。主键
- manager_staff_id。店面经理id。数值型。外键
- address_id。地址id。数值型。外键
- last_update
至此,我们这个小型的电影碟片租赁系统的基础表相关信息就介绍完毕了。
我们在看这个小系统所有数据表的结构字段时,也就能了解了对于这样一个系统涉及的所有数据该如何为它设计好基础表单去存储数据,如何设计表间关系,保证我们业务数据的完整性。当然对于这样的关系型数据库的设计效果,目前的简道云架构还不能很好的支持。
简单说说数据库表与简道云的关系
数据库里的表对应着简道云的表单,都是存储数据的单位。
数据库表里的字段对应着简道云的字段。
在上面的介绍里,我们标注了很多主键、外键,主键这个词语放到简道云的
系统里就是指代
表单里的流水号、编码等能够唯一表示一条数据的字段值(也许是多个字段的联合值),而外键就指的是通过数据关联带入到填写表单里的数据关联的主键,它是主键所在的表与当期表建立关联的桥梁。
不管是简道云的数据工厂还是数据库里的SQL语句,都是通过表之间的主键和外键关联来实现多个表的连接。
最简单的SQL查询
SQL查询的基本结构是
select 字段 from 表--然后是各种字句left join on /right join on / inner join on --简道云没有全外连接咱们也就不提了where --比较运算符 , between and , in , like , not like ,group byhaving order by asc/descunion / union all
那么我们就先来看看最最最简单的查询
SQL操作
select * from actor --从表里查询所有字段
简
道
云操作这句查询对应简道云的里的操作就是如下图所示操作。把表里所有字段全部取出来。
SQL操作当然如果是提取部分字段的话,那就是
select actor_id,first_name,last_namefrom actor
简
道
云操作数据工厂里的对应操作就是点选需要提取的字段就可以了
字符连接
那么我们表里的firstname和lastname是分开的,在实际展示过程中,我们想要把他们连接起来展示怎么办呢?
SQL操作在mysql里用concat函数对字段进行连接,sql server里可以用"+",oracle里可以用"||"进行字段字符连接。
select actor_id,CONCAT(first_name,' ',last_name)from actor
简道云操作呃,数据工厂里暂时不支持文本字段操作,我们只能在表单里利用辅助字段来完成这个操作。对,没错说的就是那个让人头疼、爱恨交织的“辅助字段”!!!虽然firstname和lastname连在一起了,但是这个字段名实在太长了,我们如何给这个字段名字重命名为一个简短的“name”呢?
SQL操作
select actor_id,CONCAT(first_name,' ',last_name) as namefrom actor--我们利用as来对字段进行重命名,当然表的重命名也是如此。--as这个关键字是可以取消,如下select actor_id,CONCAT(first_name,' ',last_name) namefrom actor
简道云操作
在创建辅助字段时设置为需要的字段名称即可。
新增字段
如果我们要新增一个表里没有的字段如何操作呢?
SQL操作
select actor_id,CONCAT(first_name,' ',last_name) as name,'哈哈' hfrom actor
简道云操作
如果是非数值字段,那么我们只能通过表单里添加或者是通过添加数值字段,然后通过横向连接来获得他的值。在数据分组里会需要用到这个操作。后期我们会专门讲解一下。
我们的SQL与简道云可视化操作第一讲就暂时到此结束了。后面我们将分别讲解一下sql的不同子句在简道云数据工厂里的可视化操作以及一些分析模型的设计。
一切皆是信息,万物源自比特!