MySQL数据库常用命令
MySQL数据库常用命令
一、操作数据库命令
- 
创建数据库
create database [if not exists] school; - 
删除数据库
drop database [if not exists] school; - 
使用数据库
use school; - 
查看数据库
show databases; 
注:
- 如果数据库名,表名或者字段名是特殊字符,需要带``。
 - sql关键字不区分大小写。
 - 所有符号都用英文。
 
二、创建数据库表
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;
三、修改数据库
- 
修改表名
alter table `class` rename as `student`; --结构:alter table `新表名` rename as `旧表名`; - 
增加表的字段
alter table `class` add sex varchar(2); --结构:alter table `表名` add 字段名 属性 - 
字段重命名
alter table `class` change age age1 int(3); --结构:alter table `表名` change 旧字段名 新字段名 新的字段属性 - 
修改约束,将class表中的age字段属性改为varchar(20)
alter table `class` modify age1 varchar(20); --结构:alter table `表名` modify 字段名 新的列属性 - 
删除表的字段
alter table `calss` drop age1; --结构:alter table `表名` drop 要删除的字段 - 
删除表
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 引擎按以下逻辑处理(非常重要!):
FROM→ 确定数据源WHERE→ 过滤原始行GROUP BY→ 分组HAVING→ 过滤分组SELECT→ 计算字段、去重(DISTINCT)ORDER BY→ 排序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;
                    
                
                
            
        
浙公网安备 33010602011771号