SQL学习笔记
SQL(Structured Query Language)学习笔记
[TOC]
Terminal登录数据库
1.登录mysql -u root -p ;
2.显示所有数据库show databases ;
3.使用数据库use “database name” ;
4.显示数据库中所有表 show tables;
5.删除表 drop table ”Customers“;
SQL特性
SQL约束
1.主键
CREATE TABLE OrderItems ( order_num int NOT NULL PRIMARY KEY, order_item int NOT NULL , prod_id char(10) NOT NULL , quantity int NOT NULL , item_price decimal(8,2) NOT NULL );ALTER TABLE Orders ADD PRIMARY KEY (order_num);
2.外键
3.唯一
4.检查
SQL索引
触发器
SQL优化执行计划
索引唯一扫描(index unique scan)
索引范围扫描(index range scan)
索引全扫描(index full scan)
索引快速扫描(index fast full scan)
检索数据
1.多条SQL语句必须以分号(;);
2.SQL语句不区分大小写;
3.select distinct vend_id from products;返回不同的值
destinct作用于所有的列
4.限制结果数量,分页
①Oracle rownum
②MySQL limit
select * from limit m,n m是指m+1条开始,取n条
排序检索数据
1.order by
①select prod_name from products order by prod_name
②select prod_id , prod_price ,prod_name from products order by prod_price,prod_name;
③select prod_id , prod_price ,prod_name from products order by 2,3;
2.order by desc(降序排列)
select prod_id , prod_price ,prod_name from products order by prod_price desc;
desc致应用到直接位于其前面的列名
默认是升序排列
过滤数据(字符需要用'' 数值不需要'')
1.bwtween and
2.is null
3.and,or,in,not
通配符过滤数据
1.必须是用 like 操作符 ,通配符只能用于文本字段
2.% (%不匹配 null)
3._
4.[]
拼接字段(||)
1.select concat(vend_name , '(',vend_country,')') from vendors order by vend_name;
拼接字段,查询的结果没有列名
2.alias 别名 Oracle表别名不能用as
select concat(vend_name , '(',vend_country,')') as vene_title from vendors order by vend_name;
3.计算
select prod_id , quantity , item_price , quantity* item_price as expanded_price from orderitems where order_num=20008;
SQL函数
1.聚集函数
| 函数 | 说明 |
|---|---|
| AVG() | 返回某列的平均值 |
| COUNT() | 返回某列的行数 |
| MAX() | 返回某列的最大值 |
| MIN() | 返回某列的最小值 |
| SUM() | 返回某列值之和 |
**count(*) 对表中的行的数目进行计数 不忽略为null的行
Count(column)对特定的列中具有值的行进行计数**
分组
1.group by
2.having
where 过滤行 having过滤分组
where在数据分组前进行过滤,having在数据分组后进行过滤
select执行顺序
select from where---->group by--->having--->order by
子查询
作为子查询的select语句只能查询单个列
select cust_name ,cust_state ,(select count(*) from orders where orders.cust_id=customers.cust_id) as orders from customers order by cust_name;
联结
等值联结/内联结
select vend_name , prod_name ,prod_price from vendors , products where vendors.vend_id=products.vend_id ;
select vend_name , prod_name ,prod_price from vendors INNER join products on vendors.vend_id=products.vend_id ;
笛卡尔积 叉联结
自联结
自然联结
外联结
1.左外联结
select customers.cust_id ,orders.order_num from customers left outer join orders on customers.cust_id=orders.cust_id;
2.右外联结
select customers.cust_id ,orders.order_num from customers right outer join orders on orders.cust_id=customers.cust_id;
组合查询
UNION
select cust_name ,cust_contact ,cust_email from customers where cust_state in ('IL','IN','MI') union select cust_name ,cust_contact ,cust_email from customers where cust_name='Fun4A11';
规则:
1.UNION必须由2条以上的select语句组成
2.UNION的每个查询必须包含相同的列
SQL学习笔记的更多相关文章
- ORALCE PL/SQL学习笔记
ORALCE PL/SQL学习笔记 详情见自己电脑的备份数据资料
- Oracle之PL/SQL学习笔记
自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...
- [SQL学习笔记][用exists代替全称量词 ]
学习sql的必经问题. 学生表student (id学号 Sname姓名 Sdept所在系) 课程表Course (crscode课程号 name课程名) 学生选课表transcript (studi ...
- SQL学习笔记——SQL初入门,Ubuntu下MySQL的安装
刚开始接触sql,于是准备在Ubuntu下学习sql,就跟着itercast的sql教程开始入门了. 下面只是我个人的记录,高手请绕道: 一. 在安装之前,我们可以用下面这个命令通过开放端 ...
- pl/sql学习笔记---马士兵教程38-48
Procedure Language/Structure query Language 一.关于语言学习 1.数据类型 2.语法 通过例子来学习很快就能明白 set serverputout on ...
- SQL学习笔记之SQL查询练习题1
(网络搜集) 0x00 表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id ...
- SQL学习笔记之MySQL索引知识点
0x00 概述 之前写过一篇Mysql B+树学习,简单的介绍了B+数以及MySql使用B+树的原因, 有了这些基础知识点,对MySql索引的类型以及索引使用的一些技巧,就比较容易理解了. 0x01 ...
- SQL学习笔记:一些高级语句
现在以MySQL为模板.学习的方法和别的数据库写法上会有不同,但是思路基本一致. 用到的数据库表的格式: +----+--------------+-------------------------- ...
- SQL学习笔记:基础SQL语句
目录 语句特点 进入数据库 基本查询语句 SELECT DISTINCT WHERE AND/OR/NOT :逻辑运算符 ORDER BY :排序 基本修改语句 INSERT:添加语句 UPDATE: ...
随机推荐
- Live555研究之二Sleep实现
Live555通过一个while循环来不断读取socket,判断是否有连接进来,但是Live555并没有使用Sleep函数来让线程休眠多少毫秒来降低CPU占用率.Live555是通过select函数来 ...
- 下载网址 wMware
http://blog.sina.com.cn/s/blog_4549d6770102vxue.html 安装mac 文档 http://jingyan.baidu.com/article/ff411 ...
- Python脚本控制的WebDriver 常用操作 <二十八> 超时设置和cookie操作
超时设置 测试用例场景 webdriver中可以设置很多的超时时间 implicit_wait.识别对象时的超时时间.过了这个时间如果对象还没找到的话就会抛出异常 Python脚本 ff = webd ...
- google学术反向代理及IPV6免流量上网【教育网BUPT】
google反向代理 google https://awk.so/ 学术反向代理 https://awk.so/scholar/?hl=zh-CN 2015年1.1号开始流量计费,2元/G 无VPS用 ...
- Tomcat 7 Connector 精读(2) 协议处理器 Http11Protocol(待续)
. Http11Protocol是阻塞式IO的实现,上图的几个方法是它的生命周期相关的方法.
- KMP算法详解 --从july那学的
KMP代码: int KmpSearch(char* s, char* p) { ; ; int sLen = strlen(s); int pLen = strlen(p); while (i &l ...
- php支持rewrite 时创建.htaccess文件
1.win+r 快捷键 运行中输入cmd 2.进入dos界面:输入copy con .htaccess 3.回车后可以输入内容,再次回车即可产生文件
- 题解西电OJ (Problem 1003 -最喜欢的数字)--动态规划
Description zyf最喜欢的数字是1!所以他经常会使用一些手段,把一些非1的数字变 成1,并为此得意不已.他会且仅会的两种手段是: 1.把某个数m除以某个质数p——当然p必须能整除这个数,即 ...
- 深度学习-使用cuda加速卷积神经网络-手写数字识别准确率99.7%
源码和运行结果 cuda:https://github.com/zhxfl/CUDA-CNN C语言版本参考自:http://eric-yuan.me/ 针对著名手写数字识别的库mnist,准确率是9 ...
- debian 显示器使用自定义分辨率
比如你要使用 1440x900 的自定义分辨率,先利用 cvt 计算一个新的 modeline $ cvt 1440 900 输出为: # 1440x900 59.89 Hz (CVT 1.30MA ...