MySQL深度知识一(摘自sql官方文档)

本文摘要:

局部性原理:当一个数据被用到时,其附近的数据也通常会马上用到

一定要记住,SQL 对大小写不敏感
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)
查询和更新指令构成了 SQL 的 DML 部分:
*SELECT* - 从数据库表中获取数据 select *UPDATE* - 更新数据库表中的数据 update *DELETE* - 从数据库表中删除数据 delete *INSERT INTO* - 向数据库表中插入数据 insert into

SQL 中最重要的 DDL 语句:
*CREATE DATABASE* - 创建新数据库 create databse *ALTER DATABASE* - 修改数据库 alter database *CREATE TABLE* - 创建新表 create table *ALTER TABLE* - 变更(改变)数据库表 alter table *DROP TABLE* - 删除表 drop table *CREATE INDEX* - 创建索引(搜索键) create index *DROP INDEX* - 删除索引 drop index

SQL SELECT 语句
SELECT 列名称 FROM 表名称 或者 SELECT * FROM 表名称
如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons select lastname ,firstname from persons
从 "Persons" 表中选取所有的列:SELECT * FROM Persons

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。
SELECT DISTINCT 列名称 FROM 表名称
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT DISTINCT Company FROM Orders select distinct company from orders

WHERE 子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
运算符包含
'=' 等于   '<> '不等于    '>' 大于    '<' 小于 '>=' 大于等于  '<=' 小于等于   'BETWEEN' 在某个范围内 'LIKE' 搜索某种模
如果只希望选取居住在城市 "Beijing" 中的人,我们需要向 SELECT 语句添加 WHERE 子句:
SELECT * FROM Persons WHERE City='Beijing'
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。

AND 和 OR 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
使用 AND 来显示所有姓为 "Carter" 并且名为 "Thomas" 的人:
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
OR 运算符实例
使用 OR 来显示所有姓为 "Carter" 或者名为 "Thomas" 的人:
SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'

结合 AND 和 OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'

ORDER BY 语句用于对结果集进行排序。
ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):(首先按照公司名称排序,当公司名称相同的时候,然后按照顺序号排序)
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

INSERT INTO 语句

INSERT INTO 语句用于向表格中插入新的行。
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
插入新的行
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
在指定的列中插入数据
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

Update 语句

Update 语句用于修改表中的数据。
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
更新某一行中的一个列
我们为 lastname 是 "Wilson" 的人添加 firstname:
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
更新某一行中的若干列
我们会修改地址(address),并添加城市名称(city):
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'

DELETE 语句

DELETE 语句用于删除表中的行
DELETE FROM 表名称 WHERE 列名称 = 值
删除某行
"Fred Wilson" 会被删除:
DELETE FROM Person WHERE LastName = 'Wilson'
删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name DELETE * FROM table_name

TOP 子句

TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
注释:并非所有的数据库系统都支持 TOP 子句
SELECT TOP number|percent column_name(s) FROM table_name

MySQL 语法
SELECT column_name(s)  FROM table_name  LIMIT number SELECT *   FROM  Persons  LIMIT 5

LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column_name(s)  FROM table_name  WHERE column_name LIKE pattern

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容