mysql数据库-数据的增删改查

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

--  查询出sid2  并且姓名为李四的学生信息

SELECT * FROM stu WHERE sid=2 AND sname='李四';

-- 查询出 sid2 或者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的成绩在6090之间的学生信息

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;

你可能感兴趣的:(mysql,数据库)