作为全球使用最广泛的开源关系型数据库,MySQL以其稳定性和高效性赢得了开发者的青睐。如果你是数据库开发新手,或者已经有一定经验的开发人员,想要进一步提高数据库的操作效率,那么熟悉和掌握MySQL的常用语句是必不可少的。这些SQL语句不仅能够帮助你快速完成日常的数据库操作任务,还能让你在面对复杂问题时游刃有余。今天我们就为大家整理了MySQL必背的50条经典SQL语句,助你成为数据库操作的高手。
1.创建数据库
在MySQL中,创建一个新数据库是开始任何操作的第一步。以下语句将创建一个名为test_db的数据库:
CREATEDATABASEtest_db;
2.使用数据库
在创建数据库后,你需要指定正在使用的数据库。使用以下语句可以切换到test_db数据库:
USEtest_db;
3.创建表
创建数据库之后,你需要创建表以存储数据。以下是一个创建名为users的表的例子:
CREATETABLEusers(
idINTPRIMARYKEYAUTO_INCREMENT,
nameVARCHAR(50)NOTNULL,
emailVARCHAR(100),
created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP
);
4.查看数据库列表
如果你想查看当前MySQL中有哪些数据库,可以使用以下语句:
SHOWDATABASES;
5.查看当前数据库中的表
当你已经进入了一个特定的数据库,你可以查看该数据库中包含哪些表:
SHOWTABLES;
6.查看表的结构
想要了解某个表的结构,比如字段类型及约束,可以使用:
DESCRIBEusers;
7.插入数据
数据插入是MySQL中最基础的操作之一。下面是将数据插入users表的SQL语句:
INSERTINTOusers(name,email)VALUES('张三','zhangsan@example.com');
8.查询数据
查询数据是数据库操作的核心,使用以下语句查询users表中的所有记录:
SELECT*FROMusers;
9.条件查询
你可以在查询时添加条件,比如查找名字为“张三”的记录:
SELECT*FROMusersWHEREname='张三';
10.更新数据
当你需要修改表中已有的数据时,可以使用UPDATE语句。以下是更新users表中id=1的记录的例子:
UPDATEusersSETemail='newemail@example.com'WHEREid=1;
11.删除数据
删除记录同样是常见的数据库操作。下面的语句会删除id=1的用户数据:
DELETEFROMusersWHEREid=1;
12.删除表
如果你不再需要某个表,可以使用以下语句删除它:
DROPTABLEusers;
13.删除数据库
删除数据库会移除数据库中的所有表和数据,谨慎使用。下面是删除数据库test_db的SQL语句:
DROPDATABASEtest_db;
14.添加字段
如果你需要在表中添加新的列,可以使用ALTER语句。以下是为users表添加一个名为age的列:
ALTERTABLEusersADDCOLUMNageINT;
15.删除字段
如果某个字段不再需要,可以通过以下语句将其从表中删除:
ALTERTABLEusersDROPCOLUMNage;
16.修改字段
你可以修改表中字段的名称或数据类型。例如,修改users表中的name字段的最大字符数:
ALTERTABLEusersMODIFYCOLUMNnameVARCHAR(100);
17.创建索引
索引能够显著提高查询速度,以下是为users表的email字段创建索引的SQL语句:
CREATEINDEXidx_emailONusers(email);
18.删除索引
如果索引不再需要,可以使用以下语句删除它:
DROPINDEXidx_emailONusers;
19.查看表的索引
你可以使用以下语句查看users表中所有的索引:
SHOWINDEXFROMusers;
20.排序查询结果
使用ORDERBY子句可以对查询结果进行排序。以下语句会按created_at时间排序:
SELECT*FROMusersORDERBYcreated_atDESC;
21.分页查询
当查询的结果非常多时,分页查询会显得非常有用。使用LIMIT来限制返回的结果数量。以下语句会返回前10条记录:
SELECT*FROMusersLIMIT10;
22.聚合函数:COUNT
如果你想统计表中的记录数量,可以使用COUNT()聚合函数。以下语句统计users表中的用户总数:
SELECTCOUNT(*)FROMusers;
23.聚合函数:AVG
使用AVG()函数可以计算某列的平均值。例如,计算age列的平均值:
SELECTAVG(age)FROMusers;
24.聚合函数:SUM
SUM()函数用来计算某列的总和。以下是计算age列总和的例子:
SELECTSUM(age)FROMusers;
25.聚合函数:MAX和MIN
MAX()和MIN()函数分别用于查找某列的最大值和最小值。以下是找出age列的最大值和最小值:
SELECTMAX(age),MIN(age)FROMusers;
26.GROUPBY
使用GROUPBY语句可以将结果按某一列分组。例如,按age分组统计用户数:
SELECTage,COUNT(*)FROMusersGROUPBYage;
27.HAVING
HAVING用于过滤分组后的结果。例如,查询age大于30的用户数:
SELECTage,COUNT(*)FROMusersGROUPBYageHAVINGage>30;
28.JOIN查询
JOIN用于将两个或多个表的记录结合在一起。以下是连接users和orders表查询用户的订单信息:
SELECTusers.name,orders.amount
FROMusers
JOINordersONusers.id=orders.user_id;
29.LEFTJOIN查询
LEFTJOIN保证了左表的所有记录都会显示,哪怕右表没有匹配的记录:
SELECTusers.name,orders.amount
FROMusers
LEFTJOINordersONusers.id=orders.user_id;
30.RIGHTJOIN查询
RIGHTJOIN与LEFTJOIN类似,但它保证右表的所有记录都会显示:
SELECTusers.name,orders.amount
FROMusers
RIGHTJOINordersONusers.id=orders.user_id;
31.使用子查询
子查询是一种嵌套查询,它可以在另一个查询的内部执行。例如,查询users表中下单最多的用户:
SELECT*FROMusersWHEREidIN(SELECTuser_idFROMordersGROUPBYuser_idORDERBYCOUNT(*)DESCLIMIT1);
32.DISTINCT查询
DISTINCT用于消除查询结果中的重复数据。例如,查询不同的age值:
SELECTDISTINCTageFROMusers;
33.数据类型转换
MySQL允许在查询中对数据进行类型转换。例如,将age字段从整数转换为字符串:
SELECTCAST(ageASCHAR)FROMusers;
34.IFNULL函数
IFNULL()函数用于替换空值。以下语句将email字段为空的记录替换为noemail@example.com:
SELECTname,IFNULL(email,'noemail@example.com')FROMusers;
35.CASE语句
CASE语句用于在SQL查询中进行条件判断。以下语句根据age列的值分类:
SELECTname,
CASE
WHENage<18THEN'未成年'
WHENageBETWEEN18AND60THEN'成年'
ELSE'老年'
ENDASage_group
FROMusers;
36.EXISTS子句
EXISTS用于检查子查询是否返回结果。以下语句查询那些有订单记录的用户:
SELECTnameFROMusersWHEREEXISTS(SELECT1FROMordersWHEREorders.user_id=users.id);
37.LIMIT与OFFSET
在分页查询时,OFFSET可以用来指定起始记录位置。例如,查询第2页的数据(每页10条):
SELECT*FROMusersLIMIT10OFFSET10;
38.TRUNCATE表
TRUNCATE用于清空表中的所有数据,但不删除表本身:
TRUNCATETABLEusers;
39.RENAME表
如果你想重命名一个表,可以使用RENAME:
RENAMETABLEusersTOcustomers;
40.设置自增字段的起始值
你可以使用以下语句设置自增字段的起始值:
ALTERTABLEusersAUTO_INCREMENT=1001;
41.备份数据库
通过命令行,使用mysqldump工具可以备份数据库:
mysqldump-uusername-ptest_db>backup.sql
42.恢复数据库
使用以下命令从备份文件恢复数据库:
mysql-uusername-ptest_db
43.事务:开始
MySQL支持事务操作,通过BEGIN开始事务:
BEGIN;
44.事务:提交
提交事务:
COMMIT;
45.事务:回滚
如果在事务中出现错误,可以使用ROLLBACK回滚:
ROLLBACK;
46.设置连接超时
如果你想设置连接的超时时间,可以使用以下语句:
SETSESSIONwait_timeout=3600;
47.查询当前时间
你可以使用以下语句查询当前的时间戳:
SELECTNOW();
48.查询服务器版本
通过以下语句可以查询MySQL的版本:
SELECTVERSION();
49.获取连接信息
查询当前MySQL连接的详细信息:
SHOWSTATUSLIKE'Threads_connected';
50.权限管理
设置用户权限是非常重要的。以下语句将给test_user用户授予对test_db数据库的所有权限:
GRANTALLPRIVILEGESONtest_db.*TO'test_user'@'localhost';
掌握这些MySQL常用语句后,你将能够在开发中更加高效地操作数据库,处理复杂的查询需求以及优化性能。希望大家能将这些语句内化为自己的技能,成为MySQL的专家!