mysql-02

DML(数据库操作数据)语句

语句1:---插入数据
    插入数据:INSERT INTO 表名 VALUES(值1,值2,...);
    插入多条数据:INSERT INTO 表名 VALUES(值1,值2,...),
                                VALUES(值1,值2,...),                                                              VALUES(值1,值2,...);
    插入部分数据:INSERT INTO 表名(字段名1,字段名2,...)VALUES(值1,值2,...);
    一次插入多条部分数据:INSERT INTO 表名(字段名1,字段名2,...)
                        VALUES(值1,值2,...),
                        VALUES(值1,值2,...),
                        VALUES(值1,值2,...);
    注意事项:
    1)插入的这些值必须要和表中的字段对应上; 先后顺序保证一致!
    2)目前没有加入"数据库约束",可以插入非法数据,举例:id重复 ,
        后期需要使用数据库约束来限定用户的操作表的行为!
语句2:---修改数据
    一次修改一个数据:update 表名 set 字段名称 = 值 where 条件 ;
    一次修改多个数据:update 表名 set 字段名称1 = 值 ,字段名称2 =值2.... where 条件;
    不带条件批量修改:update 表名 set 字段名称 = 值 
语句3:-----删除数据
    带条件删除记录:delete  from 表名 where 条件 ;
    删除全表数据:delete from 表名 ;
                truncate table 表名;
    面试题:
    delete from 表名 和 truncate table 表名两个的区别?
      共同点:都是可以删除全表的记录的;
      不同点:delete from 表名 ; 
                仅仅只是将表的全部记录删除了,表还在!
                针对id(非业务字段:设置主键并且自增长),它不影响自增长主键的这个值; 
             truncat table 表名; 将表所有数据删除,而且还会把删除之后,
                                自动创建一个张一模一样的表,影响自增主键的值!
创建一个学生表,id 加入主键(非空且唯一)和自增长(不断的自增1)约束
        CREATE TABLE student(
            id INT PRIMARY KEY AUTO_INCREMENT , -- id主键并且自增长
            NAME VARCHAR(20),-- 姓名
            age INT 
        );

DQL语句:

排序查询
ORDER BY 
        字段名 ASC     --默认不写排序规则asc就是升序
ORDER BY
        字段名 DESC    --默认不写排序规则desc就是降序
    注意:WHERE必须在ORDER BY之前
        多个字段同时排序,谁在前谁优先
聚合函数查询:
针对int类型:单行单列数据
COUNT:查询表中记录
    语法:SELECT COUNT(字段) "代号" FROM 表名;--字段名中无null值
    SELECT COUNT(IFNULL(字段,0)) "代号" FROM 表名;--字段名中有NULL值
AVG:查询这个字段中的平均值
    语法:SELECT AVG(字段) "代号" FROM 表名;
SUM:求和函数
    语法:SELECT SUM(字段1 + 字段2) "代号" FROM 表名;
    注意:NULL值
MAX:最大值
    语法:SELECT MAX(字段) "代号" FROM 表名;
MIN:最小值
    语法:SELECT MIN(字段) "代号" FROM 表名;
    注意:int类型的值 + NULL = NULL
SELECT语句嵌套SELECT语句---子查询
语法:
    SELECT 
        字段1,
        字段2
    FROM 
        表名
    WHERE 
        字段 >  (SELECT AVG(字段) FROM 表名) ;
​WHERE条件后面加模糊查询
LIKE:
    语法:
        SELECT 字段列表 
        FROM 表名 
        WHERE 字段 LIKE '%xxx%';
    %:代表任何多个字符或者某个字符
    _:代表某个单个字符
判断字段是否为NULL的信息
语法:
    RELECT 字段列表 FROM 表名 WHERE 字段 IS NOT NULL;
    RELECT 字段列表 FROM 表名 WHERE 字段 NOT NULL;
条件查询
WHERE
    语法:
    SELECT 
        字段列
    FROM
        表名
    WHERE
        判断条件;
            赋值运算符;=
            比较运算符:< , > , <= , >= , != ,<>(mysql中的不等于)
            逻辑运算符;&& || and or (mysql中推荐使用) 
                字段 BETWEEN 范围1 AND 范围2
                 字段范围1  AND  字段范围2
                 字段值1   OR   字段值2
                 字段 IN(值1,值2,...);
