MENU

常用的 Mysql 语句

August 11, 2021 • Mysql

前言

记录一下常用的 Mysql 语句,防止以后需要的时候忘记!~

常用的语句

"SELECT * FROM Persons"  // 从 "Persons" 表中选取所有的列
"UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'"  // 修改地址(address),'并添加'城市名称(city)
"DELETE FROM Person WHERE LastName = 'Wilson' "  // 删除"LastName"内容为"Wilson"的整一行
"DELETE FROM Person WHERE LastName = 'Wilson'and id='1' "  // 删除"LastName"内容为"Wilson"且"id"为"1"的整一行
"SELECT LastName,FirstName FROM Persons"  // 取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表)
"delete from table_name where id='5'and user='ceshi'"  // 多信息定位删除
"SELECT * FROM Persons WHERE City='Beijing'"  // 单信息查询
"SELECT * FROM table_name where id='5' and user='ceshi'"  // 多信息查询一
"SELECT * FROM table_name WHERE user='Thomas' OR id='1'"  // 多信息查询二
"SELECT * FROM table_name where (user = ceshi or user = admin) and id > 200"  // or加and的用法
"INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)"  // 插入数据方法一
"INSERT INTO 表名称 VALUES (值1, 值2,....)"  // 插入数据方法二
"SELECT Company FROM Orders"  // 从"Orders"表中 "Company" 列中所有的值
"SELECT DISTINCT Company FROM Orders "  // 从 "Orders"表中Company" 列中仅选取唯一不同的值
"SELECT LastName,FirstName FROM Persons"  // 获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表)
"SELECT * FROM Persons"  // 从 "Persons" 表中选取所有的列(用符号 * 取代列的名称)

Top Like 通配符

"SELECT TOP 2 * FROM Persons"  // 从 "Persons" 表中选取头两条记录
"SELECT TOP 50 PERCENT * FROM Persons"  // 从 "Persons" 表中选取 50% 的记录
"SELECT * FROM Persons WHERE City LIKE 'N%'"  // 从"Persons" 表中选取居住在以 "N" 开始的城市里的人
"SELECT * FROM Persons WHERE City LIKE '%g'"  // 从 "Persons" 表中选取居住在以 "g" 结尾的城市里的人
"SELECT * FROM Persons WHERE City LIKE '%lon%'"  // 从 "Persons" 表中选取居住在包含 "lon" 的城市里的人
"SELECT * FROM Persons WHERE City NOT LIKE '%lon%'"  // 从 "Persons" 表中选取居住在不包含 "lon" 的城市里的人
"SELECT * FROM Persons WHERE City LIKE 'Ne%'"  // 从 "Persons" 表中选取居住在以 "Ne" 开始的城市里的人
"SELECT * FROM Persons WHERE FirstName LIKE '_eorge'"  // 从"Persons" 表中选取名字的第一个字符之后是 "eorge" 的人
"SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'"  // 从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er"
"SELECT * FROM Persons WHERE City LIKE '[ALN]%'"  // 从 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人
"SELECT * FROM Persons WHERE City LIKE '[!ALN]%'"  // 从 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人

In Betweem Aliases

"SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')"  // 从表中选取姓氏为 Adams 和 Carter 的人
"SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'"  // 以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人
"SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'"  // 用上面的例子显示范围之外的人,请使用 NOT 操作符
"SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS po WHERE p.LastName='Adams' AND p.FirstName='John'"  // 假设我们有两个表分别是:"Persons" 和 "Product_Orders"。我们分别为它们指定别名 "p" 和 "po"。现在,我们希望列出 "John Adams" 的所有定单。

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据

"SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P"  // 通过引用两个表的方式,从两个表中获取数据
"SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName"  // 除了上面的方法,我们也可以使用关键词 JOIN 来从两个表中获取数据
"SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName"  // 列出所有人的定购,内连接(INNER JOIN)
' --LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
"SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName"  // 列出所有的人,以及他们的定购 - 如果有的话
' --RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
"SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName"  // 列出所有的定单,以及定购它们的人 - 如果有的话
"SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name"  // 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行
"SELECT E_Name FROM Employees_China UNION SELECT E_Name FROM Employees_USA"  // 列出所有在中国和美国的不同的雇员名‘注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。
"SELECT E_Name FROM Employees_China UNION ALL SELECT E_Name FROM Employees_USA"  // UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。
"CREATE DATABASE my_db"  // 创建一个名为 "my_db" 的数据库
"CREATE TABLE 表名称 (列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,)"  // CREATE TABLE Persons(Id_P int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varcha(255))‘创建名为 "Person" 的表,该表包含 5 个列,列名分别是:"Id_P"、"LastName"、"FirstName"、"Address" 以及 "City"
"ALTER TABLE Persons ADD Birthday date"  // 在表 "Persons" 中添加一个名为 "Birthday" 的新列
"ALTER TABLE Person DROP COLUMN Birthday"  // 删除 "Person" 表中的 "Birthday" 列

查询某字段值重复的数据

查询
查询 tableName 表中,data 字段值重复的数据及重复次数

select `data`,count(*) as count from `tableName` group by `data` having count>1;

替换sql语句

将cdb_pms表subject字段中的Welcom to替换成 欢迎光临

UPDATE `cdb_pms` 
SET `subject` = REPLACE(`subject`, 'Welcome to', '欢迎光临') 
WHERE INSTR(`subject`,'Welcome to') > 0 

替换cdb_posts表的message字段,将“viewthread.php?tid=3989”替换成“viewthread.php?tid=16546”

UPDATE `cdb_posts` 
SET `message`= REPLACE(`message`, 'viewthread.php?tid=3989', 'viewthread.php?tid=16546') 
WHERE INSTR(`message`,'viewthread.php?tid=3989') > 0 ; 

删除所有的空格

UPDATE `es_product` SET `pro_pub_time` = TRIM(`pro_pub_time`) 

删除所有饱含'['或者']'或者'.'的字符

UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '[','') WHERE INSTR(`pro_pub_time`,'[') > 0
UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, ']','') WHERE INSTR(`pro_pub_time`,']') > 0
UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '.','-') WHERE INSTR(`pro_pub_time`,'.') > 0

替换所有含中文'-'的为英文'-'

UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '-','-') WHERE INSTR(`pro_pub_time`,'-') > 0 

将所有的年月都替换成'-'

UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '年','-') WHERE INSTR(`pro_pub_time`,'年') > 0
UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '月','-') WHERE INSTR(`pro_pub_time`,'月') > 0

将所有'2005-04-'这种类型的替换成'2005-04-01'

UPDATE `es_product` SET `pro_pub_time` = CONCAT( `pro_pub_time`, '01') WHERE SUBSTRING_INDEX( `pro_pub_time`, '-', -1) = '' AND LENGTH(`pro_pub_time`) > 0 AND LENGTH(`pro_pub_time`) > 5 

将所有'2005-'这种类型替换成'2005-01-01'

UPDATE `es_product` SET `pro_pub_time` = CONCAT( `pro_pub_time`, '01-01') WHERE INSTR(`pro_pub_time`,'-') > 0 AND LENGTH(`pro_pub_time`) = 5

将所有 饱含'-',但是位数小于8的改成追加'-01'

UPDATE `es_product` SET `pro_pub_time` = CONCAT( `pro_pub_time`, '-01') WHERE INSTR(`pro_pub_time`,'-') > 0 AND LENGTH(`pro_pub_time`) < 8

将所有'2005'这样的改成'2005-01-01'

UPDATE `es_product` SET `pro_pub_time` = CONCAT(`pro_pub_time`,'-01-01') WHERE INSTR(`pro_pub_time`,'-') = 0 AND LENGTH(`pro_pub_time`) = 4 

最后将所有'2005-01-01'格式化成'2005年01月'

UPDATE `es_product` SET `pro_pub_time` = DATE_FORMAT(`pro_pub_time`,'%Y年%m月') WHERE INSTR(`pro_pub_time`,'-') > 0
Last Modified: September 9, 2021
Archives QR Code
QR Code for this page
Tipping QR Code

感谢以下平台提供云加速支持