数据库学习---SQL基础(一)
| 操作符 | 描述 |
| = | 等于 |
| <> | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN | 在某个范围内 |
| LIKE | 搜索某种模式 |
[charlist] 字符列表中的任何单一字符
BETWEEN 操作符
操作符 BETWEEN ... AND(在什么之间) 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期
查找年龄在15到20岁的人的记录where age between 15 and 20
between and也可以转化为:age>=15 and age<=20但不同数据库转化可能不同。可以是age>=15 and age<20或者是age>15 and age<20
ps:效率问题
查询数值建议使用>=,<=。查询文本建议使用between and 。不同数据库对选取值是否包含15和20不确定。用之前先测试
Alias别名
为列名称或表名称指定别名select * from table_name as alias_name
为很复杂的表名设置别名方便后面的条件查找。(就是为了查看和书写方便)
SELECT po.OrderID, p.LastName, p.FirstName
FROM PersonsAS p, Product_OrdersAS po
WHERE p.LastName='Adams' AND p.FirstName='John'
表连接


查询过程:先将student表和sc表内联接关键字段为student.ID=sc.sID 连接后的表:

然后直接从表中查找name和grade。
left join左连接。如果右表中有关键字与左表中关键字匹配的值则将这条记录与左表的记录连接
如果左表中某一行没有与右表的数据匹配则返回改行数据,其余列置为空。
先给student表增加一个记录insert into student values(3,王五,17)
然后我们所有学生信息及各个课程的分数
select * from student left join sc on student.ID=sc.ID
左连接的结果。看下图左连接

以左表为基础进行匹配,成功则连接,不成功如id为3的记录,右表中没有id(student)为3的记录。返回连接后数据如图(student表中的行信息写入,sc表中数据置为空。)
与inner join的区别:inner join只会返回关键字相等的行连接记录,left join 会返回左表的所有记录。
right join右连接与左连接相反,会返回右表所有行。修改上面sql语句
select * from sc right join student on student.ID=sc.ID

full join全连接会返回左右表中所有行,即使左右表中没有与之匹配的记录。或者说是left join和right join的互补。
我们给sc表增加记录insert into sc values(66,55,99)
变化后表数据为

查询所有的人的信息及其课程信息和分数
select * from student full join sc on student.ID=sc.ID

参考资料:
MySQL中嵌套子查询删除出错解决方案
https://zhidao.baidu.com/question/682189710270390092.html
数据库学习---SQL基础(一)的更多相关文章
- 数据库学习---SQL基础(二)
数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) 上篇复习的sql的增删改查,and ,or ,>=, <=,!=等逻辑运算符,还有in ...
- 数据库语言——SQL——基础部分——初篇
概述 SQL全称为Structured Query Language,是关系型数据库的语言标准,它并不与特定的数据库商品类型有关,例如Mysql,Oracle,DB2等等都可以使用SQL语言,它与特定 ...
- 学习sql基础注入的方法
作为一个初学者的我,经学习发现基础真的十分重要, 这个随笔是写给我自己的希望我能坚持住 当然,我也希望对其他人有点帮助 在sql注入的过程中,我越发感觉那些基础函数的重要性 其实我感觉sql注入其实就 ...
- Oracle数据库之SQL基础和分支循环
一.SQL基础语言 DECLARE --声明 a ); --变量或对象 BEGIN a:='小明';-- := 表示给一个变量赋值 dbms_output.put_line(a); --输出用 dbm ...
- iOS数据库学习(2)-基础SQL语句
/* 1. 创建一个数据表 */ CREATE TABLE IF NOT EXISTS t_dog (name text, age integer); CREATE TABLE IF NOT EXIS ...
- 聊聊数据库~3.SQL基础篇
上篇回顾:聊聊数据库~SQL环境篇 扩展:为用户添加新数据库的权限 PS:先使用root创建数据库,然后再授权grant all privileges on 数据库.* to 用户名@"%& ...
- Oracle数据库之SQL基础(二)
一.约束 ❤ 1.约束概述 约束作用: (1)定义规则 (2)确保完整性:包括数据的精确性.可靠性.以确保数据不会出错,或者尽量减少出错. 约束的类型: (1)非空约束 (2)主键约束 (3)外键约束 ...
- Oracle数据库之SQL基础(一)
主要内容:用户与表空间:表与约束:查询语句. 一.概述 Oracle安装:访问官网,下载 二.用户与表空间 在安装Oracle时在开始菜单里可以用sql puls登录oracle. ★1.系统用户 s ...
- python--11、数据库及SQL基础
常用命令记录 查看库中所有表的引擎 SHOW TABLE STATUS FROM `center_main_db`; 还有一个更简洁,查询cmol_system_db库所有表的存储引擎\ SELECT ...
随机推荐
- office2010安装不成功提示缺少MSXML 6.10.1129.0?
office2010安装 1. office重装 由于之前重装系统后安装office2010很顺利,这次删除office2010,由于没有删除干净,在程序删除面板中误点删除了其他文件所致,所以在此安装 ...
- IDEA14/Eclipse+Tomcat7热部署,jrebel6破解与eclipse配置
换了最新的eclipse,以前很多的插件都用不了,对于web开发的人来说,jrebel这种防重启神器必须要配备,防止修改类名.java文件.配置文件后的tomcat重启. 首先给一个下载地址: htt ...
- shell 脚本 抽取指定数量的随机学生
#!/bin/bash # #!/bin/bash # read -p '输入数' c #指定抽取的学生人数 jw=('王浩' '谢云生' '黄科杨' '何星宇' '张宸兵' '邓培林' '刘桃' ' ...
- hdu 5040 bfs
http://acm.hdu.edu.cn/showproblem.php?pid=5040 一个人拿着纸盒子往目的地走 正常情况下一秒走一格 可以原地不动躲在盒子里 也可以套着盒子三秒走一格 ...
- Mina Session
Chapter 4 - Session The Session is at the heart of MINA : every time a client connects to the server ...
- tomcat监听activemq jms配置
当从webservice接收到信息的时候,消息生产者producer立刻把收到的消息放入到jms里面,消费者cusomer这时要设置一个监听,当生产者发送消息时,只要消息被发出来,消费者就会接收到消息 ...
- Spring Boot 应用系列 3 -- Spring Boot 2 整合MyBatis和Druid,多数据源
本文演示多数据源(MySQL+SQL Server)的配置,并且我引入了分页插件pagehelper. 1. 项目结构 (1)db.properties存储数据源和连接池配置. (2)两个数据源的ma ...
- linux系统编程之管道(一):匿名管道(pipe)
一,什么是管道 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道: 只能用于父子进程或者兄弟进程之间(具有 ...
- EF 多对多循环引用序列化失败 解决办法
错误:Self referencing loop detected with type 'System.Data.Entity.DynamicProxies.tbldph_901D48A194FB31 ...
- 使用filter进行登录验证,并解决多次重定向问题
最近在做关于filter登录验证的功能,防止未登录的用户直接通过地址进入系统 LoginFilter类:继承Filter接口 package com.ss.filter; import java.io ...