字段冗余(重复度大) 字段去重      
语法:   
    SELECT  
            DISTINCT 字段名1,字段名2...
    FROM 

USE myee_2203;
SHOW TABLES;
CREATE TABLE student(
	id INT, -- id编号
	NAME VARCHAR(20), -- 姓名
	chinese INT, -- 语文
	english INT, -- 英语
	math INT -- 数学	
);
/*
增加数据
*/
DESC student;
INSERT INTO student VALUES(1,'行哥',89,78,90),(2,'潘金莲',67,53,95),
	(3,'凤姐',87,78,77),(4,'旺财',88,98,92),(5,'白小黑',82,84,67),
	(6,'白小黄',55,85,45),(7,'范蹦蹦',75,65,30);
/*
统计学生总成绩
*/
SELECT
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) "总分"
FROM
	student;
/*
统计学生总成绩并增加10分特长分
*/
SELECT
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)+ 10) "总分"
FROM
	student;
/*
使拥别名表示学生分数
*/
SELECT
	id ,
	NAME AS "姓名",
	chinese AS "语文成绩",
	English AS "英语成绩",
	math AS "数学成绩"
FROM
	student;
/*
查询姓名为航哥的学习成绩
*/
SELECT
	NAME,
	chinese,
	english,
	math
FROM
	student
WHERE 
	NAME = "行哥";
/*
查询英语成绩大于90分的同学
*/
SELECT
	NAME,
	english
FROM
	student
WHERE 
	english > 90;
/*
查询总分成绩大于200分的所有同学
*/
SELECT
	NAME,
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) "总分"
FROM
	student
WHERE
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) > 200;
/*
查询英语分数在80-90之间的同学
*/
SELECT
	NAME,
	English
FROM
	student
WHERE 
	english BETWEEN 80 AND 90;
/*
查询数学分数为89,90,91的同学
*/
SELECT
	NAME,
	math
FROM
	student
WHERE
	math IN(89,90,91);
/*
查询学生姓名和英语成绩
*/
SELECT 
	NAME,
	english
FROM
	student;
/*
查询所有姓白的学生英语成绩
*/
SELECT
	NAME,
	english
FROM
	student
WHERE
	NAME LIKE "%白%";
/*
查询数学分>80并且语文分>80的同学
*/
SELECT
	NAME,
	math,
	Chinese
FROM
	student
WHERE
	math > 80 AND Chinese > 80;
/*
查询英语>80或者总分>200的同学
*/
SELECT
	NAME,
	english ,
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) "总分"
FROM
	student
WHERE
	english > 80 AND 
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) > 200;
/*
对数学成绩升序排序
*/
SELECT 
	NAME,
	math
FROM 
	student
ORDER BY
	math ASC;
//*
对总分降序排序,然后再按数学从高到低的顺序输出
*/
SELECT 
	NAME,
	math,
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) "总分"
FROM 
	student
ORDER BY
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) DESC,
	math DESC;
/*
对姓白的学生成绩排序输出(排序规则自己定义)
*/
SELECT 
	NAME,
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) "总分"
FROM 
	student
WHERE 
	NAME LIKE "%白%"
ORDER BY 
	(IFNULL(chinese,0) + IFNULL(english,0) + IFNULL(math,0)) ASC;
/*
数学平均分
*/
SELECT
	AVG(math) "数学平均分"
FROM
	student;
/*
查询数学成绩大于等于平均分的所有学生信息
*/
SELECT
	NAME ,
	math
FROM
	student
WHERE
	math > (SELECT
	AVG(math) "数学平均分"
FROM
	student);
/*
查询出英语成绩最高分的学生信息
*/
SELECT
	MAX(english)
FROM
	student;
/*
模糊查询出学生姓名中第二个字是金的学生信息
*/
SELECT
	NAME
FROM
	student
WHERE
	NAME LIKE "_金%";
/*
查询出英语成绩平均分是多少
*/
SELECT
	AVG(english) "英语平均分"
FROM
	student;
/*
查询出数学总分是多少
*/
SELECT
	SUM(math) "数学总分"
FROM
	student;
/*
查询学生表中有多少条记录
*/
SELECT 
	COUNT(math) "总记录数"
FROM 
	student;
/*
过滤表中重复数据
*/
SELECT
	DISTINCT id,
	 NAME,
	 chinese,
	 english,
	 math
FROM 
	student;
/*
查询学生信息
*/
SELECT * FROM student;
            student3;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值