MySQL基础语法

MySql基础语法总结

基础篇

1、数据库

1.创建数据库

语法:CREATE DATABASE + 数据库名

CREATE DATABASE database_name;
2.删除数据库

语法:DROP DATABASE + 数据库名

DROP DATABASE database_name;
3.选择数据库

语法:USE + 数据库名

USE database_name;

2、表

1.创建表

语法:CREATE TABLE + 表名{

列名 + 数据类型

······

}

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);
2.删除表

语法:DROP TABLE + 表名

DROP TABLE table_name;

3、数据

1.添加数据

语法:INSERT INTO + 表名(列名,列名,·····)VALUES (对应列的值,对应列的值,·····)

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
2.更新数据

语法: UPDATE + 表名 + SET + 列名=数值······(给对应列赋值)

WHERE 语句是条件语句(类似于if语句,用于过滤数据)

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

拓展1
加WHERE语句使表内数据更改的范围减小,如WHERE id=1,此时
系统只对id=1的那一行数据进行相应更改。
不加WHERE则系统针对的是整个表的数据;
拓展2有相应解释

3.删除数据

语法:DELETE FROM + 表名

DELETE FROM table_name
WHERE condition;

拓展2
拓展1所言,在删除数据时,如果不加WHERE语句;此时,删除的是整个表的内容。
而加上WHERE id=1 时只会删除表中id=1的那一行。
另外,DELETE FROM table_name语句
要与DROP TABLE table_name 语句区分开来,前者只是删除表的内容并不破坏表的结构(表依然存在),
而后者则是直接删除表,破坏了表的结构(表不存在了)。

4.查询数据

语法:SELECT + 列名,·····

FROM table_name;(可加可不加WHERE,WHERE语句的作用是过滤数据,更精确查找)

SELECT column1, column2, ...
FROM table_name
WHERE condition;
5.按条件排序

语法:ORDER BY + 列名(如ORDER BY id,则是表示按id排序)

默认情况下为升序排序

若想降序排序则在语句后面要加上DESC,如ORDER BY column_name DESC

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name;

函数篇

1、字符串函数

  • CONCAT(S1,S2,···,Sn):字符串拼接,将S1,S2,···,Sn拼接成一个字符串
  • LOWER(str):将字符串str全部转换为小写
  • UPPER(str):将字符串str全部转换为大写
  • LPAD(str,n,pad):左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
  • RPAD(str,n,pad):右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
  • TRIM(str):去掉字符串头部和尾部的空格
  • SUBSTRING(str,start,len):返回从字符串str从start位置起的len个长度的字符串

2、数值函数

  • CEIL(x):向上取整
  • FLOOR(x):向下取整
  • MOD(x,y):返回x/y的模
  • RAND():返回0~1内的随机数
  • ROUND(x,y):求参数x的四舍五入的值,保留y位小数

3、日期函数

  • CURDATE():返回当前日期

示例:

select CURDATE();
  • CURTIME():返回当前时间

示例:

select CURTIME();
  • NOW():返回当前日期和时间

示例:

select NOW();
  • YEAR(date):获取指定date的年份

示例:返回当前年份

select YEAR(now());
  • MONTH(date):获取指定date的月份

示例:返回当前月份

select MONTH(now());
  • DAY(date):获取指定date的日期

示例:返回当前日期

select DAY(now());
  • DATE_ADD(date,INTERVAL expr type):返回一个日期/时间值加上一个时间间隔expr后的时间值

示例:返回目前时间加上70天后的时间值

select date_add(now(),INTERVAL 70 day );
  • DATEDIFF(date1,date2):返回起始时间date1与结束时间date2之间的天数,用起始时间减去结束时间

示例:返回2023-9-8与2021-11-1之间的天数

select datediff('2023-9-8','2021-11-1');

4、流程函数

  • IF(value,t,f):如果value为true,则返回t,否则返回f

示例:返回OK

select IF(true,'Ok','NO');
  • IFNULL(value1,value2):如果value1不为空,返回value1,否则返回value2

示例:返回value2

select ifnull(null,'value2');
  • CASE WHEN [val] THEN [res1] … ELSE [default] END:如果val为true,返回res1,…否则返回default默认值

示例:如果id>1,则返回老大,否则返回小弟

select
    name,
    (case  when id>1 then '老大' else '小弟' end) as impt
from user01;
  • CASE [expr] WHEN [val] THEN [res1] … ELSE [default] END:如果expr(字段)的值等于val1,返回res1,…否则返回default默认值

示例:如果id等于1,则返回老大,等于2返回老二,其他情况返回小弟

select
   name,
   (case  id  when 1  then '老大' when 2 then '老二' else '小弟' end) AS impt
from user01;

查询篇

1、连接查询

1.内连接
  • 隐式内连接

SELECT + 字段列表 + FROM + 表1,表2 + WHERE + 条件

示例:

select * from user,sore where user.id=sore.id;
  • 显示内连接

SELECT + 字段列表 + FROM + 表1 + [INNER] + JOIN + 表2 + ON + 连接条件(INNER可不写)

示例:

select * from user join sore on user.id = sore.id;
2.外连接
  • 左外连接

SELECT + 字段列表 + FROM + 表1 + LEFT + [OUTER] + JOIN + 表2 + ON + 条件(OUTER可不写)

示例:

select * from user left join sore on user.id = sore.id;

补充:查询的数据包含表1(左表)的所有数据

  • 右外连接

SELECT + 字段列表 + FROM + 表1 + RIGHT + [OUTER] + JOIN + 表2 + ON + 条件(OUTER可不写)

示例:

select * from user left join sore on user.id = sore.id;

补充:查询的数据包含表2(右表)的所有数据

3.自连接

SELECT + 字段列表 + FROM + 表A + 别名 + JOIN + 表B + 别名B + ON + 条件

示例:

select * from user as u left join sore as s on u.id = s.id;

补充:自连接查询,可以是内连接查询,也可以是外连接查询。别名可以用AS来命名,或者直接空格+别名

2、联合查询

SELECT + 字段列表 + FROM + 表A
UNION + [ALL]
SELECT + 字段列表 + FROM + 表B

示例:

select user.id from user
union
select sore.id from sore;

补充:对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all 会将全部的数据合并在一起,union会对合并之后的数据去重

3、子查询

SELECT + 字段列表 + FROM + 表A + WHERE + 字段列表 = {SELECT + 字段列表 + FROM + 表B}

示例:

select * from user01 
where id =(select id from user where id=1);

补充:子查询外部的语句可以是INSERT/DELETE/SELECT的任何一个

拓展篇

1、外键

  • 添加外键

ALTER + TABLE + 表名 + ADD + CONSTRAINT + 外键名称 + FOREIGN + KEY + (外键字段名) + REFERENCES + 主表 + (主表列名)

示例:

alter table user add constraint fk_user_p_id foreign key (p_id) references sore(id);
  • 删除外键

ALTER + TABLE + 表名 + DROP + FOREIGN + KEY + 外键名称

示例:

alter table user drop foreign key fk_user_sore;

2、事务

  • 开启事务

START + TRANSACTIONBEGIN

  • 提交事务

COMMIT

  • 回滚事务

ROLLBACK

  • 查看/设置事务提交方式(手动提交)

SELECT + @@autocommit / SET + @@autocommit=0

  • 查看事务隔离级别

SELECT + @@TRANSACTION_ISOLATION

  • 设置事务隔离级别

SET + [SESSION | GLOBAL] + TRANSACTION + ISOLATION + LEVEL + {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }


说明:本文仅为学习笔记分享,知识点较基础,若想更深入了解MySQL可以访问MySQL官方网址

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PG-Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值