当前位置: 首页 > news >正文

【MySQL】基础语法总结

MySQL 基础语句

一、DDL 数据库定义语言

1.1CREATE 创建

1.1.1 创建数据库

语法结构

CREATE DATABASE database_name;

示例

CREATE DATABASE demo;

1.1.2 创建表

语法结构

CREATE TABLE 表名 (1 数据类型,2 数据类型,...
);

示例

CREATE TABLE new_user (id INT PRIMARY KEY,name VARCHAR(50),age INT
);

1.1.3 创建视图

语法格式

create view <视图名> as select查询语句

示例

create view user_view as select id,user_id,user_name from `user`select * from user_view

1.1.4 创建索引

索引名建议以 idx开头。

语法格式

CREATE INDEX 索引名 ON 表名 (列名);

示例

CREATE INDEX idx_user_id ON user (user_id);

可通过explain进行验证

explain select * from user where user_id = 'wu'

在这里插入图片描述

1.2 ALTER 修改

1.2.1 添加列

语法结构

ALTER TABLE 表名 ADD 列名 数据类型;

示例

ALTER TABLE user ADD age int(11) DEFAULT null COMMENT '年龄';

1.2.2 删除列

语法结构

ALTER TABLE 表名 DROP 列名;

示例

ALTER TABLE user DROP user_age;

1.2.3 修改列名

语法结构

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;

示例

ALTER TABLE user CHANGE age user_age int(11) DEFAULT null COMMENT '新年龄';

1.2.4 修改列数据类型

语法结构

ALTER TABLE 表名 MODIFY 列名 新数据类型;

示例

ALTER TABLE user MODIFY user_age varchar(16);

1.2.5 修改表名

语法结构

ALTER TABLE 表名 RENAME TO 新表名;

示例

ALTER TABLE user RENAME TO new_user;

1.2.6 创建索引

语法结构

ALTER TABLE 表名 ADD INDEX 索引名 (列名);

示例

ALTER TABLE user ADD INDEX idx_user_id (user_id);

1.2.7 删除索引

语法结构

ALTER TABLE 表名 DROP INDEX 索引名;

示例

ALTER TABLE user DROP INDEX idx_user_id;

1.3 DROP 删除

1.3.1 删除库

语法结构

DROP DATABASE 数据库名称

示例

DROP DATABASE demo

1.3.2 删除表

语法结构

DROP TABLE 表名;

示例

DROP TABLE new_user;

1.3.3 删除视图

语法结构

DROP VIEW view_name;

示例

DROP VIEW user_view;

二、DML 数据库操作语言

2.1 INSERT

2.1.1 插入单条

    INSERT INTO USER (user_id,user_name,create_time,dept_id) VALUES('sa','saname',now(),1)

2.1.2 插入多条

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

UPDATE USER
SET dept_id = 2
WHEREuser_id = 'sa2'

2.3 DELETE

delete from user where user_id = 'sa1'

三、DQL 数据库查询语言

3.1 基础语法结构

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

3.2 常见的查询语句

3.2.1 条件查询

大于、小于、不等于

大于

select * from user  where id > 5

小于

select * from user  where id < 5

不等于

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

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

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

3.2.2 逻辑查询

AND
select * from user  where id = 2 and user_id = 'wu'
OR
select * from user  where id =1 or user_id = 'wu'

3.2.3 DISTINCT 查询不重复

select DISTINCT(user_name) from user 

3.2.4 Like 模糊查询

select * from user  where user_id like 'sa%'

3.2.5 Order 排序

倒序

select * from user  order by id DESC

顺序

select * from user  order by id ASC

3.2.6 GROUP BY 分组

select * from user GROUP BY dept_id

3.2.7 HAVING 分组限制

select * from user GROUP BY dept_id HAVING id > 1

3.2.8 LIMIT 限制条数

select * from user limit 0,10;select * from user limit 1;

3.3 连接查询

3.3.1 内连接

在这里插入图片描述

SELECT*
FROMUSER t1
INNER JOIN dept t2 ON t1.dept_id = t2.id

3.3.2 全连接

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

在这里插入图片描述

SELECT*
FROMUSER t1
FULL JOIN dept t2 ON t1.dept_id = t2.id

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

3.3.3 左连接

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

在这里插入图片描述

    select * from user t1 left join dept t2 on t1.dept_id  = t2.id

3.3.4 右连接

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

在这里插入图片描述

    select * from user t1 right join dept t2 on t1.dept_id  = t2.id   

3.4 常用函数

3.4.1 聚合函数

count

示例

select count(1) from userselect count(*) from userselect count(id) from user
sum

示例

select sum(id) from user
max、min

示例

select max(id) from userselect min(id) from user

3.4.2 LENGTH 字符长度

示例

select user_id , LENGTH(user_id) from user

3.4.3 CASE WHEN 分支函数

语法结构

CASE WHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE result
END

示例

SELECTCASE WHEN dept_id is NULL THEN '无部门'ELSE '有部门'END as DeptId,user_id,user_nameFROMUSER;
http://www.lryc.cn/news/150657.html

相关文章:

  • 【玩玩Vue】使用el-menu作为菜单时,通过一二级路由控制菜单高亮
  • 9.2 【C语言】使用结构体数组
  • leetcode原题: 最小值、最大数字
  • Prompt2Model: Generating Deployable Models from Natural Language Instructions
  • 前端埋点 sendBeacon 替代方式
  • 面试官问我MySQL和MariaDB的联系和区别,这我能不知道?
  • 1.网络空间搜素引擎
  • 《安富莱嵌入式周报》第321期:开源12导联便携心电仪,PCB AI设计,150M示波器差分探头,谷歌全栈环境IDX,微软在Excel推出Python
  • 前端开发必备的网站
  • Java运行时jar时终端输出的中文日志是乱码
  • Vue框架--Vue中el和data的两种写法
  • 【数据结构】 二叉树面试题讲解->贰
  • C和SystemVerilog联合仿真
  • 15-mongodb
  • CSS学习笔记02
  • 为什么Java接口可以多继承,而类不可以?
  • 自动化信息收集工具 水泽 使用教程
  • 2023年全国职业院校技能大赛(高等职业教育组)“信息安全管理与评估”理论技能答案
  • MATLAB 动态图GIF
  • ChatGPT⼊门到精通(4):ChatGPT 为何⽜逼
  • 数据分析基础-数据可视化学习笔记03-可视化的符号与表示-图形符号学
  • 暴力递归转动态规划(四)
  • 大数据项目实战(Sqoop安装)
  • android——spinner下拉弹窗、popupwindow下拉弹窗列表
  • 【阿里淘天】淘天20230824真题一、二 <模拟、双指针>
  • Java注解和反射
  • 【Docker】01-Centos安装、简单使用
  • k8s之存储篇---数据卷Volume
  • 博流RISC-V芯片JTAG debug配置与运行
  • [国产MCU]-W801开发实例-UART控制器