sql 语句里 primary key什么意思? 怎么用?
CREATETABLE`leaveword`(`id`tinyint(1)NOTNULLAUTO_INCREMENT,`user`varchar(25)NOTNULL,`...
CREATE TABLE `leaveword` (
`id` tinyint( 1 ) NOT NULL AUTO_INCREMENT ,
`user` varchar( 25 ) NOT NULL ,
`title` varchar( 50 ) NOT NULL ,
`content` tinytext NOT NULL ,
`lastdate` date NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
还有ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
这句是什么意思?
我把这样的表单写入数据库以后 留言板上的内容(中文)添加上去显示是“??”。
但我查看结构的时候确实是gbk_chinese_ci 了
求助 展开
`id` tinyint( 1 ) NOT NULL AUTO_INCREMENT ,
`user` varchar( 25 ) NOT NULL ,
`title` varchar( 50 ) NOT NULL ,
`content` tinytext NOT NULL ,
`lastdate` date NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
还有ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
这句是什么意思?
我把这样的表单写入数据库以后 留言板上的内容(中文)添加上去显示是“??”。
但我查看结构的时候确实是gbk_chinese_ci 了
求助 展开
5个回答
展开全部
primary key == 主键 等价于 唯一 (UNIQUE) 且 非空 (NOT NULL)
因为 Mysql 里面的自增列, 必须要依赖一个 主键 或者 唯一的键。
所以你的 SQL 里面要有一个
PRIMARY KEY ( `id` )
如果不加 PRIMARY KEY ( `id` ) 的话, 结果将像下面这个样子:
mysql> CREATE TABLE tab (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10)
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
这行语句, 设置了3个表的属性
ENGINE = InnoDB 是设置表的引擎。 innoDB 引擎是比较新的, 支持外键 与 事务处理等特性。
CHARSET = gbk 是字符集
AUTO_INCREMENT =1 是那个 自增的 ID , 起始数值是 1
我把这样的表单写入数据库以后 留言板上的内容(中文)添加上去显示是“??”。
我查看结构的时候确实是gbk_chinese_ci 了
这个要调查一下,你的数据,是怎么插入的。
虽然你的数据库表的 字符编码, 是 gbk 了。
但是如果你的 数据,是通过 网页插入的, 而网页的编码是 utf8 之类的话。
那么最后保存的数据, 就可能是 ?? 了。
因为 Mysql 里面的自增列, 必须要依赖一个 主键 或者 唯一的键。
所以你的 SQL 里面要有一个
PRIMARY KEY ( `id` )
如果不加 PRIMARY KEY ( `id` ) 的话, 结果将像下面这个样子:
mysql> CREATE TABLE tab (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10)
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
这行语句, 设置了3个表的属性
ENGINE = InnoDB 是设置表的引擎。 innoDB 引擎是比较新的, 支持外键 与 事务处理等特性。
CHARSET = gbk 是字符集
AUTO_INCREMENT =1 是那个 自增的 ID , 起始数值是 1
我把这样的表单写入数据库以后 留言板上的内容(中文)添加上去显示是“??”。
我查看结构的时候确实是gbk_chinese_ci 了
这个要调查一下,你的数据,是怎么插入的。
虽然你的数据库表的 字符编码, 是 gbk 了。
但是如果你的 数据,是通过 网页插入的, 而网页的编码是 utf8 之类的话。
那么最后保存的数据, 就可能是 ?? 了。
更多追问追答
追问
网页也是简体中文gb2312 怎么回事。 我是跟着教程里一步步抄下来的。 居然教程里可以,我这不行。。
追答
网页是 gb2312.
后台处理程序是什么语言写的?
PHP ? JSP? ASP? ASP.NET+C#?
我以 JSP 举例说明一下 基本原理。
网页处理这种情况, 要分2个步骤判断。
第一, 是 JSP 获取 用户从网页上面输入的数据, 是否正确。
有可能网页上面是 gb2312 编码的。
但是 JSP 服务端 获取数据的时候, 没有按指定编码获取。
第二,是 JSP 把数据向 MySQL 写入的时候,是否是按照 MySQL 的 gbk 编码写入了。
因为 MySQL 的数据库联接字符串里面, 也是有 字符编码的 可选参数的。
展开全部
定义主键,可以像上代码中最后PRIMARY KEY ( `id` ),指定主键,也可以在见表的时候`id` tinyint( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY
ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
这句话是定义增量为1,及相邻id之间的差值为1
换成UTF-8试一下
ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
这句话是定义增量为1,及相邻id之间的差值为1
换成UTF-8试一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主键的意思
1,主键非空,也就是说被设定为主键的列在插入数据的时候就不能为空,如果为空就会报错。
2,主键是唯一的,一个表通过一个主键可以确定一条记录。
3,有时可以用两个字段来建立主键,这叫联合主键。这种情况出现在当一个字段无法唯一的时候要借助另一个字段来确保唯一性的时候。
1,主键非空,也就是说被设定为主键的列在插入数据的时候就不能为空,如果为空就会报错。
2,主键是唯一的,一个表通过一个主键可以确定一条记录。
3,有时可以用两个字段来建立主键,这叫联合主键。这种情况出现在当一个字段无法唯一的时候要借助另一个字段来确保唯一性的时候。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
primary key 主键,唯一标识一条记录
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询