MySQL常见建表选项以约束】的更多相关文章

一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 :如果没有,则为null. mysql> create table people -> ( -> id int not null primary key, -> name varchar() not null, -> sex ) default 'm' -&…
阅读目录---MySQL常见的建表选项及约束: 1.create table选项 1.指定列选项:default.comment 2.指定表选项:engine.auto_increment.comment 2.create table约束 1.not null:非空约束 2.unique:唯一约束 3.primary key:主键约束 4.foreign key:外键 5.check:检查---enum.set 一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAUL…
mysql workbench 建表时 - PK: primary key (column is part of a pk) 主键 - NN: not null (column is nullable) 非空 - UQ: unique (column is part of a unique key) 唯一 - AI: auto increment (the column is auto incremented when rows are inserted) 自增 - BIN: binary (i…
1.符合数据库三范式 2.字段选择合适的数据类型 3.注意表之间的联系,一对多,多对多,一对一 4.拆分表,把不常用的字段单独成表. 5.建立索引,哪些字段建立索引?建立索引的原则?最左前缀原则,where子句原则 mysql优化包括: 1.选择合适的存储引擎 2.合适的建表 3.sql语句的书写,哪些语句会用上索引. 4.数据库读写分离,一个master负责写,slave负责读.利用bin log采用日志同步. 5.表的垂直划分和水平划分.…
1.创建表的时候必须指定主键,并且主键建立后最好不要再有数据修改的需求 mysql从5.5版本开始默认使用innodb引擎,innodb表是聚簇索引表,也就是说数据通过主键聚集( 主键下存储该行的数据,索引指向主键值),如下图所示: 正是由于这种解构,如果后续对主键对应的值进行修改,就会导致索引节点的频繁分裂,性能会下降非常厉害.因此推荐开发的同事们使用和业务没有任何关联的自增id来做主键(切记不要使用uuid来做主键),此外也可以考虑使用其他的方式来生产自增的ID,比如使用Twitter的sn…
最近项目中用到了使用存储过程批量建表的功能,记录下来: USE db_test_3; drop procedure if EXISTS `createTablesWithIndex`; create procedure createTablesWithIndex() BEGIN ); ); ); ); ); ; DO -- `M_ID` bigint AUTO_INCREMENT PRIMARY KEY NOT NULL, -- 创建表 SET @createSql = CONCAT('CREA…
表选项列表 表选项就是,创建一个表的时候,对该表的整体设定,主要有如下几个: charset = 要使用的字符编码, engine = 要使用的存储引擎(也叫表类型), auto_increment = 设定当前表的自增长字段的初始值,默认是1 comment = ‘该表的一些说明文字’ 说明: 1,设定的字符编码是为了跟数据库设定的不一样.如果一样,就不需要设定了:因为其会自动使用数据库级别的设定: 2,engine(存储引擎)在代码层面,就是一个名词:InnoDB, MyIsam, BDB,…
一. 表设计规范 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE. 建议使用UNSIGNED存储非负数值. 建议使用INT UNSIGNED存储IPV4. 整形定义中不添加长度,比如使用INT,而不是INT(4). 使用短数据类型,比如取值范围为0-80时,使用TINYINT UNSIGNED. 不建议…
本学期正在学习数据库,前段时间老师让我们做一下50个经典SQL语句,当时做的比较快,有一些也是百度的,自我感觉理解的不是很透彻. 所以从本篇随笔开始,我将进行50个经典SQL语句的复盘,加深理解. 答案仅供参考,不一定完全正确,若发现错误或有更好的,欢迎评论,互相交流,一起成长!!! --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 teacher(TI…
1.库名.表名.字段名必须使用小写字母,“_”分割. 原因: MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大小写的: 4.变量名也是严格区分大小写的:MySQL在Windows下都不区分大小写. 所以在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在Windows环境下只要对…
[1]建立员工档案表要求字段:员工员工编号,员工姓名,性别,工资,email,入职时间,部门.[2]合理选择数据类型及字段修饰符,要求有NOT NULL,auto_increment, primary key等. -- -- make by kakane -- DROP TABLE IF EXISTS `workers_info`; CREATE TABLE `workers_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workername` v…
虽然一直都知道,类型 之类的字段 直接用字符窜会很方便,不过最好还是不要用字符串:但是也不是特别清楚为什么不要用,时间久了 就忍不住用一下字符窜试试,这一试 还挺好用的,吓得我 感觉探究了一下 为什么最好不要用字符窜. 一是从空间上考虑,对于类型 分类的字段来说,用int代表不同的类型,比varchar 更节省空间. 数据量少的时候 不明显,但是 数据量特别大,或者数据常加载到内存里 差别就比较明显了. 二是 从 安全性考虑,varchar 容错性高,会导致 程序的bug 不能那么及时的体现出来…
1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和create database创建数据库的效果一样. 2.create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户 密码8位以上,包括:大写字母.小写字母.数字.特殊字符 %:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,…
今天建了一张表,表名为--inOut: 然后再使用中发现怎么都是SQL错误: 然后在Navacat上发现 这是一个关键词! 如果非要继续使用,只能这样: 类似的坑还有user等.…
CREATE TABLE `product_info`( `product_id` VARCHAR(32) NOT NULL COMMENT '主键', `product_name` VARCHAR(64) NOT NULL COMMENT '商品名称', `product_price` DECIMAL(8,2) NOT NULL COMMENT '商品单价', `product_stock` INT NOT NULL COMMENT '库存', `product_description` VA…
[转自网络]https://my.oschina.net/cers/blog/292191 PK Belongs to primary key 作为主键 NN Not Null 非空 UQ Unique index 不能重复 BIN Is binary column 存放二进制数据的列 UN Unsigned data type 无符号数据类型(需要整数形数据) ZF Fill up values for that column with 0's if it is numeric 填充0位(例如…
1. [intrinsic column flags] (基本字段类型标识) - PK: primary key (column is part of a pk) 主键 - NN: not null (column is nullable) 非空 - UQ: unique (column is part of a unique key) 唯一 - AI: auto increment (the column is auto incremented when rows are inserted)…
show create table `table_name`; 结果如下:…
主键的问题: 简单的id递加.不过在实习的时候,因为id递增的问题,导致一个项目最后好像产生了严重的问题.所以递增适合小型项目,对我们的项目来说90%足够可以用的. 一些限制: 一般就非空就行,唯一的话一般不用.(我们的主键本来就是非空,且唯一的) 对于默认: 默认的话,DEFAULT '0'  DEFAULT '1'   DEFAULT NULL  DEFAULT CURRENT_TIMESTAMP 对于数据类型: int(11) bigint(20) float varchar(200) t…
      SQL SERVER的表结构及索引转换为MySQL的表结构及索引,其实在很多第三方工具中有提供,比如navicat.sqlyog等,但是,在处理某些数据类型.默认值及索引转换的时候,总有些不尽人意并且需要安装软件,懒人开始想法子,所以基于SQL SERVER,写了一个存储过程,可以根据表名直接转换为MySQL的建表建索引的SQL脚本(针对 MySQL Innodb引擎).目前不支持分区表的分区配置及区域数据类型的转换.         如果转载,请注明博文来源: www.cnblog…
表的创建 标准的建表语法 : CREATE TABLE [schema.] table (column datatype [DEFAULT expr], ... ); 使用子查询创建表的语法 CREATE TABLE table [column(,column...)] AS subquery, 1.新表的字段列表必须与子查询中的字段列表匹配 2.字段列表可以省略 create table emp2 as select * from emp; 表结构的修改 alter table ... add…
BBS论坛表设计 包含的表:BBSusers(用户表),BBSsection(版块表),BBStopic(主贴表),BBSreply(跟帖表) 表结构 1)BBSusers 字段名 字段说明 数据类型 字段约束 备注 U_ID 用户ID number 主键,非空 非空 UName 用户名 Varchar2(32) 非空 UPassword 密码 Varchar2(16) 默认6个8 UEmail email Varchar2(32) 默认p@p.com,必须有“@”和“.”,“@”必须在“.”前…
MySQL 字段约束 null,not null,default,auto_increment [来源于] 没有规矩,不成方圆,任何事物都是如此.在MySQL中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束.今天我们就来看一下MySQL的字段约束:NULL和NOT NULL修饰符.DEFAULT修饰符,AUTO_INCREMENT修饰符. NULL 和 NOT NULL 修饰符: 可以在每个字段后面都加上这NULL 或 NOT NULL 修饰符来指定该字段是否可以为空…
1 本节内容: mysql 数据库建表(班级表和学生表) Create table grade(gid varchar(32) primary key, gname varchar(32) not null, gdescribe varchar(300) ); Create table Student( sid varchar(32) primary key, sname varchar(80) not null, gid varchar(32), sex char(2) ); alter ta…
1.创建表 在操作数据表之前,应该使用"USE 数据库名"指定操作是在哪个数据库中进行 主键约束(唯一标识) ****非空*** ****唯一*** ****被引用****(学习外键时) 约束是添加在列上的,用来约束列的! 主键约束,用于唯一标识对应的记录.在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现,就好比身份证可以用来标识人的身份一样. 每个数据表中最多只能有一个主键约束. 在Navicat中按键F6也可以进入命令行 2. 主键自增长 * 因为主键列的特性是:…
博主最近打算搭建商城,由于之前对建表只有很浅显的理解,没有太过深入了解,建表过程中遇到一些问题,现记录如下, 如有问题请各位留言指正,感激不尽: 建表时设置如何设置联合主键?如下标红处: CREATE TABLE `product_price` ( `product_id` int(12) NOT NULL COMMENT '商品ID', `price_category_id` int(12) NOT NULL DEFAULT '0' COMMENT '价格类型ID', `price_descr…
1,MySQL建库语句比较简单,一句话: create database tppamltest3 2,创建用户及授权: insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values("localhost","用户名",password("密码"),"","",""); flush…
/****** Object: StoredProcedure [dbo].[GET_TableScript_MYSQL] Script Date: 06/15/2012 13:05:14 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /*============================================================== 名称: GET_TableScript_MYSQL 功能: 生成单…
规范一些常用字段. password:varchar name:varchar 时间存储全部存储时间戳,用bigint(20),拒绝使用 MySQL数据类型  mysql数据类型 含义 date 3字节,日期,格式:2014-09-18 time 3字节,时间,格式:08:42:30 datetime 8字节,日期时间,格式:2014-09-18 08:42:30 timestamp 4字节,自动存储记录修改的时间 year 1字节,年份 ,也就是你用bigint数据类型,并且设置为unsign…
建表: 原帖地址: http://blog.sina.com.cn/s/blog_5da3d5c50100bjh0.html MySQL AUTO_INCREMENT 简介 (2009-01-02 17:07:46) 转载▼ 标签: mysql auto_increment it 分类: oracle 可使用复合索引在同一个数据表里创建多个相互独立的自增序列,具体做法是这样的:为数据表创建一个由多个数据列组成的PRIMARY KEY OR UNIQUE索引,并把AUTO_INCREMENT数据列…