mysql怎么增加uni mysql怎么增加行

MySQL Key值(PRI, UNI, MUL)怎样设置?PRIprimary key表示主键,唯一写法: id bigint(20) unsigned primary key not null,
uniUNIQUE表示唯一写法idbigint(20) unsignedUNIQUEdefault NULL
mul添加了索引写法: alter table test add index suoyin (col_name1);
如果有同时存在,
显示顺序PRIUNIMUL
mysql添加外键时总是报错mysql怎么增加uni我观察到mysql怎么增加uni你mysql怎么增加uni的emp表的username列mysql怎么增加uni , 已经是有UNI的KEY 了
也就是那个emp表的username是唯一的了 。
因此mysql怎么增加uni,理论上
foreign key(username) references emp(username),
这个应该没有问题 。
但是那个
foreign key (name) references emp (name)
由于emp表的name列,是允许有重复行的 。
因此你无法创建外键 。
下面就是一个失败的例子代码, 你可以参考一下
-- 创建测试主表.无主键.
CREATE TABLE test_main2 (
idINTNOTNULL,
valueVARCHAR(10)
);
-- 创建测试子表.
CREATE TABLE test_sub2 (
idINTNOTNULL,
main_id INT,
valueVARCHAR(10),
PRIMARY KEY(id)
);
-- 插入测试主表数据.
INSERT INTO test_main2(id, value) VALUES (1, 'ONE');
INSERT INTO test_main2(id, value) VALUES (2, 'TWO');
-- 插入测试子表数据.
INSERT INTO test_sub2(id, main_id, value) VALUES (1, 1, 'ONEONE');
INSERT INTO test_sub2(id, main_id, value) VALUES (2, 2, 'TWOTWO');
mysql ALTER TABLE test_sub2
-ADD CONSTRAINT main_id_cons2
-FOREIGN KEY (main_id)
-REFERENCEStest_main2(id);
ERROR 1005 (HY000): Can't create table 'test.#sql-608_1' (errno: 150)
默认情况下,无法创建外键
需要创建 unique 约束
mysql ALTER TABLE test_main2
-CHANGE COLUMN id id INT UNIQUE;
Query OK, 2 rows affected (0.17 sec)
Records: 2Duplicates: 0Warnings: 0
unique 约束创建完毕后,外键创建成功 。
mysql ALTER TABLE test_sub2
-ADD CONSTRAINT main_id_cons2
-FOREIGN KEY (main_id)
-REFERENCEStest_main2(id);
Query OK, 2 rows affected (0.14 sec)
Records: 2Duplicates: 0Warnings: 0
mysql怎样增加用户mysql怎样增加用户
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限 。首先用以root用户连入MYSQL , 然后键入以下命令:
mysqlgrant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码 , 那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2 。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了 。
mysqlgrant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉 。
mysqlgrant select,insert,update,delete on mydb.* to test2@localhost identified by "";
另外,也可以通过直接往user表中插入新纪录的方式来实现 。
MySQL数据表的修改:添加约束4.4.7添加约束
语句格式:ALTER TABLE 表名ADDCONSTRAINT约束名 约束类型(字段名)
上面语句格式中,“表名”指定要添加约束的是哪个表,“ADD CONSTRAINT”表示要在表中增加约束,其后的“约束名”是拟增加约束的名字 , “约束类型”是拟增加约束的类型,其后括号里的“字段名”是指约束是在哪一个字段上建立起来的 。

推荐阅读