数据表

mysql创建数据表的三种方式

最后都变了- 提交于 2020-01-10 15:21:24
目录 1. 常规 create table 方式 2. create table2 like table1 方式 3. 根据查询 table1 的结果集来创建表 table2 方式 1. 常规 create table 方式 CREATE TABLE [ if not exists ] table_name ( column_name1 data_type ( size ) , column_name2 data_type ( size ) , column_name3 data_type ( size ) , . . . . ) ; 数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型: 数据类型 描述 integer(size)、int(size)、smallint(size) tinyint(size) 仅容纳整数。在括号内规定数字的最大位数。 decimal(size,d)、numeric(size,d) 容纳带有小数的数字。 “size” 规定数字的最大位数。“d” 规定小数点右侧的最大位数。 char(size) 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。 在括号中规定字符串的长度。 varchar(size) 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。 在括号中规定字符串的最大长度。 date

事实表 和 维度表

谁都会走 提交于 2020-01-10 12:23:59
维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进行分析,或按区域来分析. 这样的按..分析就构成一个维度。前面的示例就可以有两个维度:类型和区域。另外每个维度还可以有子维度(称为属性),例如类别可以有子类型,产品名等属性。 下面是两个常见的维度表结构: 产品维度表:Prod_id, Product_Name, Category, Color, Size, Price 时间维度表:TimeKey, Season, Year, Month, Date 而事实表是数据聚合后依据某个维度生成的结果表。它的结构示例如下: 销售事实表:Prod_id(引用产品维度表), TimeKey(引用时间维度表), SalesAmount(销售总量,以货币计), Unit(销售量) 上面的这些表就是存在于数据仓库中的。从这里可以看出它有几个特点: 1. 维度表的冗余很大,主要是因为维度一般不大(相对于事实表来说的),而维度表的冗余可以使事实表节省很多空间。 2. 事实表一般都很大,如果以普通方式查询的话,得到结果一般发的时间都不是我们可以接受的。所以它一般要进行一些特殊处理。如SQL Server 2005就会对事实表进行如预生成处理等。 3. 维度表的主键一般都取整型值的标志列类型,这样也是为了节省事实表的存储空间。 事实表和维度表的分界线

SqlServer树型数据表重新整理排序语句

孤街浪徒 提交于 2020-01-09 17:05:03
Declare @editTableName varchar(50)--表名 Declare @mainFieldName varchar(50)--主键字段名称 Declare @fjIdFieldName varchar(50)--上级字段名称 Declare @sortFieldName varchar(50)--排序字段名称 Declare @updatedString nvarchar(max) Declare @updateString1 varchar(4000) Declare @updateString2 varchar(4000) Select @editTableName='SystemClass' Select @mainFieldName='Id' Select @fjIdFieldName='ParentId' Select @sortFieldName='SortNumber' Select @updateString1='(Select t1.['+@mainFieldName+'],ROW_NUMBER() OVER(ORDER BY t1.['+@sortFieldName+'] Asc,t1.['+@mainFieldName+'] ASC) as newSortNumber from ['+@editTableName+'] t1 where

hibernate3.0发现在海量数据表中查询很慢 ,不在于问题,在于解决问题的思路啊,学习了

女生的网名这么多〃 提交于 2020-01-09 01:25:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 使用hibernate3.0,发现在海量数据表中查询很慢 比如一张表,有670万条数据左右, 经过我的测试 使用Expression.eq做条件 当字段类型为int时,字段没有建索引,查询很慢,建了索引,查询就很快 使用Expression.eq Expression.le做条件 当字段类型为string时,字段加了索引,查询需要5到6分钟,字段不加索引,估计没法查 使用Expression.sql做条件 字段没有建索引,查询很慢,建了索引,不管字段是什么类型,查询都很快 难道在面对海量数据查询时,就不能用Expression.eq Expression.le方式加条件,只能用sql方式??为什么?? 补充: 看了后面的回帖,我先感谢大部分兄弟对我的问题表示关注,为此问题寻求答案表示感谢! 然而对1、2个恶语相伤的朋友表示无语,我不是在抱怨什么,我只是在寻求问题的根源和解决办法,难道每个上来发帖的人都是技术高手,没有问题?? 对此问题 1、有些兄弟说,是不是没建索引,我觉得帖写的挺明白的,我对有无建索引都有描述,而且我当然也明白大量数据中查询当然要建索引的道理 2、返回的数据是否也是海量的,这个怪我没说清楚,我设置的查询条件,返回的数据只有不到20条左右,所以不存在构建海量对象照成的速度慢问题

Mysql 数据库的基本操作

a 夏天 提交于 2020-01-08 23:55:43
文章目录 一、数据库的概述 1.1、关系型数据库 1.2、非关系型数据库 二、数据库的基本操作命令 2.1、查看数据库结构 三、SQL语句 3.1、SQL语言分类 3.2、DDL语句 3.3、DML语句 3.4、DQL语句 一、数据库的概述 数据库作用:数据持久化保存,高可靠,高可用,数据的快速提取。 数据库存储类型:关系型数据库 非关系型数据库。 1.1、关系型数据库 其存储结构是二维表格,反映事物及其联系的数据是以表格形式保存的 在每个二维表中,每一行称为一条记录,用来描述一个对象的信息,每一列称为一个字段,用来描述对象的一个属性。 关系型数据库: MySQL(oracle公司),sql server(微软公司),access(微软公司),oracle,db2(IBM公司),sybase(sybase公司) 1.2、非关系型数据库 非关系型数据库存储方式 键-值方式(key–value),以键为依据存储、删、改数据 列存储(Column-oriented), 将相关的数据存储在列族中 文档的方式,数据库由-系列数据项组成,每个数据项都 有名称与对应的值 非关系型数据库(统称NOSQL): redis(内存数据库/缓存数据库): K-V键值对 key-value 变量 名-值 memcache (内存数据库/缓存数据库) :K-V键值对 非关系型数据库的优点:

