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的更多相关文章

  1. mysql笔记02 创建高性能的索引

    创建高性能的索引 1. 索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构. 2. 索引可以包含一个或多个列的值.如果索引包含多个列,那么列的顺序 ...

  2. MySQL笔记02(黑马)

    DDL操作数据库.表 操作数据库:CRUD C(Create):创建 创建数据库: create database 数据库名称; 创建数据库,判断不存在,再创建: create database if ...

  3. webug4.0 打靶笔记-02【完结】

    webug4.0打靶笔记-02 3. 延时注入(时间盲注) 3.1 访问靶场 3.2 寻找注入点 貌似一样的注入点: ?id=1' --+ 3.3 判断输出位置 同前两关一样的位置,时间盲注应该不是这 ...

  4. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  5. 《30天自制操作系统》笔记(02)——导入C语言

    <30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL ...

  6. 《The Linux Command Line》 读书笔记02 关于命令的命令

    <The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...

  7. MySQL笔记汇总

    [目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...

  8. 强化学习读书笔记 - 02 - 多臂老O虎O机问题

    # 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...

  9. JS自学笔记02

    JS自学笔记02 1.复习 js是一门解释性语言,遇到一行代码就执行一行代码 2.查阅mdn web文档 3.提示用户输入并接收,相比之下,alert只有提示的作用: prompt(字符串) 接收: ...

随机推荐

  1. Vue + Webpack 根据不同环境打包

    修改 prod.env.js // 当前正在运行的脚本名称 const TARGET = process.env.npm_lifecycle_event // 第一个参数 let argv = pro ...

  2. 吴裕雄--天生自然JAVAIO操作学习笔记:压缩流与回退流

    import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util ...

  3. SciPy 特殊函数

    章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...

  4. gitlab clone或者pull 仓库

    今天在学git操作,想从gitlab上面clone下来并操作一下,但是一直出现 没有权限的错误,一直搞不定 后来才知道,需要ssh密钥才可以 ssh-keygen -t rsa -C "ex ...

  5. Timer(阿里CTF)

    下载文件之后发现是.apk类型文件,于是百度搜索了一下推荐再电脑上安装安卓模拟器,都尝试了一下逍遥安卓是真的不好用,小白觉得还是BlueStacks好用一些,下载之后去安装打开就看到了, 什么都没有发 ...

  6. 使用 json 模块,使json数据格式与Python字典dict数据格式互相转换,获取数据更加方便

    一.定义 JSON 是一种数据格式 使用 javaScript (Java 死鬼破特)对象表示法 二.特点 1.JSON 与 XML格式数据的区别 ====== 两种格式的数据,都是跨语言,跨平台 c ...

  7. 026、MySQL取字符串左边,取字符串右边,取字符串中间,取文本开始位置

    #取文本左边 ); #田 ); #田攀 ); #田攀5 #取文本右边 ); # ); # ); #攀52 #取文本中间 '); #田攀 '); #攀5 #从字符串s中获取s1的开始位置 不忘初心,如果 ...

  8. Docker退出容器不关闭容器的方法

    进入docker容器后如果退出容器,容器就会变成Exited的状态,那么如何退出容器让容器不关闭呢? 如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器,这一点很重要,请牢记! 以下示例为退出 ...

  9. DCGAN增强图片数据集

    DCGAN增强图片数据集 1.Dependencies Python 3.6+ PyTorch 0.4.0 numpy 1.14.1, matplotlib 2.2.2, scipy 1.1.0 im ...

  10. Android Studio真机调试安装以后打开闪退,打包APK再安装正常打开没有问题

    一直真机调试都没有问题, 但是有一次开始,真机调试正常安装没有问题,但是一打开就崩溃了一眨眼间就像被光闪了一下的那种. oppoR11调试会这样,但是用魅族试过没有问题, 报错出现过Android S ...