天天看点

数据库二(增、删、改、查)

添加

  • 单行插入

    insert into 表名(列名1,列名2,列名3……) values(值1,值2,值3……)

    insert into 表名 values(值1,值2,值3……)(给表中所有列插入数据不需要写列名)

  • 多行插入

    insert into 表名(列名1,列名2,列名3……) values(值1,值2,值3……),(值1,值2,值3……),(值1,值2,值3……)

删除

  • 带条件的

    delete from 表名 where 条件

  • 不带条件的

    delete from 表名;

    面试题

    说说 delete 与 truncate 的区别?

    delete删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回。

    truncate删除,它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。

注意:delete删除,uid不会重置!而使用truncate操作,uid会重置

修改

Update 表名 set 列名=值,列名=值 where 列名=值

查询

  • 语法:

    select [distinct] *| 列名,列名 from 表名 [where条件]

    DISTINCT 去掉重复项

  • 排序

    默认是升序 asc 、降序 desc

  • 分页显示

    limit (参数1,参数2) 参数1 代表数据起始行的索引(从0开始) 参数2代表每页显示的行数

  • 分组 GROUP BY

    GROUP BY不会单独使用 而是结合其他函数一起使用

#查询可能出现的情况
select 
FROM
where # 查询的条件
GROUP BY #对前面查询的数据作分组
HAVING  #对分组后的数据做筛选
order by #排序(对查询最终版的数据作排序显示)
LIMIT 0,2 #对 排序好的数据分页显示

select stuno 学号, avg(score) 平均分  
from result 
GROUP BY stuno
HAVING avg(score)>=50
order by avg(score)
limit 0,2

           

常见函数

  • Count() 求个数

    求出学生表中所有学生的人数

SELECT  COUNT(*) from student
           
  • Sum() 求和 avg() 求平均值

    日期函数 DATEDIFF(日期1,日期2) 值为2个日期的天数差

  • 求整的函数 CEILING (number2 ) //向上取整 FLOOR (number2 ) //向下取整

    #打印出学生表中所有学生的姓名和年龄

SELECT  stuname, CEILING(DATEDIFF(NOW(),borndate)/365)  from student
           

多表查询

内连接(取多个表数据的公共部分)

语法:两种写法

内连接查询的时候 一定要加上 表与表之间的关系

方法1

SELECT stuname,score
from student,result
where student.stuno=result.stuno
           

方法2

form后面跟一个表 join 表 on 2个表的关系

SELECT   stuname,score
from student  
JOIN result ON  student.stuno=result.stuno
           

继续阅读