mysql记录的增删改和单表查询

1.记录的详细增加方式

insert into 表名[(字段1,字段2,~)] values (值1,值2,~), (值1,值2,~)

  into可以省略。表名后的字段可选

  如果写了表名后的字段名,后面values 中必须与表名的字段一一对应。

  如果没有写,后面的values中的值必须与表的所有字段一一对应。

  values后面可以给多组值,用逗号隔开。

2.记录的详细删除方式

delete from 表名 [where 条件]

条件不写,是删除所有记录这种删除是一行一行的删除,注意自增id不会归零

truncate 重建 先记录表结构,删除整个表再新建出表自增id会归零。

3.更新数据的详细方式

update 表名 set 字段名 = 值[,字段2 = 值2],[where 条件]

可以一次性修改多个字段的值逗号隔开

条件如果不写,修改所有记录。

4.单表查询

不带关键字的查询

  select  {1.*|2.字段名|3.四则运行|4.聚合函数} from 表名 [where 条件]

1.*表示查询所有字段

2.可以手动要查字段

3.字段的值可以进行加减乘除

4.聚合函数,用于统计

where 是可选的

concat() 是字符串拼接函数。

as 起别名

完整的查询语句语法。

select [distinct] * from 表名
[where
group by
having
order by
limit
]

关键字的执行顺序

from 打开文件

where 读取文件并过滤

group by 对已读取的数据进行分组

having 对分组的数据进行过滤

distinct 去重数据

order by 排序

limit  获取指定条数

where 关键字的用法

create table stu(id int primary key auto_increment,name
char(10),math float,english float);
insert into stu values(null,"赵云",90,30);
insert into stu values(null,"小乔",90,60);
insert into stu values(null,"小乔",90,60);
insert into stu values(null,"大乔",10,70);
insert into stu values(null,"李清照",100,100);
insert into stu values(null,"铁拐李",20,55);
insert into stu values(null,"小李子",20,55);

查看所有数据

select * from stu

查看 英语成绩

 select english from stu;

查看所有?人的数学成绩 并去除项姓名相同的数据

select distinct name,math from stu;

统计每个人的总分

select name,math+english as 总分 from stu;

为每个为的英语加10分显示

select name,english+10 from stu;

需要 在字段的数据前加上字段名:

name:赵云 english:90 math:30

select concat("name:",name,"english:",english,"math:",math) from stu;

需求 如果 总分?小于150 在名字后?面加上shit ?大于等于 加上nice

mysql> select(
    -> case
    -> when english+math>120 then
    -> concat(name,"nice")
    -> when english+math<120 then
    -> concat(name,"shit")
    -> end),
    -> english,math from stu;

where关键字支持的表达式

1.查询英语分数在 80-100之间的同学。

select * from stu where english between 80 and 100;

2.查询数学分数为89,90,91的同学

select * from stu where english in (80,90,91);

3.查询所有姓李的学?生成绩。

 select * from stu where name like "李%";

4.查询所有姓名带有李的学?生成绩

select * from stu where name like "%李%";

5.查询数学分>80并且英语分>80的同学

select * from stu where math>80 and english >80;

查询数学分<60并且英语分<60的同学。

select * from stu where math<60 and english <60;

where 是如何找到你要的数据的?

where语句句条件在没有索引的情况下 是挨个遍历判断 效率?非常低
如果有索引 则可以忽略略掉?大多数?无?用数据

关键字 group by

什么是分组

  把一个整体 分割为多个部分

为什么分组

  在数据库中分组为了统计

分组后 组里的详细记录就被隐藏起来了 不能直接查看 dept 一分组 变成三条记录 每个组中却包含多条记录 没办法显示。
一定要显示的话 可以使用group_concat(字段名) 可以将多个值拼接成一个字符串。

注意

  1.只有出现在group by 后面的字段 才可以被显示 其他都被影藏了

  2.聚合函数不能写在where的后面 where最先执行 它的作用硬盘读取数据并过滤 以为数据还没有读取完 此时不能进行统计。

什么样的字段适合用于分组

   重复性高的字段

了解:

  在mysql 5.6中 分组后会默认显示 每组的第一条记录 这是没有意义的

  5.7不显示 因为5.7中 sql_mode中自带 ONLY_FULL_GROUP_BY
  group by 后面可以有多个分组与依据 会按照顺序执行

create table emp (id int,name char(10),sex char,dept char(10),job
char(10),salary double);

insert into emp values
(1,"刘备","男","市场","总监",5800),
(2,"张飞","男","市场","员工",3000),
(3,"关羽","男","市场","员工",4000),
(4,"孙权","男","行政","总监",6000),
(5,"周瑜","男","行政","员工",5000),
(6,"小乔","女","行政","员工",4000),
(7,"曹操","男","财务","总监",10000),
(8,"司马懿","男","财务","员工",6000);

