SQL必知必会 记录
登录数据库
mysql -u root -p
查看所有数据库 show databases;
选择数据库 use 数据库名;
查看所有表 show tables
查看表结构 describe 表名
检索数据
1、SELECT语句
2、检索单个列
SELECT 列名 FROM 表;
3、检索多个列
SELECT prod_id,prod_name,prod_price
FROM Products;
4、检索所有列
SELECT * FROM Products;
排序检索数据 ORDER BY
1、排序数据
SELECT PROD_name
FROM Products
ORDER BY prod_name;
2、按多个列排序
SELECT prod_id,prod_name,prod_price
FROM Products
ORDER BY prod_price,prod_name;
3、按照位置排序
SELECT prod_id,prod_name,prod_price
FROM Products
ORDER BY 2,3;
4、指定排序方向
SELECT prod_id,prod_name,prod_price
FROM Products
ORDER BY prod_price DESC,prod_name; DESC 降序
过滤数据
1、使用WHERE字句
SELECT prod_id,prod_name,prod_price
FROM Products
WHERE pro_price = 3.49;
ORDWE BY 位于WHERE后
2、WHERE子句操作符
= <> != < <= !< > >= !> BETWEEN IS NULL
范围检查 WHERE prod_price BETWEEN 5 AND 10
空值检查 IS NULL
高级数据过滤
1、组合WHRER子句 使用AND 和OR,AND优先级高
2、IN操作符 和OR有相同的功能
SELECT prod_name,prod_price
FROM Products
WHERE vend_id IN ('DLL01','BRS01')
可以包含其他SELECT语句
3、NOT操作符(MYSQL只用来否定EXISTS)
用通配符进行过滤
1、LIKE操作符
% 任何字符出现任意次数
_ 只匹配1个字符
[] 指定字符集 (mysql不支持)
2、通配符不应过分使用,速度较慢
创建计算字段
1、计算字段是运行时在SELECT语句内创建
2、concatenate 拼接 将值连结到一起构成单值
使用+ 部分数据库使用||
mysql都不支持,使用CONCAT()函数
select concat(first_name,'.',last_name),emp_no
from employees
where emp_no < 10010;
使用别名
字段或值的替换名
mysql> SELECT CONCAT(first_name ,last_name) AS full_name
-> FROM employees
-> WHERE emp_no < 10010
-> ORDER BY full_name;
3、执行算术计算
SELECT pro_id,quantiy*item_price AS expanded_price
FROM OrderItems
基本算数操作符 + - * /
使用函数
1、使用函数存在不同数据库之间的移植性问题。
2、函数
文本处理函数
LOWER()
UPPER()
LENGTH()
LTRIM()
RTRIM()
等
日期处理函数
移植性差
数值处理函数
ABS()、COS()、SIN()、TAN()、
EXP()指数 PI()返回园周率 SQRT()返回平方根
汇总数据
1、聚集函数
AVG() 平均值
COUNT()某列行数
MAX()某列最大值
MIN()最小值
SUM()某列值之和
2、聚合不同值
SELECT COUNT(DISTINCT birth_date)
FROM employees
where MONTH(birth_date )= 2;
DISTINCT 只包含不同的值
3、组织聚合函数
SELECT可以包含多个聚合函数
分组数据
1、创建分组
GROUP BY 必须出现在WHERE子句之后
例子
SELECT birth_date ,COUNT(*)
FROM employees
WHERE birth_date > '1965-01-01'
GROUP BY birth_date
2、过滤分组
HAVING 与WHERE字句用法相似,用于分组
例子
SELECT birth_date ,COUNT(*)
FROM employees
WHERE birth_date > '1965-01-01'
GROUP BY birth_date
HAVING COUNT(*) >60;
3、分组和排序
GROUP BY 和ORDER BY 配合使用
使用子查询
1、在WHERE语句中使用SELECT
SELECT CONCAT(first_name ,'.',last_name) AS name
FROM employees
WHERE emp_no IN (SELECT emp_no
FROM titles
WHERE title ='Manager');
2、作为计算字段使用子查询
联结表
1、联结
关系表
主键
2、创建联结 所有的联结都有WHERE子句
SELECT first_name ,last_name,title
FROM employees,titles
WHERE employees.emp_no = titles.emp_no AND title = 'Manager';
等值联结或内部联结,基于两表之间的等值测试
创建高级联结
1、使用表别名 只在查询中使用,不返回客户机
SELECT first_name ,title
FROM employees AS E,titles AS T
WHERE E.emp_no = T.emp_no
AND E.emp_no < 10010;
2、使用不同类型的联结
自联结
同一个表取不同的别名
自然联结
排除相同的列多次出现,,每个列只返回一次。
外部联结
SELECT Customer.id,Order.order_num
FROM CUstomer LEFT OUTER JOIN Order
ON Customer.id =Order.id 左联结
右联结RIGHT
完全联结 full join
交叉联结 迪卡尔积
组合查询
1、创建组合查询
使用UNION SELECT语句使用UNION隔开
每个查询必须包含相同的列,表达式或聚集函数
UNION查询结果集自动去除重复行 UNION ALL 不取消重复行
2、组合查询结果
只能使用一条ORDER BY 在最后一条SELECT语句后
插入数据
1、插入完整行
mysql> INSERT INTO blog_blogspost
-> VALUES('2',
-> 'insert',
-> 'hehehehehehehe',
-> '2016-08-18 00:00:00',
-> 'test'
-> );
安全插入方法
INSERT INTO blog_blogspost
(id,title,body,timestamp,tag)
VALUES('3', 'insert', 'hehehehehehehe', '2016-08-18 00:00:00', 'test' );
3、插入检索出的数据
INSERT INTO Customers(id,email)
SELECT id,email
FROM CustNew;
更新和删除数据
UPDATE DELETE
1、更新数据 UPDATE
UPDATE 一定要使用WHERE作为过滤行,否则全部更新
mysql> UPDATE blog_blogspost
-> SET body = 'update test'
-> WHERE id = 1;
2、删除数据 DELETE
mysql> DELETE
-> FROM blog_blogspost
-> WHERE id = 3;
3、删除和更新前使用SELECT验证是否正确。
创建和操纵表
1、创建表
CREATE TABLE 表名
(
id 类型 NOT NULL,
name 类型 NOT NULL DEFAULT tom
);
NULL 为默认设置 DEFAULT 默认值
mysql获得系统日期CURRENT_DATE()
2、更新表
增加列 所有DBMS都支持
其他删除、更改、重命名列不同一
增加列
mysql> ALTER TABLE copy
-> ADD phone_name char(13);
删除表
DROP TABLE 表名;
DROP TABLE auth_user;
重命名表
RENAME TABLE copy To coppy;
使用视图
感觉像函数。
优点:1)重用SQL语句,简化SQL操作
2)使用表的组成部分,保护数据
3)更改数据格式和表示
性能问题:使用大量视图应对性能进行测试
CREATE VIEW 视图名 AS
正常检索语句;
使用存储过程
SQL必知必会 记录的更多相关文章
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 《SQL必知必会》学习笔记(一)
这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...
- SQL 必知必会
本文介绍基本的 SQL 语句,包括查询.过滤.排序.分组.联结.视图.插入数据.创建操纵表等.入门系列,不足颇多,望诸君指点. 注意本文某些例子只能在特定的DBMS中实现(有的已标明,有的未标明),不 ...
- 你必知必会的SQL面试题
写在前面的话 本文参考原博<走向面试之数据库基础:一.你必知必会的SQL语句练习-Part 1>和<走向面试之数据库基础:一.你必知必会的SQL语句练习-Part 2>进行练习 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- 《SQL必知必会》笔记
SQL必知必会(第4版) 作者:[美]Ben Forta 本书介绍了sql在不同数据库工具(Oracle.SQLite.SQL server.MySQL.MariaDB.PostgreSQL...)是 ...
- .NET零基础入门09:SQL必知必会
一:前言 仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题.我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下: 1:内存中.缺点,退出游戏, ...
- SQL 必知必会 总结(一)
SQL必知必会 总结(一) 第 1 课 了解SQL 1.数据库(database): 保存有组织的数据容器(通常是一个文件或一组文件). 2.数据库管理系统(DBMS): 数据库软件,数据库是通过 D ...
- SQL必知必会 -------- SELECT、注释
主要是看<SQL必知必会>第四版的书,而写的一些SQL笔记,红色的是方便以后查询的sql语句,工作中主要是使用mysql数据库,所以笔记也是围绕mysql而写的. 下文调试的数据表sql语 ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
随机推荐
- 基于网页api(接口)实现查快递
之前在网上找到一款下载某慕课网站的java版软件,我想知道他是怎么实现:对于视频的下载的,毕竟网页源码中大都不会直接放视频的地址,但是没有公布源码,我就反编译,等到了部分“源码”,逻辑上还是有些问题, ...
- JavaScript数据结构与算法-链表练习
链表的实现 一. 单向链表 // Node类 function Node (element) { this.element = element; this.next = null; } // Link ...
- XShell安装(五)
Xshell就是一个远程控制Centos的软件:(用XShell比较方便,试用的都知道,界面也人性化) 详细介绍请看 百度百科 我随便百度下载了一个中文版的 给下地址 http://rj.baidu ...
- AS(Autonomous System)
在互联网中,一个自治系统(英文:Autonomous system, AS)是指在一个(有时是多个)实体管辖下的所有IP网络和路由器的 全体,它们对互联网执行共同的路由策略. 自治系统(Autonom ...
- 使用Compute Engine工具连接Linux VM
Links: Connecting to Linux Instances 内容: 要连接Linux VM实例,必须要有一个SSH(Secure Shell)秘钥.无论何时连接一个LinuxVM实例(通 ...
- 爬虫基本库之beautifulsoup
一.beautifulsoup的简单使用 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- NavigationDrawer和NavigationView-Android M新控件
Translucent System Bars-4.4新特性 Toolbar-5.0新特性 NavigationDrawer 简介 NavigationDrawer 是 Google 在 Materi ...
- 预防SQL注入攻击
/** * 预防SQL注入攻击 * @param string $value * @return string */ function check_input($value) { // 去除斜杠 if ...
- php token 生成
php token的生成 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过 ...
- git基础一
礼节为上: 从这次的武昌砍人时间分析:一定要对别人客气一点,无论在餐厅,或者任何事情上面一定要对别人客气 即使自己遇到很烦心的事情,也要保持情绪,因为如果遇到神经病,刚好自己没有控制好自己的情绪,自己 ...