MYSQL把查询多个的结果放在一个列里,用逗号隔开

MYSQL把查询多个的结果放在一个列里,用逗号隔开

2018年11月22日 10:52:16 沙漠里的木木夕__GTT 阅读数:399

例如: 一个老师教不同课程, 打印出老师名和其下面的所有课程
GROUP_CONCAT

SELECT t.tname,GROUP_CONCAT(c.cname) 
FROM teachers AS t
 LEFT JOIN courses AS c 
 ON t.tno=c.tno GROUP BY t.tname
  • 1
  • 2
  • 3
  • 4

执行结果:
在这里插入图片描述

### 如何使用SQL语句创建表 在SQL中,`CREATE TABLE` 是用来定义新表的关键字。以下是关于如何通过SQL语句创建表的具体说明。 #### 基础语法 最基本的 `CREATE TABLE` 语法如下所示[^2]: ```sql CREATE TABLE 表名称 ( 名称1 数据类型, 名称2 数据类型, 名称3 数据类型, ... ); ``` 此语法允许开发者指定每一的名称及其对应的数据类型。每一对名和数据类型之间需要用逗号隔开,而最后一项不需要附加逗号。 #### 创建带有约束条件的表 除了基本的定义之外,在实际应用中通常还需要加入一些约束条件来确保数据的一致性和完整性。常见的约束包括但不限于主键、外键、唯一性以及默认值等[^3]。 ##### 主键约束 主键是用来唯一标识表中的每一行记录的一个多个字段组合而成。可以单独设置某为单字段主键或者由多共同组成复合主键: - **单字段主键** ```sql CREATE TABLE test_tb1 ( id INT(11) PRIMARY KEY, name VARCHAR(25) ); ``` - **多字段联合主键** ```sql CREATE TABLE test_tb1 ( id INT(11), name VARCHAR(25), age INT(11), PRIMARY KEY(id, name) ); ``` ##### 外键约束 当两个表存在关联关系时,可以通过设定外键实现参照完整性控制。下面的例子展示了如何在外键上添加额外的行为选项如级联删除或更新操作[^3]: ```sql CREATE TABLE order_details ( order_id INT, product_id INT, quantity INT, FOREIGN KEY (order_id) REFERENCES orders(order_id) ON DELETE CASCADE ); ``` ##### 其他常用约束 - **非空约束**: 确保该不允许有NULL值。 ```sql CREATE TABLE employees ( employee_id INT NOT NULL, first_name VARCHAR(50) NOT NULL ); ``` - **唯一性约束**: 指定某一或多不能含有重复值。 ```sql CREATE TABLE users ( user_id INT PRIMARY KEY, email VARCHAR(255) UNIQUE ); ``` - **属性值自增**: 自动为某些数值型字段赋初值并按顺序递增。 ```sql CREATE TABLE products ( product_id INT AUTO_INCREMENT, product_name VARCHAR(100), PRIMARY KEY(product_id) ); ``` - **默认值约束**: 当未给特定提供显式的输入值时,默认采用预设好的固定值。 ```sql CREATE TABLE settings ( setting_key VARCHAR(50), value TEXT DEFAULT 'default_value' ); ``` - **检查约束**(MySQL 8.0及以上支持): 对插入到某个的可能取值范围加以限定。 ```sql CREATE TABLE students ( student_id INT PRIMARY KEY, gender ENUM('M', 'F'), score INT CHECK(score >= 0 AND score <= 100) ); ``` ### 示例总结 综上所述,利用SQL语句创建一张完整的表格不仅涉及简单的声明过程,还应考虑各种必要的业务逻辑需求并通过相应的约束机制予以满足。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值