【MySQL】基础语法总结

MySQL 基础语句

一、DDL 数据库定义语言

1.1CREATE 创建

1.1.1 创建数据库

语法结构

sql 复制代码
CREATE DATABASE database_name;

示例

sql 复制代码
CREATE DATABASE demo;

1.1.2 创建表

语法结构

sql 复制代码
CREATE TABLE 表名 (
  列1 数据类型,
  列2 数据类型,
  ...
);

示例

sql 复制代码
CREATE TABLE new_user (
   id INT PRIMARY KEY,
		name VARCHAR(50),
		age INT
);

1.1.3 创建视图

语法格式

sql 复制代码
create view <视图名> as select查询语句

示例

sql 复制代码
create view user_view as select id,user_id,user_name from `user`

select * from user_view

1.1.4 创建索引

索引名建议以 idx开头。

语法格式

sql 复制代码
CREATE INDEX 索引名 ON 表名 (列名);

示例

sql 复制代码
CREATE INDEX idx_user_id ON user (user_id);

可通过explain进行验证

sql 复制代码
explain select * from user where user_id = 'wu'

1.2 ALTER 修改

1.2.1 添加列

语法结构

sql 复制代码
ALTER TABLE 表名 ADD 列名 数据类型;

示例

sql 复制代码
ALTER TABLE user ADD age int(11) DEFAULT null COMMENT '年龄';

1.2.2 删除列

语法结构

sql 复制代码
ALTER TABLE 表名 DROP 列名;

示例

sql 复制代码
ALTER TABLE user DROP user_age;

1.2.3 修改列名

语法结构

sql 复制代码
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;

示例

sql 复制代码
ALTER TABLE user CHANGE age user_age int(11) DEFAULT null COMMENT '新年龄';

1.2.4 修改列数据类型

语法结构

sql 复制代码
ALTER TABLE 表名 MODIFY 列名 新数据类型;

示例

sql 复制代码
ALTER TABLE user MODIFY user_age varchar(16);

1.2.5 修改表名

语法结构

sql 复制代码
ALTER TABLE 表名 RENAME TO 新表名;

示例

sql 复制代码
ALTER TABLE user RENAME TO new_user;

1.2.6 创建索引

语法结构

sql 复制代码
ALTER TABLE 表名 ADD INDEX 索引名 (列名);

示例

sql 复制代码
ALTER TABLE user ADD INDEX idx_user_id (user_id);

1.2.7 删除索引

语法结构

sql 复制代码
ALTER TABLE 表名 DROP INDEX 索引名;

示例

sql 复制代码
ALTER TABLE user DROP INDEX idx_user_id;

1.3 DROP 删除

1.3.1 删除库

语法结构

sql 复制代码
DROP DATABASE 数据库名称

示例

sql 复制代码
DROP DATABASE demo

1.3.2 删除表

语法结构

sql 复制代码
DROP TABLE 表名;

示例

sql 复制代码
DROP TABLE new_user;

1.3.3 删除视图

语法结构

sql 复制代码
DROP VIEW view_name;

示例

sql 复制代码
DROP VIEW user_view;

二、DML 数据库操作语言

2.1 INSERT

2.1.1 插入单条

sql 复制代码
    INSERT INTO USER (user_id,user_name,create_time,dept_id) VALUES('sa','saname',now(),1)

2.1.2 插入多条

sql 复制代码
INSERT INTO USER (
	user_id,
	user_name,
	create_time,
	dept_id
)
VALUES
	('sa1', 'saname1', now(), 1),
	('sa2', 'saname2', now(), 1),
	('sa3', 'saname3', now(), 1)

2.2 UPDATE

sql 复制代码
UPDATE USER
SET dept_id = 2
WHERE
	user_id = 'sa2'

2.3 DELETE

sql 复制代码
delete from user where user_id = 'sa1'

三、DQL 数据库查询语言

3.1 基础语法结构

sql 复制代码
select <列名>
from <表名>
where <筛选条件>
group by <列名>
having <聚合筛选条件>
order by <排序字段>
limit <条数限制>

3.2 常见的查询语句

3.2.1 条件查询

大于、小于、不等于

大于

sql 复制代码
select * from user  where id > 5

小于

sql 复制代码
select * from user  where id < 5

不等于

sql 复制代码
select * from user  where id != 5

select * from user  where id <> 5
BETWEEN 介于两者范围之内

注意:是包括在内,如下所示 大于等于,而不是大于

sql 复制代码
select * from user  where id BETWEEN 1 and 3
sql 复制代码
select * from user  where id >=1 and id <=3
In 在某个范围之内
sql 复制代码
select * from user  where id in (1,2,4)

3.2.2 逻辑查询

AND
sql 复制代码
select * from user  where id = 2 and user_id = 'wu'
OR
sql 复制代码
select * from user  where id =1 or user_id = 'wu'

3.2.3 DISTINCT 查询不重复

sql 复制代码
select DISTINCT(user_name) from user 

3.2.4 Like 模糊查询

sql 复制代码
select * from user  where user_id like 'sa%'

3.2.5 Order 排序

倒序

sql 复制代码
select * from user  order by id DESC

顺序

sql 复制代码
select * from user  order by id ASC

3.2.6 GROUP BY 分组

sql 复制代码
select * from user GROUP BY dept_id

3.2.7 HAVING 分组限制

sql 复制代码
select * from user GROUP BY dept_id HAVING id > 1

3.2.8 LIMIT 限制条数

sql 复制代码
select * from user limit 0,10;
         
select * from user limit 1;

3.3 连接查询

3.3.1 内连接

sql 复制代码
SELECT
	*
FROM
	USER t1
INNER JOIN dept t2 ON t1.dept_id = t2.id

3.3.2 全连接

查询出左表和右表所有数据,但是去除两表的重复数据;

sql 复制代码
SELECT
	*
FROM
	USER t1
FULL JOIN dept t2 ON t1.dept_id = t2.id

以上代码执行会出现错误,因为MYSQL 不支持全连接!!!

3.3.3 左连接

左连接是左边表的所有数据都有显示出来,右边的表数据只显示共同有的那部分,没有对应的部分只能补空显示,所谓的左边表其实就是指放在left join的左边的表;

sql 复制代码
    select * from user t1 left join dept t2 on t1.dept_id  = t2.id

3.3.4 右连接

右连接正好是和左连接相反的,这里的右边也是相对right join来说的,在这个右边的表就是右表;

sql 复制代码
    select * from user t1 right join dept t2 on t1.dept_id  = t2.id   

3.4 常用函数

3.4.1 聚合函数

count

示例

sql 复制代码
select count(1) from user

select count(*) from user

select count(id) from user
sum

示例

sql 复制代码
select sum(id) from user
max、min

示例

sql 复制代码
select max(id) from user

select min(id) from user

3.4.2 LENGTH 字符长度

示例

sql 复制代码
select user_id , LENGTH(user_id) from user

3.4.3 CASE WHEN 分支函数

语法结构

sql 复制代码
CASE 
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE result
END

示例

sql 复制代码
SELECT
	CASE 
		WHEN dept_id is NULL THEN '无部门'
		ELSE '有部门'
	END as DeptId,
	user_id,user_name

FROM
	USER;
相关推荐
麦聪聊数据33 分钟前
电商大促数据库管控(下):数据需求小时级交付与全链路安全管控
数据库
喜欢的名字被抢了1 小时前
MySQL核心机制:事务、锁与存储引擎
数据库·sql·mysql·教程
JosieBook1 小时前
【数据库】时序数据库通过国测认证,TimechoAI开放体验:工业数据的“存”与“智”如何协同?
数据库·时序数据库
卓怡学长2 小时前
w263基于springboot + vue 健康饮食管理系统
java·数据库·vue.js·spring boot·spring·intellij-idea
万亿少女的梦1683 小时前
基于Spring Boot、Vue.js和MySQL的超市管理系统设计与实现
java·vue.js·spring boot·mysql·管理系统
weixin_307779133 小时前
Linux下Docker Compose里运行的MySQL数据库故障诊断Shell脚本
linux·运维·mysql·docker·自动化
阿演4 小时前
DataDjinn v0.2.11:SQL 编辑、AI 协作和表格操作继续打磨
数据库·人工智能·sql
智脑API平台5 小时前
Codex 国内使用会封号吗?账号安全、中转站和合规边界说明
数据库·redis·缓存
l1t5 小时前
duckdb 1.6dev新增的.manual命令
开发语言·数据库
辉灰笔记5 小时前
第一篇:MySQL8.0生产备份实战|XtraBackup全自动全量+增量备份(钉钉告警+异地Binlog归档)
数据库·mysql·钉钉·运维开发