逻辑删除

所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识或者字段做修改操作。在逻辑上数据是被删除的,但数据本身依然存在库中

例如
update students3 set isdelete=0
update students3 set isdelete=1 where id=1
select *from students3 where isdelete=0


1.设计表,给表添加一个字段isdelete,1代表删除,0代表没有被删除
2.把所有的数据isdelete改为0
3.要删除某一条数据时更新isdelete为1
4.当要查询数据时,只查询isdelete=0的数据

数据操作-查询

创建数据
create table students(
studentNo varchar(10) primary key,
name varchar(10),
sex varchar(1),
hometown varchar(20),
age tinyint(4),
class varchar(10),
card varchar(20)
)

插入数据

insert into students values
('001','王昭君','女','北京','20', '1班','340322199001247654'),
('002','诸葛亮','男','上海','19','2班','340322199002242354'),
('003','张飞','男','南京','24','3班','340322199003247654'),
('004','白起','男','安徽','22','4班','340322199005247654'),
('005','大乔','女','天津','19','3班', '340322199004247654'),
('006','孙尚香','女','河北','18','1班','340322199006247654'),
('007','百里玄策','男','南京','24','3班','340322199007247654'),
('008','小乔','女','河南','15','3班','340322199008247654'),
('009','百里守约','男', '湖南', '21','3班','340322199009247654'),
('010','妲己','女','广东','26','2班','340322199010247654'),
('011','礼拜','男','北京','30','4班','340322199011247654'),
('012','孙膑','男', '新疆','26','4班','340322199012247654');

查询所有列:select * from students

查询指定字段:select 列1,列2,… from 表名

使用as给字段起别名

select name as 姓名,sex as 性别,hometown as 家乡 from students

不会影响这个表(查询是不会影响表中的数据的),也可以给表起别名

去重distinct:重复的数据只显示一条

格式:select distinct 列1, … from 表名;

条件查询

比较运算符

等于:=
大于:>
大于等于:>=
小于:<
小于等于:<=
不等于:!=或<>

例1

例2:查询20岁以下的学生
Select * from students where age<20;
例3:查询家乡不在北京的学生
Select * from students where hometown!= '北京';select * from students where hometown<>'北京'

逻辑运算 and or not



模糊查询

like、%表示任意多个任意字符、_表示一个任意字符



范围查询

n表示一个非连续的范围内
例1:查询家乡是北京或上海或广东的学生
select * from students where hometow='北京' or hometow= '上海' or hometow=''广东)
select * from students where hometown in('北京', '上海', ''广东)
Between…and…表示在一个连续的范围内
例2:查询年龄为18至20的学生。
select * from students whereage>18 and age<20
select * from students whereage between 18 and 20

空判断null

is null 是空,没有填写,''是空字符串,有填写
select * from students where card is null
is not null 判非空
select * from students where card is not null

排序

asc 升序,从小到大;desc 降序,从大到小
例1:查询所有学生信息,按照年龄从小到大排序。
Select * from students order by age
例2:查询所有学生信息,按年龄从大到小排序,年龄相同,再按学号从小到大排序
Select * from students order by age desc,studentNo asc

默认升序asc,可省略不写

例:查询所有学生信息,按照学生姓名顺序排序
select * from students order by convert(name using gbk)
因为选的是utf-8编码,姓名是中文需要改编码后进行排序

聚合函数,一般用来统计数据,聚合函数不能在where中使用

Count()表示计算总行数,括号中写与列名,结果是相同的
Max(列)表示求此列最大值
Min(列)表示求此列最小值
Sum(列)表示求此列的和
Avg(列)表示求此列的平均值

分组

语法:select 列1,列2,聚合…from 表名group by 列1,列2…
例1:查询各种性别的人数。
Select sex,count() from students group by sex;
例2:查询各种年龄的人数。
Select age,count(
) from students group up age;
group by 也有去重的作用

分组过滤

语法:select 列1,列2,聚合... from 表名 group by 列1,列2,列3,…having 列1,…聚合…

having必须跟在group by 后

先过滤再分组或先分组再过滤
Where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
Having是对group by的结果进行筛选

分页(获取部分行)

语法:select * from 表名limit start,count
从start开始,获取count条数据,索引从0开始

SQL学习笔记(一)的更多相关文章

  1. ORALCE PL/SQL学习笔记

    ORALCE  PL/SQL学习笔记 详情见自己电脑的备份数据资料

  2. Oracle之PL/SQL学习笔记

    自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...

  3. SQL学习笔记

    SQL(Structured Query Language)学习笔记 [TOC] Terminal登录数据库 1.登录mysql -u root -p ; 2.显示所有数据库show database ...

  4. [SQL学习笔记][用exists代替全称量词 ]

    学习sql的必经问题. 学生表student (id学号 Sname姓名 Sdept所在系) 课程表Course (crscode课程号 name课程名) 学生选课表transcript (studi ...

  5. SQL学习笔记——SQL初入门,Ubuntu下MySQL的安装

          刚开始接触sql,于是准备在Ubuntu下学习sql,就跟着itercast的sql教程开始入门了. 下面只是我个人的记录,高手请绕道: 一. 在安装之前,我们可以用下面这个命令通过开放端 ...

  6. pl/sql学习笔记---马士兵教程38-48

    Procedure Language/Structure query Language 一.关于语言学习 1.数据类型 2.语法   通过例子来学习很快就能明白 set serverputout on ...

  7. SQL学习笔记之SQL查询练习题1

    (网络搜集) 0x00 表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id ...

  8. SQL学习笔记之MySQL索引知识点

    0x00 概述 之前写过一篇Mysql B+树学习,简单的介绍了B+数以及MySql使用B+树的原因, 有了这些基础知识点,对MySql索引的类型以及索引使用的一些技巧,就比较容易理解了. 0x01 ...

  9. SQL学习笔记:一些高级语句

    现在以MySQL为模板.学习的方法和别的数据库写法上会有不同,但是思路基本一致. 用到的数据库表的格式: +----+--------------+-------------------------- ...

  10. SQL学习笔记:基础SQL语句

    目录 语句特点 进入数据库 基本查询语句 SELECT DISTINCT WHERE AND/OR/NOT :逻辑运算符 ORDER BY :排序 基本修改语句 INSERT:添加语句 UPDATE: ...

随机推荐

  1. gitlab异地备份并验证MD5值

    最近公司发生了蛮多事情的,唉,咱也不管问啊,好好干活吧 需求 把gitlab的备份文件异地备份一份,备份无论失败还是成功通知某邮箱 实现思路 先rsync文件过去,判断rsync这个步骤有没有成功,失 ...

  2. 邮件学习过程中关于request.POST的使用

    今天的话主要的精力都集中在邮件系统demo的实现,因为自己个人技术有限,所以做出来的相当简陋,在其中碰到的问题其实也是比较多的,对于基于django的邮件相对来说比较容易,然后就是在提交数据,获取po ...

  3. hive 外部表和内部表的区别和相互转换

    Hive内部表和外部表区别 1.创建内部表时,内部表的数据文件是保存在指定的路径的:如若创建外部表,则只记录数据所在的路径,不会对数据位置做改变. 2.删除表的时候,内部表元数据和数据会跟着一起删除. ...

  4. Flink原理(五)——容错机制

    本文是博主阅读Flink官方文档以及<Flink基础教程>后结合自己理解所写,若有表达有误的地方欢迎大伙留言指出. 1.  前言 流式计算分为有状态和无状态两种情况,所谓状态就是计算过程中 ...

  5. ISCC之msc2

    倒立屋 Flag:9102_cCsI 一道典型的LSB隐写,不过提交格式嘛,就很坑了 Stegsolve打开分析图片,注意到RGB三类图片的最低位基本相同,可能藏了东西. 有一个IsCc_2019,反 ...

  6. 移动端开发-viewport与媒体查询

    首先要知道,在移动开发中,手机的浏览器会默认网页是为宽屏而设计的,它会缩小整个页面来适应屏幕. 1. 不使用viewport出现的问题 提到响应式设计,大家首先想到的可能是 Bootstrap , @ ...

  7. 一.什么是protobuf

    Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 ...

  8. Redis 缓存失效机制

    Redis缓存失效的故事要从EXPIRE这个命令说起,EXPIRE允许用户为某个key指定超时时间,当超过这个时间之后key对应的值会被清除,这篇文章主要在分析Redis源码的基础上站在Redis设计 ...

  9. python 对象引用计数增加和减少的情况

    对象引用计数增加的情况: 1.对象被创建:x=4 2.另外的别人被创建:y=x 3.被作为参数传递给函数:foo(x)  ->会增加2 4.作为容器对象的一个元素:a=[1,x,'33'] 对象 ...

  10. Default Trace 查找日志文件快速增长的原因

    select loginname, loginsid, spid, hostname, applicationname, servername, databasename, objectname, e ...