MySQL笔记 02
SQL对表中数据的CRUD操作:
插入数据:
insert into 表名 (列名1,列名2,....) values (值1,值2,....);
插入部分:
insert into xuesheng (sid,sname,gender) values (001,"张三","男");
插入全部(列名可以省略):
insert into xuesheng values(002,"李四","男",42);
查看表中数据:
select * from xuesheng;
删除表中数据
delete from 表名 (where 条件);
delete from xuesheng where sid =2;
delete:适用于删除数据较少的//一条一条删除
truncate:适用于删除全表//将表删除再新建
更新表中数据
update 表名 set 列名=列的值,列名2=列的值 (where条件);
update xuesheng set gender='女' where sid=2;
查询记录
select [distinct 去重] [*] [列名] from 表名 (where条件);
实例:
手机数码,鞋靴箱包
1、 分类id
2、 分类名称
3、 分类描述
create table category(
cid int primary key auto_increment,
cname varchar(10),
cdesc varchar(31)
);
insert into category values (null,'手机数码','电子产品'),
(null,'鞋靴箱包','江南皮革厂'),
(null,'香烟酒水','五牛,茅台'),
(null,'酸奶饼干','娃哈哈'),
(null,'馋嘴零食','瓜子花生,卫龙');
select * from category;
select cid,cdesc from category;
1、 商品id
2、 商品名称
3、 商品价格
4、 生产日期
5、 商品分类
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
pdate timestamp,
cno int
);
insert into product values(null, '小米',998,null,1),
(null, '锤子',2888,null,1),
(null, '阿迪王',99,null,2),
(null, '老村长',88,null,3),
(null, '茅台',99,null,3),
(null, '奥利奥',5,null,4),
(null, '卫龙',1,null,5),
(null, '饼干',1,null,5);
别名查询:as关键字可以省略
表别名:
select p.pname,p.price from product as p;
列别名:
select p.pname 名称,p.price 价格 from product p;
去掉重复的值:distinct
select distinct price from product;
select运算查询:( 只改变查询结果,不对表内容改变)
select *,price*0.9 折后价格 from product;
条件查询where:
指定条件,确定要操作的记录
select * from product where price>90;
select * from product where price<>1;(等价于!=)
在10-100之间的数据
select * from product where price>10 and price<100;
between….and…
select * from product where price between 10 and 100;
商品价格小于35或者大于900
select * from product where price<35 or price>900;
like模糊查询:
_:代表一个字符
%:代表多个字符
查询出名字带有龙的所有商品
select * from product where pname like '%龙%';
in 在某个范围内获得值:
select * from product where cno in (1,4,5);
排序:
order by
asc:升序(默认)
desc:降序
按照价格降序排序输出
select * from product order by price desc;
内容cno为1降序排序
select * from product where cno=1 order by price desc;
聚合函数:
sum():求和
avg():平均值
conut():计数
max():最大值
min():最小值
获得商品价格的总和:
select sum(price) from product;
获得商品个数:
select count(*) from product;
!!!where后面不能接聚合函数(条件后面不能接变动的)
查出所有大于平均价格的商品;
select pname 商品名称 from product where price>(select avg(price) from product);
分组group by
根据cno字段分组分组后统计商品的个数
select cno 组别,count(*) 计数 from product group by cno;
根据cno分组,分组统计每组商品的平均价格,并且商品价格>60
select cno,avg(price) from product group by cno having avg(price)>60;
执行顺序:
f…w…g…h…s…o
from…where…group by…having…select…order by
多表操作:
需求,多表的关系
外键约束:FORERIGN KEY
给 PRODUCT中的CNO加个一外键约束
ALTER TABLE PRODUCT ADD FOREIGN KEY(CNO) REFERENCES CATEGORY(CID);
REFERENCES(参考)
主键约束:唯一,不能为空
使用外键都是指向另外一张表的主键
一张表只能有一个主键约束
唯一约束:唯一,可以为空
不可以作为其他表的外键
可以有多个唯一约束
建表原则:
一对多:在多的一方添加一个外键,指向一的一方
多对多:拆分为一对多,创建一张中间表,至少要有两个外键指向原来的表
一对一:合并成一张表,将主键建立关系,将它当做一对多情况处理
多表查询:
交叉连接查询
SELECT * FROM PRODUCT;
SELECT * FROM CATEGORY;
查询结果无意义:
SELECT *FROM PRODUCT,CATEGORY;
过滤出有意义的数据:加WHERE条件:
隐式内连接
SELECT * FROM PRODUCT P,CATEGORY C WHERE P.Cno=C.Cid;
显示内连接:
SELECT * FROM PRODUCT P INNER JOIN CATEGORY C ON P.Cno=C.Cid;
区别:
隐式内连接,在查询基础上去做的WHERE条件过滤
显示内连接,带着条件去查询结果执行效率高
外连接:
左外连接,会将左表的数据全部输出,如果表中没有对应的值就用NULL代替
SELECT * FROM product P LEFT OUTER JOIN category C ON P.Cno=C.Cid;
右外连接:
连接查询:会将右表所有数据查询,如果左表没有用NULL代替
SELECT * FROM product P RIGHT OUTER JOIN category C ON P.Cno=C.Cid;

