在mysql 中为表的字段添加唯一性约束的语句怎么写

例如有一个user表,我要为它的uname字段添加唯一性约束,请问对应的sql语句该怎么写?... 例如有一个user表,我要为它的uname字段添加唯一性约束,请问对应的sql语句该怎么写? 展开
 我来答
_择一城终老123
高粉答主

2018-12-14 · 醉心答题,欢迎关注
知道答主
回答量:22
采纳率:100%
帮助的人:6167
展开全部

建表时加上唯一性约束:

CREATE TABLE `t_user` (

`Id` int(11) NOT NULL AUTO_INCREMENT,  -- 自增

`username` varchar(18) NOT NULL unique,  -- 唯一性约束

`password` varchar(18) NOT NULL,

PRIMARY KEY (`Id`)

) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

扩展资料

MySQL 作为数据库,系统特性:

1、使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。

2、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

3、为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。

4、优化的 SQL查询算法,有效地提高查询速度。

5、提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。

6、支持大型的数据库。可以处理拥有上千万条记录的大型数据库。支持多种存储引擎。

参考资料:百度百科-mySQL

大野瘦子
高粉答主

2018-12-22 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.2万
展开全部

1、建表时加上唯一性约束

CREATE TABLE `t_user` (

`Id` int(11) NOT NULL AUTO_INCREMENT,  -- 自增

`username` varchar(18) NOT NULL unique,  -- 唯一性约束

`password` varchar(18) NOT NULL,

PRIMARY KEY (`Id`)

) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

2、给已经建好的表加上唯一性约束

ALTER TABLE `t_user` ADD unique(`username`);

扩展资料:

注意事项

MySQL在修改完每一行数据后都验证数据约束,而不是像SQL标准里执行完整条语句才验证。这样做带来的一个问题就是,如果一条SQL语句会改动多行数据,即使改动过程中违反了数据约束但改动后并不违反数据约束,也会被MySQ判为违反数据约束从而执行失败。

在特定情况下MySQL的SQL语句中避免数据唯一性冲突有效的解法:

1、暂时删除相关约束,改动完数据后再加回去

2、在update语句中使用order by子句控制行改动次序,保证在任一行改动后都不违法约束。这个方法局限性比较大,有时我们是想交换两个不相邻行的值

3、使用一个临时值做中转(如一个没有被其它任何行使用的值,有些情况下NULL是一个不错的选择)。类似于程序设计中典型的交换两个变量值的方法

4、重新设计应用逻辑,尽量避免一次更改多行的情况出现

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
klz_5861418
推荐于2017-09-15 · TA获得超过1050个赞
知道答主
回答量:189
采纳率:0%
帮助的人:0
展开全部
你用那个图形界面的软件,来加就可以了,应该在索引那一栏里面,自己写语句修改表,弄不好会出错的,还麻烦。
1.建表时加上唯一性约束
CREATE TABLE `t_user` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(18) NOT NULL unique,
`password` varchar(18) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;
2.给已经建好的表加上唯一性约束
ALTER TABLE `t_user` ADD unique(`username`);
我机器上没有数据库,没验证这2个sql,不晓得行不行,大概是这样的吧。

有些人用程序来给数据做约束的,比如约束用户名,
DataSet ds = dao.queryForDataSet(connName,"select * from t_user where username=? and password=?",new Object[]{username,password},0,0,false);
if(ds.size()==1){
//登陆成功
}else if(ds.size()>1){
//冻结此账户,记录错误日志
}else{
//告知用户账号不存在或者密码错误
}
插入用户之前事先查询一下这个用户是否存在,可以用ajax做验证账号是否重复的效果,很多网站都是这么干的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
轩辕渔民
2010-07-06 · TA获得超过177个赞
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:0
展开全部
PRIMARY KEY 主键唯一

方法一:
CREATE TABLE `TEST` (
uname varchar(18) NOT NULL DEFAULT '',
PRIMARY KEY (uname)
) ENGINE=MYISAM DEFAULT CHARSET=gbk;

方法二:
CREATE TABLE `TEST` (
uname varchar(18) NOT NULL DEFAULT '' PRIMARY KEY
) ENGINE=MYISAM DEFAULT CHARSET=gbk;

方法三
CREATE TABLE `TEST` (
uname varchar(18) NOT NULL DEFAULT ''
) ENGINE=MYISAM DEFAULT CHARSET=gbk;

ALTER TABLE test ADD PRIMARY KEY(uname);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式