对于账号表,是用户名为主键,还是用户名+密码为主键?
时间: 2023-05-28 20:04:41 浏览: 124
一般情况下,账号表的主键应该是一个唯一的标识符,可以是一个自增的数字,也可以是一个UUID等。这样可以保证每个账号都有唯一的标识符,方便进行数据的操作和管理。
用户名和密码都不适合作为账号表的主键,因为它们都可能会发生变化,比如用户修改密码、更改用户名等等。如果使用用户名作为主键,那么每次修改用户名都需要更新所有相关的表,这会给系统带来很大的开销。如果使用密码作为主键,那么密码的长度和复杂度都会受到限制,不利于密码的安全性。
因此,建议将用户名和密码都作为账号表的普通字段,而不是主键。
相关问题
oracle 查询用户名表名列名主键
要查询Oracle中的用户名、表名、列名以及主键信息,可以通过以下的SQL查询语句完成:
```
SELECT u.username AS user_name, t.table_name, c.column_name, c.position AS primary_key_position
FROM all_users u
JOIN all_tables t ON u.username = t.owner
JOIN all_tab_columns c ON t.owner = c.owner AND t.table_name = c.table_name
JOIN all_constraints pk ON t.owner = pk.owner AND t.table_name = pk.table_name AND c.column_name = pk.column_name AND pk.constraint_type = 'P'
ORDER BY u.username, t.table_name, c.column_name;
```
该查询语句使用了四个关联的表:all_users、all_tables、all_tab_columns 和 all_constraints,通过多个连接条件来获取所需的信息。其中,u.username AS user_name 用于查询用户名,t.table_name 查询表名,c.column_name 查询列名,pk.constraint_type = 'P' 用于筛选出主键信息。
查询结果会按照用户名、表名和列名的顺序进行排序。主键信息也会显示在结果中,主键位置使用 primary_key_position 列表示。
注意:以上查询语句只能获取当前数据库用户有权限访问的表和列信息,如果想要查询其他用户的信息,需要相应的权限和访问权限。
如何设定MySQL中某个表中的字段为主键?
在MySQL中,可以使用以下语法将表中的某个字段设置为主键:
```
ALTER TABLE table_name
ADD PRIMARY KEY (column_name);
```
其中,`table_name` 是要设置主键的表名,`column_name` 是要设置为主键的字段名。执行该语句后,该字段就会成为表的主键。注意,一个表只能有一个主键。