MySQL数据库常用命令

MySQL数据库常用命令

一、操作数据库命令

  1. 创建数据库

    create database [if not exists] school;
    
  2. 删除数据库

    drop database [if not exists] school;
    
  3. 使用数据库

    use school;
    
  4. 查看数据库

    show databases;
    

注:

  1. 如果数据库名,表名或者字段名是特殊字符,需要带``。
  2. sql关键字不区分大小写。
  3. 所有符号都用英文。

二、创建数据库表

CREATE TABLE student (
`id` INT(5) not null auto_increment COMMENT 'ID',    --auto_increment指的是自增
`name` VARCHAR(20) COMMENT '名字',
`age` INT(5) NOT NULL COMMENT '年龄',
PRIMARY KEY(`id`)   --主键id
)ENGINE=INNODB DEFAULT CHARSET =utf8;

三、修改数据库

  1. 修改表名

    alter table `class` rename as `student`;
    --结构:alter table `新表名` rename as `旧表名`;
    
  2. 增加表的字段

    alter table `class` add sex varchar(2);
    --结构:alter table `表名` add 字段名 属性
    
  3. 字段重命名

    alter table `class` change age age1 int(3);
    --结构:alter table `表名` change 旧字段名 新字段名 新的字段属性
    
  4. 修改约束,将class表中的age字段属性改为varchar(20)

    alter table `class` modify age1 varchar(20);
    --结构:alter table `表名` modify 字段名 新的列属性
    
  5. 删除表的字段

    alter table `calss` drop age1;
    --结构:alter table `表名` drop 要删除的字段
    
  6. 删除表

    drop table [if exists] `class`;
    --结构:drop table `要删除的表名`
    

四、DML语言

1、添加

insert into `class` (`id`,`name`,`age`,`sex`) 
values(1,'sbc',21,'女'),(2,'shn',23,'男');           --id设置的自增也可以不写
--结构:insert into `表名`(字段1,字段2,字段3,字段4) values (值1),(值2),(值3),(值4)

注意:字段与后面的值要一一对应

2、修改

update `class` set `name`='whn',age=18 where id=2;
--结构:update `表名` set 字段名=值 ... where 条件

3、删除(delete命令 truncate命令)

delete from `class`;              --删除所有数据
delete from `class` where id=1;   --删除指定数据

truncate `class`;                 --清空表

五、DQL查询

1、完整语法:

SELECT
    -- 1. 指定要查询的列(字段)
    [DISTINCT] column1, column2, ..., 				--DISTINCT去除重复行(作用于所有 SELECT 列)
    -- 可使用表达式、函数、别名等
    expression AS alias_name,						--AS列或表的别名(可省略 AS,但建议保留提高可读性)
    COUNT(*) AS total

FROM
    -- 2. 指定数据来源(表、视图、子查询等)
    table1 [AS t1]
    -- 多表连接(JOIN)
    [INNER | LEFT | RIGHT | FULL OUTER] JOIN table2 [AS t2] 	 
        ON join_condition

WHERE															
    -- 3. 过滤行(在分组前筛选)
    -- 不能使用聚合函数(如 COUNT, SUM)
    condition1 AND/OR condition2

GROUP BY
    -- 4. 按指定列分组(用于聚合函数)
    column1, column2
    -- 可配合 ROLLUP 生成汇总行(MySQL 支持)
    [WITH ROLLUP]

HAVING
    -- 5. 过滤分组后的结果(可使用聚合函数)
    aggregate_condition

ORDER BY
    -- 6. 对结果排序
    column1 [ASC | DESC],
    column2 [ASC | DESC]

LIMIT														
    -- 7. 限制返回的行数(MySQL 特有,分页常用)
    offset, row_count
    -- 或简写:LIMIT row_count(从第0行开始)
    -- 或:LIMIT row_count OFFSET offset
;

各子句执行顺序(逻辑顺序,非书写顺序)

实际 SQL 引擎按以下逻辑处理(非常重要!):

  1. FROM → 确定数据源
  2. WHERE → 过滤原始行
  3. GROUP BY → 分组
  4. HAVING → 过滤分组
  5. SELECT → 计算字段、去重(DISTINCT)
  6. ORDER BY → 排序
  7. LIMIT → 截取结果

案例:

-- 查询每个部门中年龄大于25岁的员工人数,
-- 只显示人数 >= 2 的部门,
-- 按人数降序排列,取前3个部门

SELECT
    department AS 部门,
    COUNT(*) AS 员工人数,
    AVG(age) AS 平均年龄
FROM
    employees e
    INNER JOIN departments d ON e.dept_id = d.id
WHERE
    e.age > 25
GROUP BY
    department
HAVING
    COUNT(*) >= 2
ORDER BY
    员工人数 DESC
LIMIT 0, 3;
posted @ 2025-11-02 15:32  RenHaonan  阅读(7)  评论(0)    收藏  举报