以创建表格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;