分页查询:
1、 每页显示3条
2、 起始索引0
3、 第一页0
4、 第二页11
起始索引:index 代表显示第几页
每页显示3条数据
STARTINDEX=(INDEX-1)*3;
SELECT * FROM product LIMIT 0,3;
SELECT * FROM product LIMIT 3,3;
子查询(SQL嵌套):
分类名称为手机数码的所有商品
SELECT * FROM product WHERE Cno=(SELECT cid FROM category WHERE cname='手机数码');
视图:
是对查询结果的一个封装,所有数据都来自于原表
1、 能够封装复杂的查询结果
2、 屏蔽表中的细节
语法:CREATE [OR REPLACE] VIEW 视图名称 AS 查询语句 [WITH READ ONLY]
通常不要通过视图修改数据:
create or replace view text as select sid,sname,gender from xuesheng with read only;
可以用来封装复杂的查询语句
MySQL笔记 02的更多相关文章
- mysql笔记02 创建高性能的索引
创建高性能的索引 1. 索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构. 2. 索引可以包含一个或多个列的值.如果索引包含多个列,那么列的顺序 ...
- MySQL笔记02(黑马)
DDL操作数据库.表 操作数据库:CRUD C(Create):创建 创建数据库: create database 数据库名称; 创建数据库,判断不存在,再创建: create database if ...
- webug4.0 打靶笔记-02【完结】
webug4.0打靶笔记-02 3. 延时注入(时间盲注) 3.1 访问靶场 3.2 寻找注入点 貌似一样的注入点: ?id=1' --+ 3.3 判断输出位置 同前两关一样的位置,时间盲注应该不是这 ...
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- 《30天自制操作系统》笔记(02)——导入C语言
<30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL ...
- 《The Linux Command Line》 读书笔记02 关于命令的命令
<The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...
- MySQL笔记汇总
[目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...
- 强化学习读书笔记 - 02 - 多臂老O虎O机问题
# 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...
- JS自学笔记02
JS自学笔记02 1.复习 js是一门解释性语言,遇到一行代码就执行一行代码 2.查阅mdn web文档 3.提示用户输入并接收,相比之下,alert只有提示的作用: prompt(字符串) 接收: ...
随机推荐
- 安装双版本python2 和 python 3 所产生得问题 解决yum对python依赖版本问题
错误 解决办法 一是升级yum 直接使用python3以上版本 二是修改yum的解释器为旧版本python2.7,即将连接文件 /usr/bin/python 软连接回 /usr/bi ...
- PHP7 源码整体框架
一.PHP7语言执行原理 常用的高级语言有很多种,根据运行的方式不同,大体分为两种:编译型语言和解释型语言. 编译是指在应用源程序执行之前,就将程序源代码“翻译”成汇编语言,然后进一步根据软硬件环境编 ...
- arm linux 移植 udhcp 与 使用
背景 在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址. udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDH ...
- pygame库的学习
第一天:我学习了如何设置窗口和加载图片,以及加载音乐.这个库真的很有意思啊,打算py课设就拿这个写了. 代码: import pygamefrom sys import exit pygame.ini ...
- vue 路由过渡效果(1)
1.html界面 <transition name="slide"> <router-view></router-view> </tran ...
- hadoop-mapreduce的官方示例的测试执行方法
1.根据给出的精度参数计算 pi : hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-m ...
- 我的Grunt之旅-序章
时间:2018-03-05 13:52 事件:安装Grunt 相关网址: grunt官网:https://gruntjs.com node.js下载地址 :https://nodejs.org/en ...
- <强化学习>基于采样迭代优化agent
前面介绍了三种采样求均值的算法 ——MC ——TD ——TD(lamda) 下面我们基于这几种方法来 迭代优化agent 传统的强化学习算法 || ν ν 已经知道完整MDP——使用价值函数V(s) ...
- 048、Java中使用switch判断
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- react 如何引入打印控件 CLodop
下载插件,官网地址 http://www.lodop.net/download.html ,选择综合版,解压下载的文件.直接点击 安装,很简单,就不一一说明了. 复制下面几个文件,到react项目中 ...