以创建表格stu为例,做增删改查的基本操作
-- 使用数据库day01
USE day01;
-- 创建表格stu
create table stu(
sid INT,
sname VARCHAR(20),
ssex VARCHAR(2)
);
-- 1. 管理数据
-- 1.1 增加数据
-- 插入所有字段数据 一定要按照一次的顺序进行插入
INSERT INTO stu VALUES(1,'张三','男');
INSERT INTO stu(sid,sname,ssex) VALUES(2,'李四','男');
-- 插入部分数据
INSERT INTO stu(sid,sname) VALUES(3,'王五');
-- 1.2 修改数据
-- 把性别男修改为女 修改所有的数据 (建议不使用)
UPDATE stu SET ssex='女';
-- 带有条件的进行修改
-- 把sid=1的学生的性别修改为男
UPDATE stu SET ssex='男' WHERE sid=1;
-- 把sid=3的学生的姓名修改为赵六 性别修改为男
UPDATE stu SET sname='赵六',ssex='男' WHERE sid=3;
-- 1.3删除数据
-- 删除所有的数据(建议少用)
DELETE FROM stu;
-- 带有条件的进行删除 推荐使用
INSERT INTO stu VALUES(1,'张三','男');
INSERT INTO stu VALUES(2,'李四','男');
INSERT INTO stu VALUES(3,'','男');
INSERT INTO stu VALUES(4,'赵六',NULL);
DELETE FROM stu WHERE sid=1 OR sid=4;
-- 另外一种表现形式
TRUNCATE TABLE stu; -- 删除所有数据
-- 2.查询语句
-- 2.1 查询所所有列 所有数据
SELECT * FROM stu;
-- 2.2 查询指定的列
SELECT sname,ssex FROM stu;
-- 2.3 查询的时候添加常亮列
SELECT sid,sname,ssex,'总成绩' FROM stu;
-- 2.4 查询的时候使用别名进行查询 as as可以省略不写 但是尽量的加上
SELECT sid AS '学号',sname AS '姓名',ssex AS '性别' FROM stu;
-- 2.5 查询的时候进行合并列
-- 添加两个字段
ALTER TABLE stu ADD java INT;
ALTER TABLE stu ADD jsp INT;
-- 查询出所有学生的总成绩,注意:在合并的时候 只能进行合并数值类型的字段
SELECT sid,sname,ssex,java,jsp,(java+jsp) AS '总成绩' FROM stu;
SELECT sid,sname,ssex ,(sname+java) FROM stu;
-- 2.6 查询的时候去除重复
-- 查询学生的性别
SELECT DISTINCT ssex FROM stu;
SELECT DISTINCT (ssex) FROM stu;
-- 2.7 条件查询 where
-- 2.7.1 逻辑条件 and 并且 or 或者
-- 查询出sid为2 并且姓名为李四的学生信息
SELECT * FROM stu WHERE sid=2 AND sname='李四';
-- 查询出 sid为2 或者stu性别为男的学生信息
SELECT * FROM stu WHERE sid=2 OR ssex='男';
-- 2.7.2 比较条件:>、<、>=、<=、=(等于)、<>(不等于)
-- 查询出java的成绩大于60;
SELECT * FROM stu WHERE java>60;
-- 查询出java的成绩小于60
SELECT * FROM stu WHERE java<60;
-- 查询java成绩等于60的
SELECT * FROM stu WHERE java=60;
-- 查询java的成绩不等于60的学生信息
SELECT * FROM stu WHERE java<>60;
-- 查询java的成绩在60到90之间的学生信息
SELECT * FROM stu WHERE java>=60 AND java<=90;
-- 另外一种写法 BETWEEN .... AND ....;
SELECT * FROM stu WHERE java BETWEEN 60 AND 90;
-- 2.7.3 判空条件
-- is null /is not null ='' <>''
-- 查询性别为 null的数据
SELECT * FROM stu WHERE ssex IS NULL;
-- 查询性别不为 null的数据
SELECT * FROM stu WHERE ssex IS NOT NULL;
-- 查询性别为空字符串的数据
SELECT * FROM stu WHERE ssex ='';
-- 查询学生的姓名不为空的学生信息
SELECT * FROM stu WHERE sname <>'';
-- 查询学号姓名不为空和性别不为空的信息
SELECT * FROM stu WHERE sname<>'' AND ssex IS NOT NULL;
-- 模糊查询 like
-- 姓名含有 "七" 并且 "七" 前面只有两个个字
SELECT * FROM stu WHERE sname LIKE '__七';
-- 查询姓名含有 "三" 字的学生信息
SELECT * FROM stu WHERE sname LIKE '%三%';
-- 查询姓名为"三",并且"三"前面只有一个字符 后面有多个字符
SELECT * FROM stu WHERE sname LIKE '_三%';
-- 2.8 聚合查询 (函数查询)
-- 常用的函数 sum() avg() max() min() count();
-- 求出所有学生java的总成绩
SELECT SUM(java) FROM stu;
-- 求出所有学生java的平均分
SELECT AVG(java) FROM stu;
-- 求出所有学生当中java的最大值
SELECT MAX(java) FROM stu;
-- 求出java当中的最小值
SELECT MIN(java) FROM stu;
-- 求出所有学生的jsp 和java的总成绩
SELECT SUM(java+jsp) FROM stu;
-- 求出每个学生的总成绩
SELECT sid,sname,ssex,java+jsp FROM stu;
-- 统计一共有多少条记录
SELECT COUNT(*) FROM stu;
-- 2.9 分页查询 limit
-- select * from 表名 limit (当前页-1)*每页显示的记录条数,每页显示的记录条数
-- 每页显示 2条记录
-- 查询第一页的数据
SELECT * FROM stu LIMIT 0,2;
-- 查询第二页的数据
SELECT * FROM stu LIMIT 2,2;
-- 查询第三页的数据
SELECT * FROM stu LIMIT 4,2;
-- 查询第四页的数据
SELECT * FROM stu LIMIT 6,2;
-- 第八页的数据
SELECT * FROM stu LIMIT 14,2;
-- 2.10 排序查询 order by
-- 升序 :正序 从小到大 asc
-- 降序:反序 从大到小 desc
SELECT * FROM stu; -- 默认是按照添加顺序来进行查询
-- 按照java的成绩从小到大进行排序
SELECT * FROM stu ORDER BY java ASC;
-- 按照 java的成绩从大到小进行排序
SELECT * FROM stu ORDER BY java DESC;
-- 按照java 从大到小 jsp从小到大
SELECT * FROM stu ORDER BY java DESC , jsp ASC;
-- 2.11 分组查询
-- 统计每个性别 分别有多少人
-- 统计每个性别有多少人 然后按照从低到高进行输出
SELECT ssex,COUNT(*) FROM stu GROUP BY ssex ORDER BY COUNT(*) ASC;
-- 分组后进行筛选 分组之后再使用条件的时候 不能使用where 只能使用having
-- 分组之前使用where 分组之后使用having
-- 查询总人数 大于1的性别
SELECT ssex,COUNT(*) FROM stu GROUP BY ssex HAVING COUNT(*)>1;