MySQL分区分表

[亡魂溺海] 提交于 2020-01-08 23:53:24
博文大纲: 1、为什么要分表? 2、MySQL分表 3、利用merge存储引擎实现分表 4、MySQL分区 1、为什么要分表? 数据库数据越来越大,随之而来的是单个表中数据太多。以至于查询速度变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈。 mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。当出现这种情况时,我们可以考虑分表或分区。 2、MySQL分表 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的表名,然后去操作它。 将单个数据库表进行拆分,拆分成多个数据表,然后用户访问的时候,根据一定的算法(如用hash的方式,也可以用求余(取模)的方式),让用户访问不同的表,这样数据分散到多个数据表中,减少了单个数据表的访问压力。提升了数据库访问性能。分表的目的就在于此,减小数据库的负担,缩短查询时间。 Mysql分表分为垂直切分和水平切分,具体区别如下: 垂直切分 是指数据表列的拆分,把一张列比较多的表拆分为多张表

查看mysql进程--show processlist

有些话、适合烂在心里 提交于 2020-01-08 21:09:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 用 show processlist 查看当前运行状态。 mysql> show processlist; 下面介绍下各列的含义: id ,线程编号,当要关闭某一进程时执行 kill id ; user 列,显示当前进程用户; host 列,显示当前进程是从哪个 IP 地址和哪个端口号发出来的; db 列,显示当前这个进程目前连接的是哪个数据库; command 列,显示当前连接进程所执行命令的类型或状态,一般就是休眠( sleep ),查询( query ),连接 ( connect ); time 列,这个状态持续的时间,单位是秒; state 列,显示使用当前连接 sql 语句的状态,如查询语句,可能中间需要经历 copying to tmp table , Sorting result , Sending data 等状态才可以完 成; info 列,显示这个连接所执行的 sql 语句,因为长度有限,所以长的 sql 语句就显示不全,但是一个判断问题语句的重要依据。 mysql 列出 state 的状态主要有以下几种: Checking table 正在检查数据表(这是自动的)。 Closing tables 正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个 很快的操作

mysql中update的low_priority

别说谁变了你拦得住时间么 提交于 2020-01-08 20:43:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> low_priority,低优先级 UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,... mysql中update用low_priority让update不锁定表 MySQL允许你改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客户端就不会由于锁定而等待很长时间。 改变优先级还可以确保特定类型的查询被处理得更快。 这 一部分讲解MySQL的默认的调度策略和可以用来影响这些策略的选项。它还谈到了并发性插入操作的使用和存储引擎锁定层次对客户端的并发性的影响。为了讨 论的方便,我们把执行检索(SELECT)的客户端称为"读取者",把执行修改操作(DELETE、INSERT、REPLACE或UPDATE)的客户 端称为"写入者"。 (在不要求实时的情况下,写入可以降低跟新插入操作的优先级,确保读的速度。当然,也有更好的方法来完成这个目的,主从,中间缓存,都可以。) MySQL的默认的调度策略可用总结如下: · 写入操作优先于读取操作。 · 对某张数据表的写入操作某一时刻只能发生一次,写入请求按照它们到达的次序来处理。 · 对某张数据表的多个读取操作可以同时地进行。

一些有关数据库的简单定义

跟風遠走 提交于 2020-01-08 17:34:45
第一次写博客,奥利给! 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库数据库。通常分为层次式数据库、网络式数据库和关系式数据库三种。 而不同的数据库是按不同的数据结构来联系和组织的。最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。 每个数据库中都有一个或不同多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。 相对于文件存储来说,数据库的读写速度相对较快,更加便于我们的使用。 我们现在使用关系型数据库管理系统来存储和管理大数据量。 所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 一个关系型数据库由一个或多个表格组成。 RDBMS 即关系数据库管理系统(Relational Database Management System)的特点: 1.数据以表格的形式出现 2.每行为各种记录名称 3.每列为记录名称所对应的数据域 4.许多的行和列组成一张表单 5.若干的表单组成database 数据表(DataTable):表示内存中数据的一个表。 在关系型数据库中数据表采用二维表格来存储数据,是一种按照行与列排列的具有相关信息的逻辑组。 字段:数据表中的每一列称为一个字段,表是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计。 创建数据表时

MySQL与python交互

回眸只為那壹抹淺笑 提交于 2020-01-07 11:55:11
1. 准备数据 创建数据表 -- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 use jing_dong; -- 创建一个商品goods数据表 create table goods( id int unsigned primary key auto_increment not null, name varchar(150) not null, cate_name varchar(40) not null, brand_name varchar(40) not null, price decimal(10,3) not null default 0, is_show bit not null default 1, is_saleoff bit not null default 0 ); 插入数据 -- 向goods表中插入数据 insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default); insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default); insert into goods