SQL语句学习(二)
为一张表添加外键:
这里我们希望再建一张订单的表为t_order,包含order_id,customer_id和price:
CREATE TABLE t_order(order_id INT(11) NOT NULL auto_increment PRIMARY KEY,
customer_id INT(11) NOT NULL,
price DECIMAL(10,2)
);
我们按照之前所学的建立了这张表,但是实际上,我们希望这张表和之前的表应该是有某种约束,因此我们就需要为这行表添加一个外键。
和添加主键的语法类似的,我们添加外键:
ALTER TABLE t_order ADD FOREIGN KEY (customer_id) REFERENCES t_customer(customer_id);
或者,我们也可以在建立表的时候,直接设置外键:
CREATE TABLE t_order(order_id INT(11) NOT NULL auto_increment PRIMARY KEY,
customer_id INT(11) NOT NULL,
price DECIMAL(10,2),
FOREIGN KEY (customer_id) REFERENCES t_customer(customer_id)
);
注意:外键只是一个约束!
别名:
有时候名字太长,我们希望能用简写来代替之前的名字,这时候我们就可以设置别名(ALIAS),
我们可以为列设置别名:
SELECT First_name AS f_name, Last_name AS Family FROM t_customer;
我们在输出的结果中可以看到,列的名字已经发生了改变:
同样,我们可以设置表的别名:
SELECT t_c.customer_id FROM t_customer AS t_c;
乍一看,使用别名似乎更加费事了。但是,我们看下面的SQL语句:
SELECT t_order.order_id, t_order.price FROM t_order, t_customer WHERE t_customer.First_name = 'MeiMei';
注意,我们虽然没有直接从t_customer中查相关条件,但是FROM后面也要写上t_customer,这是因为我们将这两个做了笛卡尔积,然后在结果中再筛选。
我们再来看看更长的查询:
SELECT t_order.order_id, t_order.price, t_customer.customer_id FROM t_order, t_customer WHERE t_customer.First_name = 'MeiMei';
SQL语句里两张表的名字出现了很多次,我们再看看使用别名后的SQL语句:
SELECT o.order_id, o.price, c.customer_id FROM t_order AS o, t_customer AS C WHERE c.First_name = 'MeiMei';
是不是简洁了一些。
实际上,当我们需要联合查询两张表时,我们应该使用JOIN 将两张表联合起来。
SELECT * FROM t_order INNER JOIN t_customer ON t_customer.customer_id = t_order.customer_id;
INNER JOIN 就相当于JOIN,是两张表的交集,而OUTER JOIN还分为LEFT JOIN,RIGHT JOIN和FULL JOIN。LEFT JOIN左边的集合,当后边无该记录时,用NULL填充,而RIGHT JOIN是右边的集合,左边没有的记录用NULL填充。FULL JOIN是求并集,没有的记录用NULL填充。
UNION和UNION ALL可以用来合并两个查询的结果:
SELECT Last_name FROM t_customer UNION SELECT customer_id FROM t_order;
我们会得到一个以Last_name为列名的一个表,然后将前后两次的筛选记录都合并在内。这样的筛选并没有什么实际意义,只是用来练习语法。
当然我们可以筛选出多个列,但是前后两次筛选的列数必须相同,并且结果中总以第一次查询的列名表示。
UNION ALL会显示重复的记录,而UNOIN则不会。
SQL语句学习(二)的更多相关文章
- SQL语句学习手册实例版
SQL语句学习手册实例版 表操作 例1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE TABLE STUDENTS (SNO NUMERIC (6, ...
- SQL 语句学习
Sql语句学习 一. select playerId, count(playerId) as num from OperateLog_$i where playerId > 0 and roo ...
- SQl语句学习笔记(二)
merge into when matched then... when not mached then... merge into t_road_pre_parameter a fr ...
- SQL知识点、SQL语句学习
一. 数据库简介和创建1. 系统数据库在安装好SQL SERVER后,系统会自动安装5个用于维护系统正常运行的系统数据库: (1)master:记录了SQL SERVER实例的所有系统级消息,包括实例 ...
- Ibatis.Net 动态SQL语句学习(六)
在学习动态SQL语句之前,首先必须对条件查询有一定了解,先来学习如何向IBatis.Net的映射文件里传入参数吧. 一.条件查询 1.传递单个参数 如根据Id查询: <select id=&qu ...
- 精心整理的SQL语句学习大全
-语 句 功 能 --数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据-数据 ...
- Python Django 之 直接执行自定义SQL语句(二)
转载自:https://my.oschina.net/liuyuantao/blog/712189 一般来说,最好用 Django 自带的模型来实现这些操作.这里仅仅只是为了学习使用原始 SQL 而做 ...
- SQL语句整理(二) 数据定义语言DDL
前言: 这是我学数据库时整理的学习资料,基本上包括了所以的SQL语句的知识点. 我的教材是人大王珊老师的<数据库系统概论>. 因为是手打的,所以会用一些细节打错了,但都挺明显也不多(考完试 ...
- SQL语句学习(一)
这篇文章用来记录再学习SQL语句的过程. 首先,我们从简单的创建表开始.创建表的语法是CREATE TABLE 表名(列1的名字 列1的属性,列2的名字 列2的属性...); 如果希望将某一列作为 ...
随机推荐
- 1021 Deepest Root (25 分)
A graph which is connected and acyclic can be considered a tree. The height of the tree depends on t ...
- 定位 iframe
定位iframe # 1.有id,并且唯一,直接写id driver.switch_to_frame("x-URS-iframe") driver.switch_to.frame( ...
- 怎样让scratch里的人物两腿走动
需要人物角色至少有两个“造型”,表现走路时的两个动作.以默认的“小猫”觉色为例,它有两个“造型”,可以用来表现奔跑的动作. 但是要想让小猫跑起来,需要脚本来实现,简单跑动脚本如下 scratch学习视 ...
- MyBatis(一):第一个MyBatis程序
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...
- Linux网络安全篇,认识防火墙(一)
一.概念 防火墙分为软件防火墙和硬件防火墙.我们的主要讨论范围为软件防火墙. 软件防火墙又分为网络型和单一型的管理. 1.单一主机型防火墙 (1)数据包过滤型的Netfilter (2)依据服务软件程 ...
- 【three.js第五课】光线的添加和感光材料
材料分类: MeshBasicMaterial:基础网孔材料,一个以简单着色(平面或线框)方式来绘制几何形状的材料.MeshLambertMaterial:兰伯特网孔材料,一种非发光材料(兰伯特)的表 ...
- numpy basic sheatsheet
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.NumPy 通常与 SciPy(Scien ...
- ASE课程总结 by 朱玉影
收获: 最大的收获应该就是对待选题要慎重吧,虽然前期做了一下调研,但是还是不够,所以到最后我们的项目才会不能公开发布,项目中间也是波折不断,导致我们走了很多弯路,浪费了很多时间吧.选题一定要慎重,慎重 ...
- C. Standard Free2play --div
https://codeforces.com/contest/1238/problem/C 题意:下台阶的时候只有一种方式,拉动当前台阶x的 level,然后当前的台阶关闭,调到下边的台阶x-1,如果 ...
- MySQL系列操作
Linux环境下安装使用MySQL Portal 数据备份&恢复 Portal