规范总结 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字【设计表后逐一排查】 所有表必须使用 Innodb 存储引擎,数据库和表的字符集统一使用...第二范式:需要确保数据库表中每一列都和主键相关 第三范式:不允许数据冗余 数据库命名规范 1.所有数据库对象名称必须使用小写字母并用下划线分割 表名:users,users_like-videos...数据库基本设计规范 1....通常存储于文件服务器,数据库只存储文件地址信息 数据库字段设计规范 1....【MySQL 内存临时表不支持 TEXT、BLOB 这样的大数据类型,如果查询中包含这样的数据,在排序等操作时,就不能使用内存临时表,必须使用磁盘临时表进行。
版本 flowable 6.7.2 mysql 5.7 现象 配置了自动创建或更新表结构 configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE...链接字符串需加上参数 nullCatalogMeansCurrent=true 如 configuration.setJdbcUrl("jdbc:mysql://localhost:3306/flowable_test
命名规范表名、字段名必须使用小写字母或数字,不使用英文缩写长一点没关系,最好能让别的开发见名知意主键索引名:pk字段名 唯一索引名:uk字段名 普通索引名: jdx_字段名选择合适的字段类型尽可能选择存储空间小的字段类型...优先考虑逻辑删除,而不是物理删除物理删除数据恢复困难物理删除会使主键不再连续核心业务表的数据不建议做物理删除每个表都需要的通用字段不一样的通用字段的英文不一样叫法,但是都是规范中建议的id...大表拆成小表,让他们的主键相同即可。...5个区分度不高的字段,不添加索引(性别)避免索引失效的情况(mysql的内置函数)索引过多,选用联合索引优化不使用外键关联使用外键存在性能问题、并发死锁问题、使用起来不方便等。...mysql对于存储过程、触发器等还不是很成熟,没有完善的出错记录处理,不建议使用sql编写的优化经验查询尽量不要使用select *查询的结果只要一条或者只要最大/小的一条记录,建议使用limit 1避免
本文中说到的“建”,并非单纯的建一个库,或是建一张表,而是你建好的库和表在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到的问题以及处理的方法,算是一个小小的心得,给大家分享下。...比如现在有2张表,一张新闻栏目表,一张新闻表,现在两张表需要进行关联,我想大多数人的做法肯定是在新闻表里建一个新闻栏目id,然后把新闻栏目表里的主键ID(自增)写到这个字段里,通过这样进行两表关联。 ...所以我建议两表之间关联不用主键,而是单独建一个编号的字段,我们这里可以用mysql的uuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张表要2个主键,一个物理主键(自增id...至于性能,我本地测了下基本上没差异,网上也有人做了10W条数据的测试——《实测MYSQL UUID性能》。...所以我建议,既然定义为varchar,就代表不会涉及到计算,何不干脆定义一个通用的长度,比如varchar(50),如果真要限制长度,用程序去判断,不要让数据库来限制,不然用户输了一长串,结果mysql
创建RUNOOB数据库,并设定编码集为utf8 删除数据库 删库有风险,动手需谨慎 drop database 库名; MySQL 数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段...MySQL数据表。...查看表结构 desc stu; 查看建表语句 show create table stu\G 修改表结构 格式: alter table 表名 action(更改选项); 添加字段: 添加字段:alter...AUTO_INCREMENT=1 更改表类型: ALTER TABLE 表名称 ENGINE="InnoDB" 关于表类型 MySQL数据库中的表类型一般常用两种:MyISAM和InnoDB 区别:...删除表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。 DROP TABLE table_name ;
约束主要是防止非法数据进入表中,保证数据的正确性和一致性,统称为数据完整性 约束也可以防止一个表被删除 MySQL的约束保存在information_schema.table_constraints中...外键所在的表叫做子表,从表 外键所引用的主键所在的表叫做父表,主表 constraint emp_deptid_fk foreign_key(deptid) references dept(deptid...UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION check约束 MySQl...Oracle中国可以使用check约束,有相应作用 mysql> create table test_ck( -> id int check(id>0) -> ); mysql...> insert into test_ck values(-100); mysql> select * from test_ck; +------+ | id | +------+ |
一、数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。...date: yyyy/MM/dd time: HH/mm/ss datetime: yyyy/MM/dd/HH/mm/ss timestamp: 1970-01-01 二、建表... 外键约束:外键创建在从表(副表)中,从表中的FOREIGN KEY指向主表中的PRIMARY KEY。 ...例如: 1) 性别:sex char(1) default '男' 2) 日期:createdate timestamp default current_timestamp 2.建表...table 表名称 modify column 列名 数据类型; 2.3 删除表 语法:drop table 表名称; 补充说明: 1)添加表外键:
登陆mysql: 找到%xampp%\mysql\bin 目录, 在此处打开命令窗口,用root用户登陆mysql 用户表建表sql: CREATE TABLE tm_users ( id int...部门表同理。...部门表建表sql: CREATE TABLE tm_dept ( id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', deptid varchar(11
如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更复杂。特别是计划在列上建索引,就应该尽量避免设计成可为 NULL 的列。...MySQL 可以为整数类型指定宽度,例如 int(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了 MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数。...MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M 表示该值的总共长度,D 表示小数点后面的长度。...与其它类型不同,MySQL 把每个 blob 和 text 值当作一个独立的对象处理。...枚举(enum)类型 MySQL 在内部会将每个值在列表中的位置保存为整数,并且在表的 .frm 文件中保存 “数字-字符串” 映射关系的 “查找表”。
MySQL TIMESTAMP 类型建表异常 建表报错信息 incalid default value for 'xxx' 建表语句 CREATE TABLE `表名`( ......字段名 TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' , ... ) 报错原因 MySQL的sql_mode参数会影响对日期时间的处理方式。...CREATE TABLE `表名`( ... 字段名 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, ... ) 将建表语句改为如下所示,表示默认值为NULL。...CREATE TABLE `表名`( ......会话级别配置只对当前会话有效,sql如下: SET sql_mode = 'ALLOW_INVALID_DATES'; 全局级别配置需要修改MySQL的配置文件,并且需要修改后重启MySQL服务,MySQL
适用于分表比较多的情况,如何批量创建,可通过存储过程实现。 存储过程批量执行只是临时使用,不建议业务使用存储过程,有些存储过程封装SQL较多,导致性能下降,不容易排查。...创建一个存储过程:红色为表结构,蓝色为表名及表数量,从0开始到255 MySQL root@[test]> delimiter // MySQL root@[test]> create procedure...PRIMARY KEY (`id`), KEY `bak0` (`bak0`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='表'...from @sql_t; execute sql_t; set @j = @j + 1; end while; end // Query OK, 0 rows affected (0.00 sec) MySQL...root@[test]> delimiter ; MySQL root@[test]> call sp_create_tab; MySQL root@[test]> drop procedure sp_create_tab
关于Hive建表,参考官网: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ManagedandExternalTables...weblog表结构: CREATE TABLE IF NOT EXISTS weblog( ip string , time string , req_url string , status...hive建表.png 数据如下: 61.135.216.104 [25/Sep/2013:00:10:10 +0800] "GET /search-engine/thrift-framework-intro...image.png 也可以像下面这样建表 create table weblog_1 as select ip,time,req_url from weblog; 启动了MR任务 create table
相关文章: MySQL高性能表设计规范:http://www.jianshu.com/p/f797bbe11d76 MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45...MySQL 可以为整数类型指定宽度, 例如 INT(11), 对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数...更长的列会消耗更多的内存, 因为MySQL通常会分配固定大小的内存块来保存内部值。 尤其是使用内存临时表进行排序或操作时会特别糟糕。 在利用磁盘临时表进行排序时也同样糟糕。...反范式的优点和缺点 不需要关联表,则对大部分查询最差的情况——即使表没有使用索引——是全表扫描。 当数据比内存大时这可能比关联要快得多,因为这样避免了随机I/0。 单独的表也能使用更有效的索引策略。...参考资料: 高性能mysql第三版
本页目录 库语句 建库 修改库字符集 指定库排序规则 当前库状态的建表语句 删除库 Navicat编辑数据库时执行的SQL 表语句 建表 添加字段 修改表 修改字段 修改表字符集、排序规则 截断表 删除表...添加索引 一直都是用MySQL可视化工具,几乎没碰过建库、表等语句了。...库语句 建库 -- 数据库配置文件default-character-set是utf8_mb3,则会导致创建的表是utf8mb3。...我们无法人为控制,只能建库完毕后执行修改库字符集或者建库前修改MySQL配置 CREATE DATABASE IF NOT EXISTS `school` DEFAULT CHARACTER SET...直接执行就行,没有参数 SELECT @@character_set_database, @@collation_database 表语句 建表 添加字段 修改表 修改字段 修改表字符集、排序规则 截断表
2、Stored procedure (包括存储过程,函数,触发器)对于 MYSQL 来说还不是很成熟, 没有完善的出错记录处理,不建议使用。...3、UUID(),USER()这样的MySQL INSIDE 函数对于复制来说是很危险的,会导致主备数据不一致,所以请不要使用。如果一定要使用UUID作为主键,让应用程序来产生。...二、数据库对象设计规范 1、表 设计 a)在设计时尽量包含两个日期字段:crt_time(创建日期),upd_time(修改日期)且 非空, 对表的记录进行更新的时候,必须包含对 upd_time字段的更新...d)Mysql 的表尽量设置成 KV(Key-Value)结构,这样便于扩展和维护。 e)当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表(主要是为了性能考虑)。...h)由于MYSQL表DDL维护成本很高,所以在适当的时候,可以有一定的字段容余。 比如:Value1,Value2,Value3 这样的字段。
表结构和数据总是在程序执行的时候无端的修改,折腾了好长时间,查了很长时间hibernate的数据库映射文件和接口程序,始终没有发现有什么错误,到最后才发现了它!...SessionFactory is closed explicitly. eg. validate | update | create | create-drop 其实这个参数的作用主要用于:自动创建|更新|验证数据库表结构...其它几个参数的意思: validate 加载hibernate时,验证创建数据库表结构 create 每次加载hibernate,重新创建数据库表结构...create-drop 加载hibernate时创建,退出是删除表结构 update 加载hibernate自动更新数据库结构 如果发现数据库表丢失或新增
Hive建表异常:cannot recognize input near ')' 'row' 'format' in column specification 有问题的建表语句 hive> create...ParseException line 5:0 cannot recognize input near ')' 'row' 'format' in column specification 错误原因 : 在修改表时...,没有将建表语句完全修改正确 这是第一个表没问题 create table tb_emp5 ( id int, name string, likes array, -- 爱好采用数组类型...delimited fields terminated by ',' collection items terminated by '-' map keys terminated by ':'; 我在将第一个表修改成下面的出了问题...5:0 cannot recognize input near ‘)’ ‘row’ ‘format’ in column specification 最终发现了在name string,中在删减表时少删除了一个逗号
mysql表的设计规范 1、单实例表的数量必须控制在2000个以内。 2、表分表的数量必须控制在1024个以内。 3、表必须有主键,建议使用UNSIGNED整数作为主键。...潜在坑:删除无主键表,如果是row模式的主从架构,会挂在库里。 4、禁止使用外键。如果要保证完整性,应该通过应用程序来实现。... major varchar(16) comment '专业', name char(8) comment '班级名', nums int comment '人数' ); 以上就是mysql...表的设计规范,希望对大家有所帮助。...更多mysql学习指路:Mysql 收藏 | 0点赞 | 0打赏
常用于分库分表 1、批量删除 declare @outter int declare @inner int declare @tablePrefix varchar(30) declare @tableName...delete from '+@tableName+'') set @inner=@inner+1 end set @inner=0 set @outter=@outter+1 end 2、批量建表
例如可以通过设置check约束限制输入的年龄、出生日期等数据 操作部分 ·图形化建表 1、首先展开以下节点-点击新建表 2、SSMS会弹出一个表的设计框 3、建立几个列,准备做操作 4、...“标识规范”-将选项改为“是”即可 7、对于一个班级的同学,我们可以将所在班级的列设置一个默认值。...·T-SQL语句建表 举个例子: create table name( StudentID varchar(10)NOT NULL, Sname varchar(10)DEFAULT NULL, sex...首先 create 是创建的意思,table即表,name是给表起的名字。后面跟上(),()内的内容就是表的每一列;其中第一个字段为列的名字,然后是列的数据类型,后面的是否允许空值null。...操作时,我们点击SSMS左上角的“新建查询”-然后输入语句-点击“执行” 执行后可以看到 刷新一下“表” 新建的名为“name”的表就可以看到了
领取专属 10元无门槛券
手把手带您无忧上云