MySQL

SQL

SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾。

  2. SQL语句可以使用空格/缩进来增强语句可读性。

  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

  4. 注释

    1. 单行注释:--注释内容或者#注释内容(MySQL特有)

    2. 多行注释:/* 注释内容 */

 

DDL-数据库操作

查询

  1. 查询所有数据库

show databases;
  1. 查询当前数据库

select database();

创建

create database [if not exists]数据库名 [default charset 字符集] [collate 排序规则];

删除

drop database[if exists] 数据库名;

使用

use 数据库名;

 

DDL表操作

DDL-表操作-修改

  1. 修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
  1. 修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];
  1. 删除字段

    ALTER TABLE 表名 DROP 字段名

    案例:将emp表的字段username删除

    ALTER TABLE emp DROP username;

     

DDL-表操作-删除

删除表

DROP TABLE[IF EXISTS] 表名

删除指定表,并重新创建该表

TRUNCATE TABLE 表名

DML

DML-添加数据

给指定字段添加数据

INSERT INTO 表名(字段名1, 字段名2,...) VALUES (值1, 值2,..);

给全部字段添加数据2

INSERT INTO 表名 VALUES (值1,值2,...);

批量添加数据3

INSERTINTO 表名(字段名1, 字段名2, ...) VALUES (值1, 值2,...), (值1, 值2,...),(值1,值2,...).INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...) ;

注意: 插入数据时,指定的字段顺序需要与值的顺序是一一对应的 字符串和日期型数据应该包含在引号中 插入的数据大小,应该在字段的规定范围内。

DML-修改删除数据

修改数据

UPDATE 表名 SET 字段1=1,字段2=2 [WHERE 条件];

删除数据

DELETE FROM 表[WHERE 条件];

 

DQL语法

SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数

案例:

查询年龄不等于 88 的员工信息

select * from emp where age != 88;
select * from emp where age> 88;

查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息

select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;

查询年龄等于18 或 20 或 40 的员工信息

select * from emp where age = 18 or age = 20 or age =40;
seLect * from emp where age in(18,20,40);

查询姓名为两个字的员工信息

select * from emp where name Like '__'

查询身份证号最后一位是X的员工信息

select * from emp where idcard like'%X';
select * from emp where idcard like'_ _ _ _ _ _ _ _ _ _ _ _ _X';

DQL聚合函数

DQL-聚合函数

  1. 介绍

    将一列数据作为一个整体,进行纵向计算。

  2. 常见聚合函数

  1. 语法

    SELECT 聚合函数(字段列表) FROM 表名;

    注意: null值不参与所有聚合函数运算

    案例:

    统计该企业员工的平均年龄

    seLect avg(age) from emp;

    统计该企业员工的最大年龄

    select max(age) from emp;

    统计该企业员工的最小年龄

    select min(age) from emp;

    统计西安地区员工的年龄之和

    seLect sum(age) from emp where workaddress = 西安';

    DQL分组查询

    1. 语法

    SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件];
    1. where与having区别执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。判断条件不同:where不能对聚合函数进行判断,而having可以。 注意: 执行顺序: where > 聚合函数>having 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义.

    案例:

    1. 根据性别分组 ,统计男性员工 和 女性员工的数量

    select gender, count(*) from emp group by gender ;
    1. 根据性别分组 ,统计男性员工 和 女性员工的平均年龄

    select gender, avg(age) from emp group by gender ;
    1. 查询年龄小于45的员工 , 并根据工作地址分组 ,获取员工数量大于等于3的工作地址

    select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;
    1. 根据年龄对公司的员工进行升序排序

    2. seLect * from emp order by age ascseLect * from emp order by age desc;
      select * from emp order by age;
    3. 根据入职时间,对员工进行降序排序

      select * from emp order by entrydate desc;
    4. 根据年龄对公司的员工进行升序排序 ,年龄相同 ,再按照入职时间进行降序排序

      select * from emp order by ageasoentrydate desc;
      select * from emp order by age asc , entrydate asc;

       

DQL-分页查询

  1. 语法

    select 字段列表 from 表名 limit 起始索引,查询记录数;
  1. 注意:

    1. 起始索引从0开始,起始索引= (查询页码-1) * 每页显示记录数

    1. 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT

    1. 如果查询的是第一页数据,起始索引可以省略,直接简写为 imit 10。

案例

  1. 查询第1页员工数据, 每页展示10条记录

    select * from emp limit 0,10;
    select * from emp limit 10;
  2. 查询第2页员工数据,每页展示10条记录 -------->(页码-1)*页展示记录数

    select * from emp limit 10,10;

 

DQL-执行顺序

 

posted @   镰刀战士  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示