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
+TRANSACTION
或BEGIN
- 提交事务
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官方网址
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!