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号