自动创建表

创建表mysql

最简单的

字段名称数据类型备注
idINT(ll)员工编号
nameVARCHAR(25)员工名称
deptldINT(ll)所在部门编号
salaryFLOAT工资
CREATE TABLE tableName
 (
	id INT(11),
	name VARCHAR(25),
 	deptId INT(11),
 	salary FLOAT
);

创建主键

create table yyy(
	`id` int unsigned not null auto_increment,
	primary key (`id`)
);

unsigned :只能添加正数
NOT NULL :不允许为空
NULL:允许为空
AUTO_INCREMENT

  1. 默认情况下,AUTO_INCREMENT 的初始值是 1,每新增一条记录,字段值自动加 1。 一个表中只能有一个字段使用
  2. AUTO_INCREMENT 约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分)。 AUTO_INCREMENT
  3. 约束的字段必须具备 NOT NULL 属性。 AUTO_INCREMENT
  4. 约束的字段只能是整数类型(TINYINT、SMALLINT、INT、BIGINT 等)。
  5. 约束字段的最大值受该字段的数据类型约束,如果达到上限,AUTO_INCREMENT 就会失效

创建时间

CREATE TABLE  test  (
	...
	`createtime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
	`updatetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
);

TIMESTAMP: 一种保存日期和时间组合的时间数据类型
DEFAULT :默认值
CURRENT_TIMESTAMP:当前时间
ON UPDATE CURRENT_TIMESTAMP :该行数据其他列有值变化时(update)更新时间戳
所以:
createtime 创建该条记录时 默认值为当前时间
updatetime 创建该条记录时 默认值为当前时间,并且该行数据其他列有值变化时(update)更新时间戳

UNIQUE

 CREATE TABLE tb_dept2
 (
  id INT(11) PRIMARY KEY,
  name VARCHAR(22) UNIQUE,
 location VARCHAR(50)
 );

唯一约束与主键约束相似的是它们都可以确保列的唯一性。不同的是,唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。而主键约束在一个表中只能有一个,且不允许有空值。

COLLATE

CREATE TABLE `table1` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    `field1` text COLLATE utf8_unicode_ci NOT NULL COMMENT '字段1',
    `field2` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '字段2',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_unicode_ci;

所谓utf8_unicode_ci,其实是用来排序的规则。对于mysql中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知mysql如何对该列进行排序和比较。简而言之,COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCTGROUP BYHAVING语句的查询结果。另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。总之,凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。
COLLATE是什么

联合主键

create table mytable (  
    aa int, 
	bb char(8), 
	cc date, 
	primary key (aa,bb )
);

aa,bb为联合主键

外键

-- 产品目录表
CREATE TABLE Products (
	-- 产品ID:主键列,自增长
	prod_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
	-- 供应商ID:外键
	vend_id INT NOT NULL COMMENT '供应商ID',
	-- 产品名
	prod_name VARCHAR (30) NOT NULL COMMENT '产品名',
	-- 产品价格
	prod_price DOUBLE NOT NULL COMMENT '产品价格',
	FOREIGN KEY (vend_id) REFERENCES Vendors (vend_id)
);

mysql 建表语句 及完整案例

自动创建表

如果表不存在 自动创建

//创建表
QString tableName = QString("dataset_label_tags");
QString strCreate = QString("CREATE TABLE IF NOT EXISTS `%1` (\
	`datasetId` bigint(10) unsigned NOT NULL,\
	`tagId` bigint(10) unsigned NOT NULL,\
	`color` varchar(20) NOT NULL\
	) ENGINE = InnoDB DEFAULT CHARSET = utf8").arg(tableName);

未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值