English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، ستعلم كيفية تحديد أسماء مكررة لجداول أو أعمدة في جملة SQL.
عندما يتم دمج جداول متعددة في استعلام واحد، يجب إضافة اسم الجدول المالك إلى كل اسم عمود، مثل employees.dept id, departments.dept id وما إلى ذلك، لتجنب الارتباك وتجنب الأخطاء في الأعمدة التي لها نفس الاسم في جدولين مختلفين. ولكن إذا كان اسم الجدول طويلاً وكان يظهر عدة مرات في الاستعلام، فإن كتابة الاستعلام سيكون مهمة صعبة ومزعجة.
لذلك، من أجل توفير الوقت وتجنب كتابة اسم الجدول الكامل، يمكن تقديم اسم بديل قصير لكل جدول واستخدامه في الاستعلامات للاشارة إلى الأعمدة.
للتفهم هذا بشكل واضح، دعونا ننظر فيما يليemployeesوdepartments表。
+--------+--------------+------------+---------+ | emp_id | emp_name | hire_date | dept_id | +--------+--------------+------------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 4 | | 2 | Tony Montana | 2002-07-15 | 1 | | 3 | Sarah Connor | 2005-10-18 | 5 | | 4 | Rick Deckard | 2007-01-03 | 3 | | 5 | Martin Blank | 2008-06-24 | NULL | +--------+--------------+------------+---------+ | +---------+------------------+ | dept_id | dept_name | +---------+------------------+ | 1 | Administration | | 2 | Customer Service | | 3 | Finance | | 4 | Human Resources | | 5 | Sales | +---------+------------------+ | |
表: employees | 表: departments |
下面是一个查询,通过使用公共的dept id字段将雇员和部门表连接在一起,来检索雇员的id、名称和他们的部门名称。
SELECT employees.emp_id, employees.emp_name, departments.dept_name FROM employees LEFT JOIN departments ON employees.dept_id = departments.dept_id ORDER BY emp_id;
这是上一个使用表别名的查询的压缩版本:
SELECT t1.emp_id, t1.emp_name, t2.dept_name FROM employees AS t1 LEFT JOIN departments AS t2 ON t1.dept_id = t2.dept_id ORDER BY emp_id;
如果执行这些语句中的任何一条,将得到相同的输出,如下所示:
+--------+-----------------+--------------------+ | emp_id | emp_name | dept_name | +--------+-----------------+--------------------+ | 1 | Ethan Hunt | Human Resources | | 2 | Tony Montana | Administration | | 3 | Sarah Connor | Sales | | 4 | Rick Deckard | Finance | | 5 | Martin Blank | NULL | +--------+-----------------+--------------------+
كما ترون، يمكن لتسمية الجداول أن توفر الكثير من الكتابة.
انظر إلى “ اتصالات SQLجزءًا، لتتعرف على المزيد عن الاتصال بالجداول.
في MySQL، عندما تستخدم دالة SQL لإنشاء مخرجات مخصصة، قد تكون أسماء أعمدة الناتج صعبة الفهم أو معقدة. في هذه الحالة، يمكنك استخدام اسم بديل مؤقت للأعمدة.
اعمل على الاستعلام التالي، حيث نستخدم تعبيرًا لإعادة تشكيل تاريخ العرض في عمود hire_date لإنشاء مخرجات مخصصة:
-- قواعد البيانات MySQL SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') FROM employees;
إذا تم تنفيذ الجملة السابقة، ستحصل على مخرجات كما يلي:
+--------------+-------------------------------------+ | emp_name | DATE_FORMAT(hire_date, '%M %e, %Y') | +--------------+-------------------------------------+ | Ethan Hunt | May 1, 2001 | | Tony Montana | July 15, 2002 | | Sarah Connor | October 18, 2005 | | Rick Deckard | January 3, 2007 | | Martin Blank | June 24, 2008 | +--------------+-------------------------------------+
كما ترون، كان علامة السطر الأخير من المخرجات طويلة ومعقدة. يمكننا حل هذه المشكلة باستخدام اسماء الأعمدة كما يلي:
-- قواعد البيانات MySQL SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') AS hire_date FROM employees;
إذا تم تنفيذ الجملة السابقة، ستحصل على مخرجات أكثر وضوحًا كما يلي:
+--------------+------------------+ | emp_name | hire_date | +--------------+------------------+ | Ethan Hunt | May 1, 2001 | | Tony Montana | July 15, 2002 | | Sarah Connor | October 18, 2005 | | Rick Deckard | January 3, 2007 | | Martin Blank | June 24, 2008 | +--------------+------------------+