mysql支持标准sql语句_MySQL 极速指南 1——标准 SQL 语句

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。DML 主要用于查询和更新;DDL 使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

查询和更新指令构成了 SQL 的 DML 部分:

SELECT – 从数据库表中获取数据

UPDATE – 更新数据库表中的数据

DELETE – 从数据库表中删除数据

INSERT INTO – 向数据库表中插入数据

DDL 语句:

CREATE DATABASE – 创建新数据库

CREATE TABLE – 创建新表

CREATE INDEX – 创建索引(搜索键)

ALTER DATABASE – 修改数据库

ALTER TABLE – 变更(改变)数据库表

DROP TABLE – 删除表

DROP INDEX – 删除索引

|ID|Lastname|Firstname|Address|City |

|–|

|01|Adams| John| Oxford Street| London

|02|Bush| George| Fifth Avenue| New York

|03|Carter| Thomas| Changan Street| Beijing

|04|Carter| William| Xuanwumen 10| Beijing

数据操作指令 DML

Select

distinct 返回不同的值

SELECT DISTINCT Firstname FROM Person #选中Firstname中的不同的值

Top子句,用来限制返回的数据条数,对于与表中数据行数很多的时候特别有用

SELECT TOP 2 * FROM Person #返回表中的前两行数据

SELECT TOP 30 PERCENT * FROM Person #返回表中前30%的数据行

select into 复制表

SELECT * INTO Persons_backup FROM Persons

SELECT * INTO Persons IN 'Backup.mdb' FROM Persons

WHERE

|操作符|描述|

|–|

|= |等于|

|<>或者!= |不等于

|> |大于

|< |小于

|>=| 大于等于

|<= |小于等于

|BETWEEN| 在某个范围内

|LIKE| 搜索某种模式

SELEECT * FROM Person WHERE City LIKE '%lon%' #City列里包含字符串lon的行

SELEECT * FROM Person WHERE City LIKE 'lon%' #City列里最前面是字符串lon的行

SELEECT * FROM Person WHERE City NOT LIKE 'lon%' #City列里没有字符串lon的行

通配符不止有%(通配一个或多个字符)还有_(一个字符),[charlist](在charlist字符列中的任一单字),[^charlist]或者[!charlist](不在字符列中的任一单字),参看正则表达式。

SELEECT * FROM Person WHERE City LIKE 'londo_' #City列里除最后一个字符以外是londo的行

SELEECT * FROM Person WHERE City LIKE '[lnb]%' #City列里以l或n或b开头的行

SELEECT * FROM Person WHERE City LIKE '[^lnb]%' #City列里不以l或n或b开头的行

WHERE…IN (,)操作符|筛选出WHERE指定的列中IN中含有的值

SELEECT * FROM Person WHERE City IN ('london','new york') #City列里的值为london或者new york的行

WHERE…BETWEEN value1 AND value2 操作符|筛选出WHERE指定的列中从value1(包含)到value2(不包含)的行

不同的数据库这种包含关系是不一样的,具体要看使用哪种数据库

SELEECT * FROM Person WHERE City BETWEEN london AND beijing #返回下表

|ID|Lastname|Firstname|Address|City |

|–|

|01|Adams| John| Oxford Street| London

|02|Bush| George| Fifth Avenue| New York

as

别名,select lastname as la from table_a

INSERT INTO…VALUES…

INSERT INTO Person (Lastname,Firstname) VALUES (value1,value2)

UPDATE…SET…

UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'

DELETE

DELETE FROM Person WHERE LastName = 'Wilson'

结构指令DDL:

CREATE DATABASE

CREATE TABLE

ALTER DATABASE

ALTER TABLE

ALTER TABLE 用于更改原有表的结构。例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表。您还可以更改表的评注和表的类型。您可以在一个ALTER TABLE语句里写入多个ADD, ALTER, DROP和CHANGE子句,中间用逗号分开。这是MySQL相对于标准SQL的扩展。在标准SQL中,每个ALTER TABLE语句中每个子句只允许使用一次。 要使用ALTER TABLE,您需要获得表的ALTER, INSERT和CREATE权限。

/*在表Persons中添加Birthday列,数据类型为int,date,str;改变Birthday列的数据类型为year*/

ALTER TABLE Persons ADD Birthday datatype(int,date,str),ALTER COLUMN Birthday year;

改变一个表的默认字符集:

ALTER TABLE tbl_name DEFAULT CHARACTER SET utf-8;

DROP TABLE

CREATE INDEX

DROP INDEX

join 链接

用于将两个表链接显示多个表的结果

现在有另外一个表Order:

Id_O

OrderNo

ID

1

77895

3

2

44678

3

3

22456

1

5

34764

65

ID是外键,链接了两个表。现找出谁订购了产品,订购了哪些产品

SELECT Person.Lastname,Person.Firstname,Order.OrderNO FROM Person,Order WHERE Person.ID=Order.ID

返回结果:

LastName| FirstName| OrderNo

—-|

Adams| John| 22456

Adams| John| 24562

Carter| Thomas |77895

Carter| Thomas| 44678

.JOIN: 如果表中有至少一个匹配,则返回行

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

上述返回还可以通过下面的JOIN表示法表示:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

INNER JOIN Orders(FULL JOIN Orders,LEFT JOIN Orders,RIGHT JOIN Orders)

ON Persons.ID = Orders.ID

ORDER BY Persons.LastName

union

返回多个表的值

SELECT E_Name FROM Employees_China

UNION

SELECT E_Name FROM Employees_USA

函数

group by

having 跟 group by 配套使用,代替 where 用法

ucase 大写

lcase 小写

mid 提取部分字符串

索引 (index)

索引是表中一列或多列数据和指向这些数据页的逻辑指针清单。创建索引时,将这些数据这些排序,用关联的指针直接定位要查找的值,从而提升了查询速度。 所以索引的创建是为数据库的执行速度和性能服务的,他具体的好处有:

加速数据的检索速度

创建唯一性索引能保证数据库表中每一行数据的唯一性

加速表之间的连接速度

加快分组和排序的速度

由于索引的创建要消耗物理空间,所以过多的索引会引出如下问题:

占据空间

反而会降低增删改查的速度,同时数据改变的时候,因为他要更新关联的索引,也会影响性能

CREATE INDEX PersonIndex #在person表的LastName,Fistname列创建索引,以Lastname降序排序

ON Person (Lastname DESC,Firstname)

DROP INDEX Person.PersonIndex #删除索引

视图(views)

视图就是一个虚拟的表,其内容由查询定义。对表能够进行的一般操作(增删改查)都可以应用于视图。 视图内其实没有存储任何数据,它只是对表的一个查询。

优点:

安全,提供了另外一种级别的表安全性

虚拟,隐藏的数据的复杂性

简化,简化的用户的SQL命令

重命名,通过重命名列,从另一个角度提供数据

CREATE VIEW [Current Product List] AS

SELECT ProductID,ProductName

FROM Products

WHERE Discontinued=No

存储过程(Stored Procedure)

是一组为了完成特定功能的SQL语句集,由流控制和SQL语句书写构成。

优点:

加快执行速度。存储过程只在创建时编译,而sql语句每次执行都要编译

可以重复使用

安全性高,可设定使用权。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值