- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
34.字段定义PHP课件必威体育精装版版课案
字段定义
unsigned
INSERT INTO cv (id) VALUES (-1);
上面的语句执行不会报错,但是显然我们不需要保存一个负数的编号
ALTER TABLE cv MODIFY id INT UNSIGNED;
如果再次执行插入负数的语句则会看到
Query OK, 1 row affected, 1 warning (0.01 sec)
执行下面的语句可以看到警告的具体内容
SHOW WARNINGS;
unsigned的差别
新建测试表,分别创建一个tinyint的字段和一个tinyint unsigned的字段
同时插入一个超出其值范围的数字999,检查两个字段的最大上限的变化
再同时插入-999,检查下限的变化
再次插入数据
通过字段id,我们可以唯一标识一条记录,但是如果两次插入的都是1呢?
INSERT INTO cv (id, name) VALUES (1, andy);INSERT INTO cv (id, name) VALUES (1, tom);
可见,当前的表结构并没有能力去排除重复的值
唯一值
通过单独设置一行unique,可以将指定字段中的值设置为唯一,一旦有重复的数据插入,系统会提示错误
ALTER TABLE cv ADD UNIQUE KEY (id);
如果是建表语句,则应该放在最下方
CREATE TABLE cv ( ... UNIQUE (id));
这时再重复插入同样id的数据,会提示错误
ALTER TABLE user DROP INDEX name 删除唯一特性 保留字段
思考
有的同学的表在执行前面alter的语句后没有报错,有的却会报错
请思考为什么会有差别?和当前数据表的里的数据有什么关系?
主键
当我们添加过unique后查看表结果可以发现id字段的key变成了PRI,实际上PRI就是primary key的缩写,一个唯一的id相当于就是一个主键,那么我们也可以直接通过primary key属性来设置主键,而不用unique,因为primary中就包含了unique的规则
ALTER TABLE cv MODIFY id INT UNSIGNED PRIMARY KEY;
设置主键
ALTER TABLE user MODIFY id int unsigned NOT null PRIMARY KEY;
注意:一个表里只可以有一个主键,因此,当系统判断表里只有一个unique时,可以把它当做主键,当出现多个unique时,仍然只会把第一个unique默认当做主键
删除主键
ALTER TABLE cv DROP PRIMARY KEY;
复合主键
虽然一个表里只可以有一个主键,但是并不是意味着只能有一个字段被设置为主键,如果有两个字段需要一起设置为主键,我们可以创建复合主键
ALTER TABLE cv DROP PRIMARY KEY;
ALTER TABLE cv ADD PRIMARY KEY (id, name);
这样,id和name就成了复合主键,如果两条记录,id一样,并不意味了数据重复,只有id和name都一样才表示重复
复合主键
在create建表语句中,如果只有一个字段是主键,那么可以直接在字段后面添加primray key即可
CREATE TABLE cv ( id INT UNSIGNED PRIMARY KEY, ...);
如果是复合主键,则可以按下面的写法,放在最后
CREATE TABLE cv ( ..., PRIMARY KEY (id, name));
自增长
目前的id是通过我们人为指定的,但是人工操作难免会出现错误,如果意外插入了同样的id,系统报错,会导致程序出错,那么有没有可能让MySQ自己来计算每次应该插入的id是多少?
ALTER TABLE cv DROP PRIMARY KEY;
ALTER TABLE cv MODIFY id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT;
上面的语句添加一个auto_increment属性,
注意:
只有整形数字段可以设置自增长
自增长必须添加在主键上
一个表里只可以有一个字段是自增长的
添加记录(自增长)
之前插入记录时我们指定了字段
INSERT INTO cv (id, name) VALUES (1, andy);
因为有了自增长,我们可以无需指定id为几,这是可以将1统一设置为0或者null,这时,无论如何重复执行,系统都会自动生成id
更为简单的办法是忽略id字段
INSERT INTO cv (name) VALUES (andy);
同样可以执行自增长的插入。
LA
文档评论(0)