- SQL 对大小写不敏感!
- 某些数据库系统要求在每条 SQL 命令的末端使用分号。
- 关键词 DISTINCT 用于返回唯一不同的值。
SELECT DISTINCT 列名称 FROM 表名称
- SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
-
下面的运算符可在 WHERE 子句中使用:
操作符 描述 = 等于 <> 不等于 > 大于 < 小于 >= 大于等于 <= 小于等于 BETWEEN 在某个范围内 LIKE 搜索某种模式
-
AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE
(
FirstName='Thomas'OR
FirstName='William')
AND
LastName='Carter'
-
ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
SELECT Company, OrderNumber FROM Orders
先按company倒叙排完之后按ordernumber升序ORDER BY Company DESC, OrderNumber ASC
- 增删改查:
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 DELETE FROM 表名称 WHERE 列名称 = 值
DELETE FROM table_name
- NOW() 函数返回当前的日期和时间。
- EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
EXTRACT(unit FROM date)
unit可以是date里面的年,月,日,小时。。。 - CURDATE() 函数返回当前的日期。CURTIME() 函数返回当前的时间。他俩拼一块就是NOW()
- DATE_ADD() 函数向日期添加指定的时间间隔。
DATE_ADD(date,INTERVAL expr type)
type可以是年,月。。。 - DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
DATE_FORMAT(date,format)
- DATE_SUB() 函数从日期减去指定的时间间隔。
DATE_SUB(date,INTERVAL expr type)
现在,我们希望从 "OrderDate" 减去 2 天。
我们使用下面的 SELECT 语句:
SELECT OrderId,
和添加时间间隔类似DATE_SUB(OrderDate,INTERVAL 2 DAY)
AS OrderPayDate FROM Orders - DATEDIFF() 函数返回两个日期之间的天数。
DATEDIFF(date1,date2)
使用如下 SELECT 语句:
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
结果:
DiffDate 1 - DATE() 函数返回日期或日期/时间表达式的日期部分。
我们使用下面的 SELECT 语句:
SELECT ProductName, DATE(OrderDate) AS OrderDate FROM Orders WHERE OrderId=1
结果:
ProductName OrderDate 'Computer' 2008-12-29 - Auto-increment 会在新纪录插入表中时生成一个唯一的数字。
- AVG 函数返回数值列的平均值。NULL 值不包括在计算中。
现在,我们希望计算 "OrderPrice" 字段的平均值。
我们使用如下 SQL 语句:
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
现在,我们希望找到 OrderPrice 值高于 OrderPrice 平均值的客户。
我们使用如下 SQL 语句:
SELECT Customer FROM Orders WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
-
SQL BETWEEN 语法
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
如需使用上面的例子显示范围之外的人,请使用 NOT 操作符:
SELECT * FROM Persons WHERE LastName
不同数据库的查询结果的范围不一致,最好是验证后使用NOT
BETWEEN 'Adams' AND 'Carter' - CHECK 约束用于限制列中的值的范围。
下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。
My SQL:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255),
CHECK (Id_P>0)
)如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
- SQL COUNT DISTINCT 函数
可以一同使用 DISTINCT 和 COUNT 关键词,来计算非重复结果的数目。
SELECT COUNT(DISTINCT column(s)) FROM table
- COUNT() 函数返回匹配指定条件的行数。
- COUNT(*) 函数返回表中的记录数。
-
DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新纪录。
下面的 SQL 在 "Persons" 表创建时为 "City" 列创建 DEFAULT 约束:
My SQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) DEFAULT 'Sandnes' )
如果在表已存在的情况下为 "City" 列创建 DEFAULT 约束,请使用下面的 SQL:
MySQL:
ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES'
如需撤销 DEFAULT 约束,请使用下面的 SQL:
MySQL:
ALTER TABLE Persons ALTER City DROP DEFAULT
- FIRST() 函数返回指定的字段中第一个记录的值。
SELECT FIRST(column_name) FROM table_name
- 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
下面的 SQL 在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY指向Persons表的Id_P字段:
MySQL:
CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (O_Id),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
- FORMAT 函数用于对字段的显示进行格式化。
SQL FORMAT() 语法
SELECT FORMAT(column_name,format) FROM table_name
-
CREATE INDEX 语句用于在表中创建索引。
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据
用户无法看到索引,它们只能被用来加速搜索/查询。
注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
SQL CREATE INDEX 语法
在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name ON table_name (column_name)
注释:"column_name" 规定需要索引的列。
SQL CREATE UNIQUE INDEX 语法
在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX index_name ON table_name (column_name)
MySQL学习总结
最新推荐文章于 2023-07-02 12:49:06 发布