数据库---对表的增删改查
总结
对表的增删该
增加数据
-- 插入所有字段。一定依次按顺序插入
INSERT INTO 表名 VALUES(1,'熊大','2019-07-15');
-- 注意不能少或多字段值
-- 单独插入数据
INSERT INTO student(pid,aname) VALUE(2,'熊二');
INSERT INTO 表名(列名,列名) VALUE(插入的值,插入的值');
-- 待条件修改数据 set 指定列 where条件 指定插入哪行
UPDATE student SET pdate='2019-07-15 ' , aname='七七国王' WHERE pid=2;
UPDATE student SET 字段名=值 , 用逗号隔开 字段名=值 WHERE 修 pid 编号为2的行 or修改 pid 编号为1的行;
--删除数据
-- 删除数据 where指定删除那一行
DELETE FROM student WHERE pid=2;
DELETE FROM 表名 WHERE pid 编号为2的行;
-- 全表删除(不加valure全表删除)可以找回
DELETE FROM 表名
-- 清空表语句,无法找回
TRUNCATE TABLE 表名;
1)不能带条件删除
2)即可以删除表的数据,也可以删除表的约束
3)使用truncate table删除的数据不能回滚
6 查询数据(重点)
-- 查询所有数据
SELECT * FROM 表名;
-- 查询指定字段数据
SELECT pid,aname FROM student;
SELECT 列名 ,列名 FROM 表名;
-- 查询时添加常量列
SELECT pid AS '编号', aname AS '姓名' FROM student;
SELECT 列名 AS '名字 ', 列明AS '名字 ' FROM 表名;
-- 查询合并列
-- 创建新表
CREATE TABLE score(
sid INT,
sname VARCHAR(10),
html DOUBLE,
js DOUBLE,
jquery DOUBLE)
INSERT INTO score VALUES (1,'山地',99,20,30);
INSERT INTO score VALUES (2,'速降',99,100,89);
INSERT INTO score VALUES (3,'攻入',60,50,32);
-- 查询时合并列
-- 查询所有同学姓名以及总成绩
SELECT sname,(html+js+jquery ) AS'grade' FROM score;
-- 查询时去除重复列 两种方式
-- 需求 查询学生表中的性别
SELECT DISTINCT sex FROM sstudent;
SELECT DISTINCT (sex) FROM student;
公式:SELECT 结果 FROM 表明 where(条件查询)条件;
9.条件查询:
and(与) or(或)
条件查询
selelct * from 表名where product='新的';
SELECT * FROM student WHERE id=2 AND NAME='李四'
-- 需求: 查询id为2,或姓名为张三的学生
多个条件查询用AND 进行连接查询
没有唯一条件查询时用 OR 连接查询
2. < > <> <= >=的使用:
select js from socre where grade>50 or grade<80 or grade>=65 or grade<=75 or grade <> 66;
between and (等价于>= 且 <=)的用法
:select * from f where grade= between 60 and 70;-- (包前包后)
Select* from 表名 where 字段=条件
Null 是没有
空字符时有值但为空,没有被实参赋值是空字符串。
.null和空字符串的用法:
null是没有值具体用法:is null或者is not null;''
Like 模糊查询
%和_的用法:随便加载任何地方都可以
%表示一个或多个任意字符,
_表示一个任意字符;
一般和like模糊查询一起使用
聚合查询
公式:select 函数(列名)from 表名;
聚合函数: sum( 列名)求一个字段所有和
avg(列名)求平均值
max(列名)最大值
min(列名)最小值
count(列名)查询计入数
-- 需求:查询学生的servlet的总成绩 (sum() :求和函数)
SELECT SUM(servlet) AS 'servlet的总成绩' FROM student;
-- 需求: 查询学生的servlet的平均分
SELECT AVG(servlet) AS 'servlet的平均分' FROM student;
-- 需求: 查询当前servlet最高分
SELECT MAX(servlet) AS '最高分' FROM student;
-- 需求: 查询最低分
SELECT MIN(servlet) AS '最低分' FROM student;
-- 需求: 统计当前有多少学生(count(字段))
SELECT COUNT(*) FROM student;
COUNT(*) 统计计入最大值
SELECT COUNT(id) FROM student;
-- 注意:count()函数统计的数量不包含null的数据
-- 使用count统计表的记录数,要使用不包含null值的字段
SELECT COUNT(age) FROM student;
Count(*) 表示所有数值
分页查询
limit 起始行,查询几行
公式:起始行= (当前页-1)*每页显示的条数,每页显示多少条;
查询排序
ASC与DESC的用法;
ASC是正序从小到大;DESC是倒叙从大到小;
order by 是进行排序用的
SELECT * FROM score ORDER BY js ASC,jquery DESC;-- 是以js为主排序,
当js的值相同的时候再按照jquery的成绩排;也就是 谁在前面谁先执行该条件
分组查询 与聚合函数组合使用
group by 是分组计数;
有关count()方法的使用
查询每个班的人数:select clas,count(*)from student group by clas;
查询每个班js的总分:select clas,count(js) from student group by clas;