SQL 语句

73 阅读2分钟

数据库1:Websites

mysql -uroot -p 连接mysql
use Websites 连接数据库

SELECT name,country FROM Websites; 从 "Websites" 表中选取 "name" 和 "country" 列

SELECT DISTINCT country FROM Websites;从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值

SELECT * FROM Websites WHERE country='CN';从 "Websites" 表中选取国家为 "CN" 的所有网站

逻辑运算的优先级:() not and or

image.png

SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站

SELECT * FROM Websites WHERE alexa>13 ORDER BY alexa ASC,country DESC; 查询alexa大于13的并按照alexa升序排列country降序排列

INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);

参数说明:

  • table_name:需要插入新记录的表名。
  • column1, column2, ... :需要插入的字段名。
  • value1, value2, ... :需要插入的字段值。

UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程';把名字=菜鸟教程的数据 的 alexa 排名更新为 5000,country 改为 USA
PS(执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。 在 MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。 set sql_safe_updates=1; 表示开启该参数)

DELETE FROM Websites WHERE name='Facebook' AND country='USA';从 "Websites" 表中删除网站名为 "Facebook" 且国家为 USA 的网站

SELECT * FROM Websites LIMIT 2;从 "Websites" 表中选取头两条记录:

SELECT * FROM Websites WHERE name LIKE '%oo%';选取 name 包含 "oo" 的所有客户:
SELECT * FROM Websites WHERE name NOT LIKE '%oo%';选取 name 不包含 "oo" 的所有客户:
'%o'以o开头 'o%'以o结尾 'o_%'倒数第二位是o SELECT * FROM Websites WHERE name REGEXP '^[A-H]';选取 name 以 A 到 H 字母开头的网站:
SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';选取 name 不以 A 到 H 字母开头的网站:

image.png

SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程');选取 name 为 "Google" 或 "菜鸟教程" 的所有网站:
SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND country NOT IN ('USA', 'IND');选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:

SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM Websites;三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名: