数据库mysql-4-基础查询

1.创建数据库表

创建的sql范式:create table [表名称](表字段名称1 类型 [约束条件],表字段名称2 类型 [约束条件],...) character set [字符集] collate [校验规则] engine [存储引擎];

2.插入数据

(1)全列插入

指的是,在插入数据的时候,指定了所有列对应的数据

sql范式:insert into [表名称] values(字段的值1,字段的值2,字段的值3,...);

(2)指定列插入

指的是,在插入数据的时候,指定部分列进行插入

sql范式:insert into [表名称](指定插入列名称1,指定插入列名称2,...) values(字段的值1,字段的值2,...);

(3)多行插入

指的是,一个插入的sql 语句可以插入多行数据

全列插入的多行,sql范式:insert into [表名称] values(字段值1,字段值2,...),(字段值1,字段值2,...),(字段值1,字段值2,...)...;

指定列插入的多行,sql范式:insert into [表名称](列名称1,列名称2,...) values(字段值1,字段值2,...),(字段值1,字段值2,...),(字段值1,字段值2,...)...;

  

3.表数据替换

替换是将原来的数据,先删除掉,在重新插入一行数据;

要替换的一行数据内,一定要有一个唯一的字段;

sql范式:replace into [表名称] values(字段名称);

  

4.基础查询

(1)全列查询

select * from [表名称]

(2)指定列查询

select [字段名称1],[字段名称2],...from [表名称]

(3)结果去重

distinct 关键字

select distinct [字段名称1],[字段名称2].... from  [表名];

(4)where条件

约束sql语句在查询的时候,展示部分行的数据;指定查询出来的行,需要满足什么条件 

运算符说明
>,>=,<=大于,大于等于,小于,小于等于
=等于,NULL不安全,eg:NULL=NULL结果是NULL
<=>不等于,NULL安全,eg:NULL<=>NULL结果是TRUE(1)
!=,<>不等于
between a and b范围匹配,[a,b],如果a<=value<=b,返回true(1)
in(option,....)如果option中的任意一个,返回TRUE(1)
is null是NULL
is not null不是NULL
like

模糊匹配

%表示任意多个(包括0个)任意字符;

_表示任意一个字符 

逻辑运算符说明
AND多个条件都必须为TRUE(1),结果才是TRUE(1)
OR任意一个条件为TRUE(1),结果才为TURE(1)
NOT条件为TURE(1),结果为FALSE(0)

eg:查询语文成绩在[80,100]之间的学生,两种方法,第一种使用and条件进行连接,第二种使用between a and b。

 eg:数学成绩是44或者72或者74或者76分的学生及其数学成绩和编号,两种方法,第一种是使用逻辑运算符or,第二种是使用运算符in。

eg:姓何的同学以及何某同学

eg:数学成绩大于英语成绩的学生

eg:总分在180分以下的学生(注意:别名不能用在where中)

 eg:英语成绩<=70并且不姓何的同学(使用and和not)

 eg:何某同学,或者要求总成绩>240并且语文成绩>数学成绩并且英语成绩>76

 eg:查询电话号码不为空的学生

 eg:=和<=>的区别

(5)排序输出

sql范式:select 字段1,字段2 from [表名称] order by [字段名] [asc/desc]

按照 order by 后面的字段进行排序;asc为升序,默认的;desc为降序。

如果出现多个字段,先按照order by后面的第一个字段进行排序;如果第一个字段当中的排序结果有重复值,则按照第二个字段进行排序,依次类推。

 order by中可以使用列别名

注意:NULL被视为比任何值都小的值,升序时出现在最上面,降序时出现在最下面; 

(6)筛选分页结果

关键字:limit

应用场景:当一个表中的数据特别多的时候,如果进行查询,此时需要的时间会比较长;

输出结果当中展示n行内容;

有三种用法(起始下标为0):

第一种用法为从0开始,筛选n条结果

select  ... from [表名称] [where...] [order by...] limit n;

 第二种用法为从s开始,筛选n条结果

select  ... from [表名称] [where...] [order by...] limit s,n;

 第三种用法为从s开始,筛选n条结果

select  ... from [表名称] [where...] [order by...] limit n offset s;

5.更新表数据

关键字是update,更新表数据;

语法:update [表名称] set [列名称] = [列的值]... [where...] [order by ...] [limit...];

 

注意:如果在更新的时候,sql语句当中没有使用where语句来确定更新的行,则会将全表的数据都更新;除非有权标更新列内容的要求,否则一定要使用where语句来进行约束;update并没有删除原来的数据,而是将原来的表数据进行了更新。

6.删除表

delete from table_name [where...] [order by...] [limit...];

删除表数据的内容,而不是删除表结构;

如果不加where或者其他约束条件,则就将全表数据全部删除了,谨慎使用;

 如果说表字段当中有自增列,当我们删除了表数据之后,对表当中的自增列没有任何影响。

7.截断表

truncate  table_name;

相当于全表删除数据,本质上是将表删除了,重新建立一张新表;

截断表的操作也要慎用,因为针对的全是表数据;

 8.聚合函数

(1)count([distinct] expr),返回查询到的数据的数量

         eg:统计班级中共有多少名学生,姓名不重复的学生多少名

(2)sum([distinct] expr),返回查询到的数据的总和,不是数字没有意义

         eg:统计学生的语文成绩总分

(3)avg([distinct] expr),返回查询到的数据的平均值,不是数字没有意义

         eg:统计学生的总成绩的平均分

 (4)max([distinct] expr),返回查询到的数据的最大值,不是数字没意义

          eg:返回英语最高成绩

(5)min([distinct] expr),返回查询到的数据的最小值,不是数字没意义

         eg:返回英语最低成绩

        eg:返回大于70分以上的英语的最低成绩

 9.分组查询

在select中使用group by子句可对指定列进行分组查询

例题:emp员工表、dept部门表、salgrade工资等级表

 

 

 eg:显示出每个部门的平均工资和最高工资

 eg:显示每个部门的每种岗位的平均工资和最低工资

 eg:显示平均工资低于2400的部门和它的平均工资

 group by 搭配having使用,对group by 结果进行过滤

 eg:显示每个岗位的平均薪资

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值