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的属性...); 如果希望将某一列作为 ...
随机推荐
- 【Linux】LAMP环境搭建(简易版)
一. 辅助软件包安装 准备工作:1.Linux系统准备 恢复快照(初始化安装) 设置IP 关闭SELINUX 配置yum源 2.yum -y install gcc gcc-c++ 3.关闭防火墙 4 ...
- Docker基础修炼2--Docker镜像原理及常用命令
通过前文的讲解对Docker有了基本认识之后,我们开始进入实战操作,本文先演示Docker三要素之镜像原理和相关命令. 本文的演示环境仍然沿用上一篇文章在本地Centos7中安装的环境,如果你本地没有 ...
- WordPress快速增加百度收录,加快网站内容抓取
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 利用百度站长平台提供的链接 ...
- Python爬虫系列(七):提高解析效率
如果仅仅因为想要查找文档中的<a>标签而将整片文档进行解析,实在是浪费内存和时间.最快的方法是从一开始就把<a>标签以外的东西都忽略掉. SoupStrainer 类可以定义文 ...
- springboot https证书配置
如果公司有提供证书如: 拿到证书秘钥可直接在springboot 的配置文件中配置: server.ssl.key-store=classpath:cert.pfx server.ssl.key-st ...
- CKEDITOR (FCKEDITOR) --- 目前最优秀的可见即可得网页编辑器之一
FCKEDITOR 编辑 同义词 CKEditor一般指FCKEDITOR FCKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写.具备功能强大.配置容易.跨浏览器. ...
- mysql优化之分区
mysql分区类型 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会 ...
- 如何使用Three.js加载obj和mtl文件
OBJ和MTL是3D模型的几何模型文件和材料文件. 在最新的three.js版本(r78)中,以前的OBJMTLLoader类已废弃. 现在要加载OBJ和MTL文件,需要结合OBJLoader和MTL ...
- Python 开发工具推荐
对于开发工具,仁者见仁智者见智,关键是自己喜欢,用着顺手就好,不用刻意去追求别人用的是什么工具. 这里给大家主要推荐三款工具,分别是PyCharm.Sublime Text 3.VS Code,因为这 ...
- 统计子串数量,Python基础
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:陈YL PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...