Mysql
 sql >> база данни >  >> RDS >> Mysql

Съдържание по потребител:две таблици с колони с едно и също име или се присъединяват?

Много често използвана концепция в ситуация като тази е да имате таблица с потребители и таблица за публикации, свързвайки ги заедно с уникален идентификатор. Този идентификатор може да бъде всичко - сериализиран идентификатор, потребителско име, имейл адрес и т.н. - стига да е уникален. Свързването се извършва с помощта на ограничение за външен ключ. Как точно се постига това в MySQL не знам, но в Postgres се прави така:

CREATE TABLE users (
  id serial PRIMARY KEY,
  name text
);

CREATE TABLE posts (
  content text,
  user_id integer REFERENCES users(id) NOT NULL
);

След това таблиците се обединяват чрез свързване. Това може да стане по няколко начина, но ето кръстосано присъединяване след вмъкване на някои стойности, с които да играете:

@> INSERT INTO users (name) VALUES ('James');
@> INSERT INTO users (name) VALUES ('Jones');
@> INSERT INTO posts (content, user_id) VALUES ('Hello from James.', 1);
@> INSERT INTO posts (content, user_id) VALUES ('Greetings from Jones.', 2);
@> SELECT U.id AS user_id, U.name, P.content \
   FROM users U, posts P \
   WHERE U.id = P.user_id;

 user_id | name  |        content
---------+-------+-----------------------
       1 | James | Hello from James.
       2 | Jones | Greetings from Jones.

YMMV в MySQL, но мисля, че конструкциите по-горе ще работят веднага.

(редактиране:Добавени INSERT за пояснение)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какви са слабите страни на този метод за удостоверяване на потребителя?

  2. Как да получите достъп до отдалечен сървър с локален клиент phpMyAdmin?

  3. MySQL Показване на индекси в базата данни

  4. Инсталиране на pdo_mysql на Amazon EC2 с PHP 5.5

  5. Как да свържете две таблици с ssp.class.php