MySQL学习总结

  1. SQL 对大小写不敏感
  2. 某些数据库系统要求在每条 SQL 命令的末端使用分号。
  3. 关键词 DISTINCT 用于返回唯一不同的值。
    SELECT DISTINCT 列名称 FROM 表名称

  4. SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
  5. 下面的运算符可在 WHERE 子句中使用:

    操作符描述
    =等于
    <>不等于
    >大于
    <小于
    >=大于等于
    <=小于等于
    BETWEEN在某个范围内
    LIKE搜索某种模式

  6.  AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

    SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
    AND LastName='Carter'

  7. ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照升序对记录进行排序。

    如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

    先按company倒叙排完之后按ordernumber升序
  8. 增删改查:
    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
  9. NOW() 函数返回当前的日期和时间。
  10. EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
    EXTRACT(unit FROM date)
    unit可以是date里面的年,月,日,小时。。。
  11. CURDATE() 函数返回当前的日期。CURTIME() 函数返回当前的时间。他俩拼一块就是NOW()
  12. DATE_ADD() 函数向日期添加指定的时间间隔。
    DATE_ADD(date,INTERVAL expr type)
    type可以是年,月。。。
  13. DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
    DATE_FORMAT(date,format)
  14. DATE_SUB() 函数从日期减去指定的时间间隔。
    DATE_SUB(date,INTERVAL expr type)

    现在,我们希望从 "OrderDate" 减去 2 天。

    我们使用下面的 SELECT 语句:

    SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate
    FROM Orders
    和添加时间间隔类似
  15. DATEDIFF() 函数返回两个日期之间的天数。
    DATEDIFF(date1,date2)

    使用如下 SELECT 语句:

    SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate

    结果:

    DiffDate
    1
  16. DATE() 函数返回日期或日期/时间表达式的日期部分。

    我们使用下面的 SELECT 语句:

    SELECT ProductName, DATE(OrderDate) AS OrderDate
    FROM Orders
    WHERE OrderId=1
    

    结果:

    ProductNameOrderDate
    'Computer'2008-12-29
  17. Auto-increment 会在新纪录插入表中时生成一个唯一的数字。
  18. 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)

  19. 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'
    不同数据库的查询结果的范围不一致,最好是验证后使用
  20. 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')

  21. SQL COUNT DISTINCT 函数

    可以一同使用 DISTINCT 和 COUNT 关键词,来计算非重复结果的数目。

    SELECT COUNT(DISTINCT column(s)) FROM table

  22. COUNT() 函数返回匹配指定条件的行数。
  23. COUNT(*) 函数返回表中的记录数。
  24. 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

  25. FIRST() 函数返回指定的字段中第一个记录的值。
    SELECT FIRST(column_name) FROM table_name

  26. 一个表中的 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

  27. FORMAT 函数用于对字段的显示进行格式化。

    SQL FORMAT() 语法

    SELECT FORMAT(column_name,format) FROM table_name

  28. 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)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值