百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

mysql常用语句超级详细汇总(mysql常用语法)

nanshan 2025-07-01 22:14 6 浏览 0 评论

1.连接数据库:

连接本地数据库:

mysql -u root -p

连接远程数据库:

mysql -h 192.169.22.199 -u root -p

退出数据库:

exit

2.创建数据库:

create database payment;

使用 mysqladmin 创建数据库

mysqladmin -u root -p create abc_db;

3.显示所有数据库:

show databases;

4.删除数据库:

drop database payment;

使用 mysqladmin 删除数据库

mysqladmin -u root -p drop abc_db

5.选择数据库:

use home_db;

6.数据类型:

数值类型:

TINYINT:
SMALLINT:
MEDIUMINT:
INT(INTEGER):
BIGINT:
FLOAT:
DOUBLE:
DECIMAL:

日期和时间类型:

DATE:
TIEM:
DATETIME:
YEAR:
TIMESTAMP:

字符串类型:

CHAR:
VARCHAR:
TINYBLOB:
TINYTEXT:
BLOB:
TEXT:
MEDIUMBLOB:
MEDIUMTEXT:
LONGBLOB:
LONGTEXT:

7.创建数据表:

CREATE TABLE IF NOT EXISTS `t_order`(
`id` INT(10) UNSIGNED AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

8.删除数据表:

DROP TABLE t_order;

9.insert 插入:

插入一条数据:

INSERT INTO t_order(title)VALUES('手机');

INSERT 插入多条数据:

INSERT INTO t_order(title)VALUES('笔记本'),('平板电脑');

10.select 查询:

所有字段查询:

SELECT * FROM t_order;

某些字段查询:

SELECT t_order.id, t_order.title FROM t_order;

分页查询:

SELECT t_order.title FROM t_order WHERE id LIMIT 1,10

11.where 条件:

OR,AND的应用:

SELECT * FROM t_order WHERE title ='手机' OR title='笔记本';
SELECT * FROM t_order WHERE title ='手机' AND id=2;

12.update 更新:

UPDATE t_order SET title='苹果手机' WHERE id =2;

13.delete 删除:

DELETE FROM t_order WHERE id=2;

14.like 查询

SELECT * FROM t_order WHERE title LIKE '%手机%';
SELECT * FROM t_order WHERE title LIKE '_机';

14.union 联合查询:

连接两个以上的 SELECT 语句合并成一个结果集合

SELECT * FROM t_order UNION SELECT * FROM t_user;
SELECT * FROM t_order UNION ALL SELECT * FROM t_user;

15.order by 排序:

升序排序:

SELECT * FROM t_order ORDER BY id ASC;

降序排序:

SELECT * FROM t_order ORDER BY id DESC;

16.group by 分组:

SELECT title, count(*) as total FROM t_order GROUP BY title;

17.join 连接:

inner join(内连接) on:
获取两个表中字段匹配关系的记录

SELECT * FROM t_order o INNER JOIN t_user u ON o.id =u.id;

left join(左连接)on:
获取左表所有记录,即使右表没有对应匹配的记录

SELECT * FROM t_order o LEFT JOIN t_user u ON o.id =u.id;

right join(右连接)on:
获取右表所有记录,即使左表没有对应匹配的记录

SELECT * FROM t_order o RIGHT JOIN t_user u ON o.id =u.id;

18.null的处理:

null值的判断:

SELECT * FROM t_user WHERE name IS NULL;

非null值的判断:

SELECT * FROM t_user WHERE name IS NOT NULL;

19.REGEXP 正则表达式:

SELECT * FROM t_order WHERE title REGEXP('手机#39;);
SELECT * FROM t_order WHERE title REGEXP('^笔');

表达式的操作符:
^:匹配字符串的开始位置
$:匹配字符串的结束位置
.:匹配除 "\n" 之外的任何单个字符
[...]:匹配所包含的任意一个字符
[^...]:匹配未包含的任意字符
w1|w2|w3:匹配 w1 或 w2 或 w3
*:匹配零次或多次
+:匹配一次或多次
{n}:匹配 n 次
{n,m}:最少匹配 n 次,并且最多匹配 m 次

20.事务:

BEGIN:开启一个事务
COMMIT:事务确认
ROLLBACK:事务回滚
SAVEPOINT:
RELEASE SAVEPOINT:
ROLLBACK TO:
SET:用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别:
READ UNCOMMITTED、
READ COMMITTED、
REPEATABLE READ、
SERIALIZABLE。

21.ALTER 修改命令:
添加一个字段:

ALTER TABLE t_user ADD COLUMN `password` VARCHAR(64) NOT NULL;

修改一个字段:

MODIFY:
ALTER TABLE t_user MODIFY COLUMN password CHAR(10) DEFAULT '0' ;
CHANGE:
ALTER TABLE t_user CHANGE `password` `user_password` VARCHAR(10) NOT NULL;

modify和change都是只能修改相同的类型,不同的类型,如char不能改成integer。change可以修改字段名,modify不能修改字段名。

修改字段默认值:

ALTER TABLE t_user ALTER `user_password` SET DEFAULT '0';

删除一个字段:

ALTER TABLE t_user DROP password;

修改字段名称:

ALTER TABLE t_user CHANGE `password` `user_password` VARCHAR(10) NOT NULL;

指定添加字段的位置:
加字段放在某个字段之后:

ALTER TABLE t_sys_user ADD COLUMN `marker` VARCHAR(20) DEFAULT NULL AFTER `name`;

加字段放在第一位:

ALTER TABLE t_sys_user ADD COLUMN `alt` VARCHAR(20) DEFAULT NULL FIRST;

修改表名:

ALTER TABLE t_user RENAME TO `t_sys_user`;
RENAME TABLE t_sys_user TO t_user;

显示表的所有列的信息:

SHOW COLUMNS FROM t_order;
DESC t_order;

显示表的创建语句:

SHOW CREATE TABLE t_order;

修改表的存储引擎:

ALTER TABLE t_sys_user engine=InnoDB;

22.索引:
添加索引:
添加普通索引:

CREATE INDEX nameIndex ON t_user(`name`);
ALTER TABLE t_user ADD INDEX nameIndex(`name`);
CREATE TABLE `t_product`(
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`title` VARCHAR(20) NOT NULL,
`description` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY(`id`),
INDEX name_index(`name`)
)

添加唯一索引:

CREATE UNIQUE INDEX nameIndex ON t_user(`name`);
ALTER TABLE t_user ADD UNIQUE INDEX nameIndex(`name`);
CREATE TABLE `t_product`(
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`title` VARCHAR(20) NOT NULL,
`description` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY(`id`),
UNIQUE name_index(`name`)
)

删除索引:

DROP INDEX nameIndex ON t_user;
ALTER TABLE t_product DROP INDEX name_index;

显示索引:

SHOW INDEX FROM t_user;

23.临时表:

CREATE TEMPORARY TABLE `t_temporary`(
`id` INTEGER(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT NULL,
PRIMARY KEY(`id`)
)

从旧表中获取数据生成临时表:

CREATE TEMPORARY TABLE t_tem AS(
SELECT * FROM t_order LIMIT 0,10
)

24.复制表:
查看需要复制表的创建语句:

SHOW CREATE TABLE t_order;

复制创建语句进行新表创建:

CREATE TABLE `t_order_clone` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

往新表填充需要复制表的数据:

INSERT INTO `t_order_clone`(id,title) SELECT * FROM t_order;

直接在创建的时候就从旧表拿数据:

CREATE TABLE `t_user_clone` AS (
SELECT * FROM t_user
);

只复制表结构到新表:

CREATE TABLE `t_user_customer` SELECT * FROM t_user WHERE 1=2;

25.数据库元数据:

SELECT VERSION(); //数据库版本
SELECT DATABASE(); //数据库名称
SELECT USER();//数据库当前登录用户
SHOW STATUS;//数据库的状态
SHOW VARIABLES;//数据库的配置变量

26.序列:
使用AUTOINCREMENT 来定义序列
创建表的时候添加AUTOINCREMENT序列

CREATE TABLE `t_user`(
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT NULL,
PRIMARY KEY(`id`)
)

重置序列的开始值(只能目前最大的值大,不能比目前最大的值的小):

ALTER TABLE t_user auto_increment=1000;

27.导出数据:

用OUTFILE导出表的数据:

SELECT * FROM t_user INTO OUTFILE 'G:/t_user.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

用mysqldump导出表的SQL格式的数据(包含创建语句和插入数据语句):

mysqldump -u root -p payments t_user_clone > t_user_bak.txt
mysqldump -u root -p payments > G:/payments.sql

只导出需要插入的数据(不包含创建的语句):

mysqldump -u root -p payments --no-create-info > G:/payments.txt
mysqldump -u root -p payments --no-create-info > G:/payments.sql

28.导入数据:
source 命令导入
先创数据库 payment,再导入:
mysql -u root -p payment < G:/payment.sql

CREATE DATABASE paymentdb;
use paymentdb;
source G:/payments.sql

29.函数:

字符串函数:

CHAR_LENGTH(s):返回字符串 s 的字符数

SELECT CHAR_LENGTH("abcde") AS `length` //输出 5

CHARACTER_LENGTH(s) :返回字符串 s 的字符数

SELECT CHARACTER_LENGTH("web"); //3

CONCAT(s1,s2...sn):字符串 s1,s2 等多个字符串合并为一个字符串

SELECT CONCAT("wo-","de-","zuguo") //wo-de-zuguo

CONCAT_WS(x, s1,s2...sn): 同 CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上 x,x 可以是分隔符

SELECT CONCAT_WS("@","come","on","baby");
//come@on@baby

FIELD(s,s1,s2...) :返回第一个字符串 s 在字符串列表(s1,s2...)中的位置

SELECT FIELD("you","see", "you", "late"); //2。索引以1开始而不是0.

FINDINSET(s1,s2):返回在字符串s2中与s1匹配的字符串的位置

SELECT FIND_IN_SET("a","i,am,a,worker"); //3

FORMAT(x,n):函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。

SELECT FORMAT("1.44",1); //1.4
SELECT FORMAT("1.55",1); //1.6

INSERT(s1,x,len,s2):字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串

SELECT INSERT("hello word",7,4,"世界");//hello 世界

LOCATE(s1,s):从字符串 s 中获取 s1 的开始位置

SELECT LOCATE("a","this is a student");-- 9

LCASE(s):将字符串 s 的所有字母变成小写字母

SELECT LCASE("ABC");-- abc

LEFT(s,n):返回字符串 s 的前 n 个字符

SELECT LEFT("this is a apple",3);-- thi

LOWER(s):将字符串 s 的所有字母变成小写字母

SELECT LOWER('ABC') -- abc

LPAD(s1,len,s2):在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len

LTRIM(s) :去掉字符串 s 开始处的空格

MID(s,n,len):从字符串 s 的 n 位置截取长度为 len 的子字符串,同 SUBSTRING(s,n,len)

POSITION(s1 IN s):从字符串 s 中获取 s1 的开始位置

REPEAT(s,n):将字符串 s 重复 n 次
REPLACE(s,s1,s2):将字符串 s2 替代字符串 s 中的字符串 s1

REVERSE(s):将字符串s的顺序反过来

RIGHT(s,n):返回字符串 s 的后 n 个字符

RPAD(s1,len,s2):在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len

RTRIM(s):去掉字符串 s 结尾处的空格

SPACE(n):返回 n 个空格

STRCMP(s1,s2):比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1

SUBSTR(s, start, length):从字符串 s 的 start 位置截取长度为 length 的子字符串

SUBSTRING(s, start, length):从字符串 s 的 start 位置截取长度为 length 的子字符串

SUBSTRING_INDEX(s, delimiter, number) :返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。

TRIM(s):去掉字符串 s 开始和结尾处的空格

UCASE(s):将字符串转换为大写

UPPER(s):将字符串转换为大写

30.总条数:

SELECT COUNT("*") as `total` FROM t_order;

31.求和:

SELECT SUM(saled) as sum FROM t_order;

32.求平均值:

SELECT AVG(saled) AS avg FROM t_order;

33.求最大值:

SELECT MAX(saled) AS maxs FROM t_order;

34.求最小值:

SELECT MIN(saled) AS mins FROM t_order;

相关推荐

手机看视频卡顿的系统化解决方案(手机看视频特别卡是什么原因)

手机看视频卡顿是日常使用中常见的问题,通常由网络不稳定、设备性能不足、应用设置不当或系统问题导致。以下方案按优先级排序,兼顾操作难度与解决效果,帮助你快速定位并解决卡顿问题。一、网络优化:解决最核心诱...

电子电路硬件测试基础-板级测试工具之示波器(1)

示波器介绍示波器,作为一种电子测试仪器,主要用于对电信号的波形进行测量、显示与分析。它的工作原理是将电信号的瞬时值转化为屏幕上的垂直偏移,并以时间为基准在水平轴上展开,进而生成信号的图形化呈现。借助示...

宽带安装避坑指南:从选套餐到验收全流程注意事项

在网络成为生活必需品的当下,看似简单的宽带安装实则暗藏诸多细节,稍不留意就会踩入隐藏费用、性能虚标等陷阱。掌握以下关键要点,助你轻松避开宽带安装雷区。一、选对运营商与套餐,拒绝隐形消费选择运营商时,不...

噪声分析及小信号测试(噪音中的信号是什么含义)

示波器在大量开关电源或大功率用电器等复杂环境下进行自环测试,容易出现视频中的噪声问题。示波器在进行小信号测试时,我们要考虑地线带来的干扰,一般设置要求是:一、带宽限制打开;二、尽可能短的地线,一般使用...

怀疑房间被装了监控?深度解析检测方法与步骤

在现代社会中,隐私保护日益受到重视。当我们租房、住酒店或身处私人住宅时,如果发现房间内有异常的迹象,如电器无故自动开关、网络速度突然变慢、电费异常增加,或者在某些特定区域总感觉“被注视”,这些都可能是...

如何快速鉴定网线好坏?怎样测网线电阻?

一、快速鉴定网线好坏的3大核心技巧1.外观检测法:5秒看穿网线本质标识验证:正品网线外皮应清晰印有"CAT5e""CAT6"等类别标识,以及米数刻度(如30...

网速慢?教你快速检测网卡速率! #网络测速

网卡是百兆还是千兆?你知道吗?网速慢可能就是因为网卡不够快,今天就来教你如何快速检查网卡。1.打开CMD:首先找到电脑,按下Win+R键,输入cmd,然后按回车,这就打开了命令提示符...

怎么查自己家WiFi多少兆?(苹果手机测wifi网速)

怎么查自己家WiFi多少兆?在数字化生活日益普及的今天,家庭WiFi的速度直接影响着我们上网冲浪、在线学习、视频通话等日常活动的流畅度。了解自家WiFi的带宽通常以兆比特每秒Mbps为...

家里宽带网速不理想?测一下就知道了

家里网络不理想,经常发生卡顿或是网络抖动?可能是家里宽带的影响,这时候不妨实际测试下网速看看,是否符合预期。个人最近经历过两次上网卡顿问题,第一个是上个月回老家,刷剧的时候,发现有加载缓慢的情况,10...

Linux 必备的20个核心知识点(linux内核知识点)

学习和使用Linux所必备的20个核心知识点。这些知识点涵盖了从基础操作到系统管理和网络概念,是构建扎实Linux技能的基础。Linux必备的20个知识点1.Linux文件系统层级标...

忆享科技戟星安全实验室|内网隧道技术,你知道几个?

本文约6000字,阅读约需15分钟。0x00前言在实际环境中,会有各种网络设备、防火墙以及入侵检测系统阻止外网与内网的通信,我们构建内网隐蔽通道来突破安全策略的限制,实现对目标机器的控制。当我们在外...

Win10怎么连接linux虚拟机?(win10搭建linux虚拟机)

这个不难,主要是ping一下ip,检查win10系统是否和Linux虚拟机连通,接着开启ssh服务,如果一切正常的话,就可以连接linux虚拟机,这里简单介绍一下实现过程,实验环境win10+vmwa...

如何在CentOS中配置静态IP地址?(centos6.5配置静态ip地址)

静态IP地址是在计算机网络中使用的固定IP地址,与动态分配的IP地址相对。在CentOS中,通过配置网络设置,您可以轻松地为您的系统设置静态IP地址。本文将详细介绍在CentOS中配置静态IP地址的步...

Firewalld的简单使用(firewall direct)

从Centos7开始默认防火墙就已经更换为了firewall,替换了之前的iptablesFirewalld服务采用firewall-cmd或firewall-config(图形化工具)来动态管理ke...

Vmware设置静态IP和主机访问(vmware 设置固定ip)

摘要:Vmware设置静态IP和主机访问关键词:Vmware、静态IP、主机访问整体说明最近在做大模型的本地部署,发现之前的Virtualbox,不太能用到本地的英伟达GPU,所以开始使用...

取消回复欢迎 发表评论: