Mysql常用sql语句

    科技2025-09-13  35

    1.创建数据库: create database 数据库名

    2.创建表: create table 表名( 字段1, 字段2, 字段3 )

    3.删除数据库 DROP DATABASE 数据库名;

    4.删除表 DROP TABLE 表名;

    5.增加数据: inset into 表名 (字段1,字段2) values (“值1”,“值2”), (“值1”,“值2”), (“值1”,“值2”);

    6.删除 delete from 表名 where 条件; 删除全部 delete from 表名;会记录日志,数据可恢复,效率较低 truncate table 表名;不会记录日志,不可恢复数据,效率较高

    –查询 7.select * from 表名; * 是通配符,表示查询多有列

    8.select 列1 , 列2 from 表名; 查询表中指定列的数据

    9.去重–select distinct s_class from t_student; distinct -去重

    10.返回指定行数 返回限定行数 显示前三个学生信息 SELECT * FROM t_student LIMIT 0,3; 0表示从第一条数据 3表示显示几条数据

    11.定义集合关系 in:—查询值在集合中的记录 – 查询178-179的学生 SELECT * FROM t_student WHERE s_class IN(‘J178’,‘J179’); not in :----查询值不在集合中的记录 – 查询178-179 之外的学生 SELECT * FROM t_student WHERE s_class NOT IN(‘J178’,‘J179’);

    12.模糊查询 SELECT * FROM t_student WHERE s_name LIKE ‘%七’; %通配符,匹配0个或多个字符 _通配符,匹配一个字符

    13.处理空值 不能用 = 或 != ,只能用is null 或 is not null SELECT * FROM t_student WHERE s_grade IS NULL;

    14.排序 SELECT * FROM t_student ORDER BY s_grade DESC; asc是默认排序-升序 desc是降序 多列排序 先按第一列条件排序 如果第一列的值相等 再按第二例条件排序 – 将学生按成绩排序 如果成绩一样,按 ID排序 SELECT * FROM t_student ORDER BY s_grade DESC,s_id ASC;

    15.分组 概念:将某个列值相同的记录分成一个组,在进行数据运算 select count(*) from 表名 group by 要分组的列名 多列分组: 只有两个或多个列值完全相同的记录,才分成一个组 分组查询后,查询列只能出现分组的列和聚合函数, where 和 having的区别 where 执行在分组之前,不能使用聚合函数 having 执行在分组之后,是对分组的结果进行筛选,只能使用聚合函数

    16.SQL查询语句的执行顺序 查询语句执行顺序,决定了查询关键字的书写顺序,后执行的查询语句可以使用先执行查询语句的别名 顺序 1,执行from 2.执行where进行条件过滤 3.执行group by分组 4.执行 select 投影 5.执行 having 对分组结果进行筛选 6.执行order by 排序 7.执行 limit 返回限定行

    –mysql函数

    ***时间函数*** select now():得到当前时间,年月日 时分秒 select curdate():得到当前时间 年月日 select year(日期): 得到指定时间的年份 select date_add(日期,interval 100 day/hours/month/year)--参数 时间都可以 得到日期时间 100天以后的日期 计算今天到某一天还有几天 select timestampdiff(day,now(),'2020-10-1') ***聚合函数*** count() : 统计行的数量 (*):统计所有符合条件的值,包括空值 (列名):只统计非空值 (distinct 列名):去除重复列值,统计数量 sum() ; 统计某个列的总和 (列名) : 计算该列的总和 avg() 统计某个列的平均值 (列名) : 计算该列的平均值(只算非空的值) max() : 统计某个列的最大值 min() : 统计某个列的最小值

    –联表查询 将两个表中的数据,使用查询语句同时显示在查询结果中 联表查询采用笛卡尔乘积实现,将一个表中所有记录和另一个表中所有记录一一关联.

    分类 内联接 只能查询两个表之间有联系的数据 关键字:join on select 查询列 from 表1,表2 where 主键 = 外键 或 select 查询列 from 表1 join 表2 on 主键 = 外键 SELECT c.`c_type`,m.`m_name` FROM t_car c JOIN t_man m ON c.`fk_manId` = m.`pk_id`; SELECT c.`c_type`,m.`m_name` FROM t_car c, t_man m WHERE c.`fk_manId` = m.`pk_id`; 外连接 可以查出一个表中所有的记录,无论该记录是否有对应的记录 left/right join on select 查询列 from 表1 left join 表2 on 主键 = 外键 SELECT m.*,COUNT(c.`pk_id`) FROM t_man m LEFT JOIN t_car c ON m.`pk_id` = c.`fk_manId` GROUP BY m.`pk_id`; 多对多查询 select 查询列 from 表1 join 中间表 on 中间表外键 = 表1主键 join 表2 on 中间表外键 = 表2 主键
    Processed: 0.012, SQL: 8