1. 程式人生 > >mysql 資料庫建表語句的規範

mysql 資料庫建表語句的規範

-- 資料庫建表語句的規範小結

建表語句的規範:
1.欄位的設計
    A. 資料型別儘量用數字型別,數字型別的比字元型別的要快很多。
  B. 資料型別儘量小,這裡的儘量小是指在滿足可以預見的未來需求的前提下的,但是有不能太小,
   上次監控系統裡面的表 mon_tair_stat_detail_2012_1 的data_size 和 use_size定義的是int(15) 實際上最大長度是int(11)  只有bigint才有(15).
   所以在建表的時候一定要預估這個欄位最大的長度到底是多少。
  C. 儘量不要允許NULL,除非必要,可以用NOT NULL+DEFAULT 的值來代替。
  D. 少用TEXT和IMAGE,二進位制欄位的讀寫是比較慢的,而且,讀取的方法也不多,大部分情況下最好不用。

2.欄位名字的定義
  A. 對欄位名字的命名也要遵循一個規範。比如說時間: 目前我們定義時間的時候 都是create_time, modify_time,以後建表的時候,都按照這個標準來,就不要寫成createtime這樣的。
  B. 布林型別的值均以 is、has、exist 或者 can開頭。
  C. 記錄行的狀態都用status, 邏輯刪除的標識用is_deleted。
  D. 新建的表與之前的表的欄位有相似或者相同的欄位,欄位的名稱和型別也必須相同,切記不能隨意的重新命名,例如:token_md5 就不要命名成tokenmd5了。
  E. 每個欄位的COMMENT必須寫清楚,列舉型別必須寫清楚每個值到底是什麼意思。
  F. 表名 欄位名字統一用小寫。
  G.索引名稱統一用欄位名稱,多個欄位的索引加_ 比如 (uid,type)  索引名就是 uid_type。
  H.欄位名字不要用駝峰命名法 比如create_time 不要寫成CreateTime.
  I.欄位命名關鍵字統一用下劃線"_"分割,一般採用簡寫,關鍵字要準確,不能有歧義。
  J.欄位的排列順序:自增列、int型別的、varchar型別、時間型別、狀態型別(status,is_deleted)。基本原則是:主要內容在前,次要內容在後,不為空的在前,可以空的在後面。
  K.時間型別儘量用 timestamp 4個位元組,而不用datetime 8個位元組。只用表示日期的欄位用date型別。
  L.時間型別自動修改,比如modify_time 在記錄被修改的時候回被自動更新成當前的時間: `modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
  而create_time在記錄被修改的時候則不必自動更新成當前的時間:`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'

相關推薦

mysql 資料庫表語規範

-- 資料庫建表語句的規範小結 建表語句的規範: 1.欄位的設計     A. 資料型別儘量用數字型別,數字型別的比字元型別的要快很多。   B. 資料型別儘量小,這裡的儘量小是指在滿足可以預見的未來需求的前提下的,但是有不能太小,    上次監控系統裡面的表 mon_ta

java生成mysql資料庫表語、欄位、欄位型別、欄位註釋,可實現不用mysqldump備份資料庫

使用 mysqldump 備份資料庫也是可行的,因為每次備份的時候都需要mysqldump這個檔案, 我在windows備份時沒問題,但是放到linux上面時,centos系統死活不認這個檔案,但又不想裝mysql,一氣之下自己研究了個不需要mysqldump就可以備份的程式, 如果看了以下程式

mysql資料庫表語修改成green plum資料庫中可執行的指令碼

#用來獲取輸入的對應的表名稱的建表語句 #首先輸入需要獲取的mysql或者sql server的資料庫表名稱,到對應的資料庫中抓出建表語句, #然後,將建表語句進行對應的修改,形成可以在pg中可用的語句 #連線mysql資料 import pymysql import sys impor

PowerDesigner生成mysql資料庫表結構的sql表語時沒有comment註釋的解決方法和去掉comment註釋的解決方法

PowerDesigner生成mysql欄位comment 註釋 最近需求出了新變化,再次開始 pd 之路,卻發現很多以前熟練的操作儼然陌生, 好記性不如爛筆頭一點不假。 1. 為什麼沒有註釋     在 pdm 檢視中,預設 powerdesigner 是不會生成註釋

Mysql DBA 高級運維學習筆記-mysql表語及表知識

