添加
- 单行插入
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