- 单行插入
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 列名=值
#修改 张三的地址为 火星 update student set address='火星' where stuname='张三' #将 2017年以后 出生的学生的 并且 姓 为 赵的学生的 地址改为大日本 update student set address='..日本' where borndate>'2017-01-01' and stuname like '赵%' |
- 查
语法:
select [distinct] *| 列名,列名 from 表名 [where条件]
单表查询
- 常见函数
Count() 求个数
#求出学生表中所有学生的人数 SELECT COUNT(*) from student |
Sum() 求和 avg() 求平均值
日期函数 DATEDIFF(日期1,日期2) 值为2个日期的天数差
求整的函数 CEILING (number2 ) //向上取整 FLOOR (number2 ) //向下取整
#打印出学生表中所有学生的姓名和年龄 SELECT stuname, CEILING(DATEDIFF(NOW(),borndate)/365) from student |
- 多表查询
内连接(取多个表数据的公共部分)
语法:两种写法
# 查询参加考试的学生姓名和分数 #分数--》result表 姓名-->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
# 查询参加考试的学生姓名和科目名称和分数 #表 也可以取别名 SELECT stuname,subjectname,score from student s JOIN result r ON s.stuno=r.stuno join `subject` su on su.subno=r.subjectno where score is not null
#工具生成多表查询
SELECT student.stuname, `subject`.subjectname, result.score FROM result INNER JOIN student ON result.stuno = student.stuno INNER JOIN `subject` ON result.subjectno = `subject`.subno where score is not null |