1.将数据按照部?门分组

select dept from emp group by dept;

何为聚合函数?
将多个数据进行计算 并得到?一个结果 称为聚合
有哪些集合函数?
  sum
  count
  avg
  max/min
简单测试

2.查询每个部门有几个人

select dept ,count(*) from emp group by dept;

3.计算每个部门的平均?工资

select dept,avg(salary) from emp group by dept;

4.计算每个岗位的平均?工资

 select job,avg(salary) from emp group by job;

5.计算每个部?门每个岗位的平均?工资

select dept,job,avg(salary) from emp group by dept,job;

6.查询平均?工资?大于5000的部?门

select dept,avg(salary) from emp group by dept having avg(salary)>5000;

order by 排序用的

  asc 表示升序 是默认的
  desc 表示降序
  by 后面可以有多个排序依据

limit 限制显示条数

  limit a,b
  limit 1,5
  从1开始 到5结束 错误
  从1开始 不包含1 取5条

  分页查询
每页显示3条 共有10条数据
  if 10 % 3 == 0:
    10 / 3
  else:
    10/3 +1
总页数4

第一页
select *from emp limit(0,3)
第二页
select *from emp limit(3,3)
第二页
select *from emp limit(6,3)

起始位置的算法
页数 - 1 * 条数
1 - 1 = 0 * 3 = 0
2 - 1 = 1 * 3 = 3

查看前三?人

select * from emp limit 0,3;

查看工资最高的那个人信息

 select * from emp order by salary desc limit 0,1;

查看id为3-6的?人

select * from emp limit 3,3;

三 正则表达式匹配
正则表达式?用于模糊查询,模糊查询已
经讲过了了
like 仅?支持 % 和 _ 远没有正则表达式灵

当然绝?大多数情况下 like足够使用

select * from 表名 where 字段名 regexp "正则表达式”;

原文地址:https://www.cnblogs.com/msj513/p/10003106.html

时间: 2024-10-13 08:32:37

mysql记录的增删改和单表查询的相关文章

数据库的增删改、单表查询

数据库的增删改 插入数据 INSERT 更新数据 UPDATE 删除数据 DELETE 插入数据 INSERT 1.插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3...字段n)VALUES(值1,值2,值3...值n); 语法二: INSERT INTO 表名 VALUES (值1,值2,值3-值n); 2. 指定字段插入数据 语法: INSERT INTO 表名(字段1,字段2,字段3-) VALUES (值1,值2,值3-); 3. 插入多条记录 语

mysql 增删改查,表查询(重点)

十一.数据的增删改: 本节重点: 插入数据 INSERT 更新数据 UPDATE 删除数据 DELETE 再来回顾一下之前我们练过的一些操作,相信大家都对插入数据.更新数据.删除数据有了全面的认识.那么在mysql中其实最重要的不是这三大操作,而是查数据最重要,下节课知晓 一. 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 1.使用INSERT实现数据的插入 2.UPDATE实现数据的更新 3.使用DELETE实现数据的删除 4.使用SELECT查询数据以及.

mysql 记录的增删改查

MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及. ======================================================== 插入数据INSERT 1. 插入完整数

MySQL—记录的增删改查操作

1.插入记录: 方法一:INSERT [INTO] tbl_name [(col_name,···)] {VALUES|VALUE} ({expr |DEFAULT},···),(···),··· 例如: INSERT users VALUES(NULL,'Mary','666666',25,1); 方法二:INSERT [INTO] tbl_name SET col_name={expr |DEFAULT},··· 说明:与第一种方法的去呗在于,此方法可以使用子查询(SubQuery):另外,

04 数据库入门学习-单表查询、多表查询、子查询

1.复制表 #创建了一张测试表 mysql>create table test (id int primary key auto_increment,name char(10)); #显示原表结构 mysql> desc test; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+---

Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process using '"' #可以直接用 python3 -m pip 代替 pip3 #这个问题是pip3 版本过低直接在cmd中执行 python3 -m pip install --upgrade pip 更新pip3 # 在指定解释器环境下安装django 1.11.9 # 在真实python3环境

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码:

java jdbc 连接mysql数据库 实现增删改查

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的

python开发mysql:单表查询&amp;多表查询

一 单表查询,以下是表内容 1 一 having 过滤 2 1.1 having和where 3 select * from emp where id > 15; 4 解析过程;from > where 找到数据 > 分组(没有默认一个组)> select 打印 where是出结果之前 5 select * from emp having id > 15; 6 解析过程;from > where 找到数据(没有约束条件,就是整个表)) > 分组(没有默认一个组)&