如果primary key不唯一?primarykey的用法
一、mysql主键唯一默认语句
在MySQL中,主键约束是用来保证该字段的值有唯一性,并且非空。主键约束可以设置默认值,但是默认值不是唯一的。如果您想要设置主键的默认值,可以使用以下语句:
```sql
CREATETABLEtb_emp(
idINT(11)NOTNULLAUTO_INCREMENT,
nameVARCHAR(25),
deptIdINT(11),
salaryFLOAT,
PRIMARYKEY(id)
);
```
二、sql中新建表为什么写primarykey
根据关系型数据库三大范式中一范式的约定:每一行数据都应有唯一标识。
唯一标识映射到物理模型中即是表的主键,所以在新建表时,需要定义其PrimaryKey。
三、sql语句里primary key什么意思怎么用
primarykey==主键等价于唯一(UNIQUE)且非空(NOTNULL)
因为Mysql里面的自增列,必须要依赖一个主键或者唯一的键。
所以你的SQL里面要有一个
PRIMARYKEY(`id`)
如果不加PRIMARYKEY(`id`)的话,结果将像下面这个样子:
mysql>CREATETABLEtab(
->idINTAUTO_INCREMENT,
->valVARCHAR(10)
->);
ERROR1075(42000):Incorrecttabledefinition;therecanbeonlyoneautocolumnanditmustbedefinedasakey
ENGINE=InnoDBDEFAULTCHARSET=gbkAUTO_INCREMENT=1;
这行语句,设置了3个表的属性
ENGINE=InnoDB是设置表的引擎。innoDB引擎是比较新的,支持外键与事务处理等特性。
CHARSET=gbk是字符集
AUTO_INCREMENT=1是那个自增的ID,起始数值是1
我把这样的表单写入数据库以后留言板上的内容(中文)添加上去显示是“??”。
我查看结构的时候确实是gbk_chinese_ci了
这个要调查一下,你的数据,是怎么插入的。
虽然你的数据库表的字符编码,是gbk了。
但是如果你的数据,是通过网页插入的,而网页的编码是utf8之类的话。
那么最后保存的数据,就可能是??了。