ase rac 範圍 cte roc .com 相關 fff size 9.9 表操作 9.9.1以默認字符集建庫 以默認格式的為例,指定字符集建庫 system@ceshi 07:0205->create database wwn; Query OK, 1 row

MySQL幾種常用的表語(一)

span mysq 圖片 pan ont tab 數據類型 默認 primary 幾種常用的建表語句: 1、最簡單的建表語句:   create table 表名(     列名1 數據類型(長度),     列名2 數據類型(長度),     ...     )   如下

MySQL表語句轉PostgreSQL表語全紀錄

個人習慣用MySQL workbench EER資料建模,然後生成SQL語句到資料庫中執行,這樣表之間的關係比較直觀。 像下面這樣: 畫圖 正向工程,生成DDL語句: 忽略生成外來鍵,以及外來鍵索引啥的: 生成的DDL語句: 到資料庫執行。 踩坑了 最

Oracle資料庫 迴圈表語及多表迴圈插入語句

Oracle資料庫的迴圈建表語句及多表迴圈插入語句 --建多張表的儲存過程 create  or replace procedure  createtables is i number (10) :=

mysql workbench 匯出表語 匯出資料

前言 本教程主要講述,利用mysql workbench匯出建表語句,過程很簡單,有兩種方法。 教程 方法一 概述 這種方法是比較正規的,也是mysql workbench提供的正式的匯出建表語句或者匯出資料的方式。 匯出建表語句和

如何手動將ORACLE的sql表語轉換為MYSQL表語句

ORACLE sql建表語句 CREATE TABLE "SCOTT"."BUG" ( "BUG_ID" NUMBER NOT NULL , "BUG_TYPE" VARCHAR2(200 BY

mysql表語以及新增外來鍵報1215錯誤

其中外來鍵錯誤解決辦法: 保證外建的主表字段和子表字段型別和長度要一致 SET foreign_key_checks=0; drop table if exists feedrice; /*========================================

oracle經典表語--scott

research def num div del col incr value 實現 create table EMP ( EMPNO NUMBER(4) PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9),

oracle導出表的表語拼接SQL

del ora cal 導出表 evel lec ica nts rac 前段時間有個需求需要導出數據庫的500張表結構,使用PLSQLDEV工具也可以導出建表語句,但是需要手動一個表一個表選,非常費勁。就寫了個拼接sql。 select ‘select dbms_met

如何使用plsql導出oracle中的表語文件

ffd -i IT SQ 當下 sel acl user self 1 首先打開plsql,登陸所需要訪問的數據庫。 2 點擊工具欄的tools。 3 選擇下拉框中的export user object。 4 此時會彈出一個窗

ORA-00904:識別符號無效的一個奇葩原因--工具生成表語的問題

這個問題相信大家都很常見,這就是表中無該欄位導致的。但是本文所述的問題比較特殊,請看下面的語句: 1、SELECT t.person_id FROM  TAX_DED_CHILD_T t 2、SELECT t.* FROM  TAX_DED_CHILD_T t 3

hive程式設計指南學習筆記之一:表語以及分隔符定義

/*建立包括基本資料型別string\float,以及集合資料型別array、map 、struct的表,並指定表中的列、元素、map中鍵值之間的分隔符 很好的一個例子。 */ create table employees (     name string, &nbs

如何獲取hive表語(轉載)

說明:本文轉載自http://www.imphrack.com/?p=21  DWer 謝謝原創作者分享! 該指令碼是基於hive0.4.2版本,現在最新的0.8.1版本 hive元資料庫已經有過些許改變。 需要要將指令碼中表名COLUMNS修改為COL

Java,基於SSM,省市區三級聯動後臺查詢(單表),附(表語+查詢Sql)

1、建表語句 CREATE TABLE "hxdb"."sys_area" ( "id" varchar(64) COLLATE "default" NOT NULL, "code" varchar(

sqlserver2008r2表語優化

USE [master]; GO DROP DATABASE [mydata]; GO CREATE DATABASE [mydata]; GO USE [mydata]; GO CREATE TABLE [dbo].[t_user] (     [id] [int] IDE

檢視和修改Mysql資料庫表的時候預設的儲存引擎

建表的時候,不指定type或engine,則使用預設的儲存引擎。預設的儲存引擎,可以在配置檔案my.ini中檢視和修改,預設是InnoDB: # The default storage engine that will be used when create new tab