MySQL和MSSQL的比较(七)--查询

MySQL和MSSQL的比较(七)--查询
比较异同,加深记忆。

这是一个MySQL和MSSQL对比学习经验(七)是相同的,相同的地方把稍有不同的地方,我举一个例子,谢谢你的支持(一_ O U)O

本节主要介绍mysql中的基本查询(mysql官方参考手册)

MySQL中选择的基本语法形式:

选择属性列表

从表名和视图列表

{条件表达式}

{按属性的名称{有条件表达式

{属性名{ } } ASC |降序顺序

{限制,行数}
解释uff1a

WHERE子句:根据条件表达式指定的条件进行查询。

按组子句:按属性名称指定的字段分组。

有子句:对有子句有一个组,只有当条件表达式中指定的条件满足时才可以输出。

按组子句通常与聚合函数一起使用,如计数()、和()等。

ORDERBY子句:排序的属性名称指定的字段,排序的方式是通过ASC和DESC两参数指出,和默认的是由ASC,这些排序,升序。

设置测试表

创建测试表
创建表的水果

f_id char(10)不为空,
s_id INT NOT NULL,
f_name char(255)不为空,
f_price十进制(8,2)不为空,
主键(f_id)

插入测试数据
插入水果(f_id,s_id,f_name,f_price)
值(步骤,101,'apple ',5.2),
('b1 ',102,'blackberry ',5.2),
('bs1 ',105,'orange ',5.2),
('bs2 ',103,'melon ',5.2),
('t1 ',106,'banana ',5.2);
使用select语句查询的f_id字段的数据

选择f_id,f_name水果

注意:MySQL中的SQL语句不区分大小写,因此select和select函数是相同的。

这是因为SQLServer相同!

常见的查询
从水果中选择*
选择f_id,水果,f_price > 5.1 f_name
选择f_id,水果,s_id在f_name(101102)
选择f_id,水果,s_id不f_name(101102)
选择f_id,水果在2和10之间f_name f_price
选择f_id,水果在2和10之间f_price不f_name
类字符匹配查询

1%,通配符%,与任意长度字符匹配,包括零字符。
选择f_id,f_name水果,f_name like'b % y

2、_可以匹配任何下划线通配符,每次一个字符

下面的语句有四个下划线
选择f_id,水果,f_name像'____nf_name

以同样的方式,也有一些在SQLServer
使用{ }

SELECT * FROM { } { }在AAA dbo。{名称} like's _____

查询空值
创建表的客户

c_id INT NOT NULL auto_increment,
c_name char(25)不为空,
c_city char(50)空,
主键(c_id)

插入客户(c_name,c_city)
值('liming ',中国'),
('hongfang,null)
选择*从哪里c_city是客户零

选择*从客户那里c_city不空

和,或者,关键字
选择f_id,水果,f_name像'____n'and f_id = 'bs2 f_name
选择f_id,水果,f_name像'____n'or f_id = 'bs2 f_name
选择不同的s_id水果


选择s_id,计数(1)总s_id水果组

再插入两条记录
插入水果(f_id,s_id,f_name,f_price)
值('a6 ',101,'cherry ',6),
('a8 ',102,'coconut ',7)
如果你想看到各供应商提供的水果品种名称,MySQL可以使用group_concat()组中的功能,

显示每个组中每个字段的值。
选择s_id,group_concat(f_name)的s_id水果组名称

SQLServer没有group_concat()函数,和SQLServer需要使用XML功能来达到相同的效果,而MySQL是做得很好

具有:过滤包

分组数据成果表的基础上s_id显示超过1的水果包信息
选择s_id,group_concat(f_name)的s_id具有水果的组名

利用组汇总
选择s_id,计数(1)总s_id水果组与汇总

最后一行被添加,7表示总列的所有值之和。

与ROLLUP关键字也在SQLServer,详细说明:,%,立方体的关键,汇总关键和SQLServer分组功能

注意:使用汇总时,你不能使用ORDER BY子句来同时,排序的结果是,汇总和秩序是相互排斥的!

限制限制查询结果的数量。

在SQLServer,顶部使用关键字,关键字和限制使用MySQL

限制{位置偏移},行数

第一个位置偏移参数表示,如果没有指定位置偏移,MySQL开始显示从哪个行是可选参数。

它将从表中的第一条记录开始(第一记录的位置偏移量为0,第二天记录的位置偏移量为1…等等)。

返回返回项数的第二个参数行数
从水果中选择*

SELECT * FROM水果限4,3

上述结果返回第五条记录行开头的3条记录(自0开始)。

注:在mysql5.6,你可以使用极限4偏移3,这意味着你得到3的记录从第五行记录,并限制4,3返回相同的结果。

在sqlserver2012,这个语法是由MySQL语法的支持,但这需要排序的列,不像MySQL,不需要一个列排序。
使用{ }


创建表的水果

f_id char(10)不为空,
s_id INT NOT NULL,
f_name char(255)不为空,
f_price十进制(8, 2)不为空,
主键(f_id)


插入水果
(f_id,
s_id,
f_name,
f_price

select'a1,
101,
苹果,
五点二
联盟的所有
select'b1,
102,
黑莓,
五点二
联盟的所有
select'bs1,
105,
橙,
五点二
联盟的所有
select'bs2,
103,
甜瓜,
五点二
联盟的所有
select't1,
106,
香蕉,
五点二
联盟的所有
select'a6,
101,
樱桃,

联盟的所有
select'a8,
102,
椰子,

首先,s_id排序,然后返回到3的记录始于第五线
*选择
从{ } { } DBO的水果。
{ }的s_id ASC秩序
偏移4行
只取下3行;

虽然没有MySQL那么方便,但也是一种进步,为抵消性能取下可以参考Yunjian的歌:

SQL Server2012 T-SQL寻呼增强尝试

子查询

子查询是从mysql4.1介绍。

插入测试数据
创建表的TBL1(num1 int不为空);
创建表tbl2(num2 INT NOT NULL)

插入TBL1值(1)、(4)、(13)、(27);
插入tbl2值(6)、(14)、(11)、(20)

任何关键字后面是比较运算符,表示如果值的任何值的子查询返回的是真的,则返回true。

返回所有的tbl2 num2列表,然后比较num1在TBL1值与任何值大于num2,这是满足查询条件的结果。
选择在num1 >任何TBL1 num1(选择num2从tbl2)

所有的关键字后面是比较运算符,表示所有的子查询返回的值进行比较,真的,然后回到真实
选择从哪里num1 >所有num1 TBL1(选择num2从tbl2)

任何和所有的键也可以用于SQLServer
使用{ }

创建表的TBL1(num1 int不为空)
创建表tbl2(num2 INT NOT NULL)

插入TBL1值(1)、(4)、(13)、(27)
插入tbl2值(6)、(14)、(11)、(20)

选择在num1 >任何TBL1 num1(选择num2从tbl2)
选择从哪里num1 >所有num1 TBL1(选择num2从tbl2)

结果是一样的。
合并查询

使用联合关键字,当结果合并时,两个查询的列和数据类型的数量必须相同。

每个SELECT语句由并集或联合所有关键字分隔。

联合:在执行时删除重复记录,所有返回的行都是唯一的。

联合所有:不要自动排序结果而不删除重复行
选择s_id,f_name,f_price
从水果
在f_price<9
联盟
选择s_id,f_name,f_price
从水果
在s_id在(101103)

第一个查询是查询一个小于9 f_price记录,和第二查询处理s_id 101和103。

因为一些记录在f_price小于9的记录s_id是102, 105,和106,这些结果将不会被删除,并将第二查询合并。

所以最终的结果将有s_id记录的102, 105,和106。

正则表达式查询

正则表达式是不是SQLServer,但不仅在MySQL,而且功能丰富

使用正则表达式关键字指定MySQL中的正则表达式的字符匹配模式

1,查询特定字符或字符串开头的记录。

匹配以特定字符或字符串开头的文本的文本。
选择*从水果里f_name regexp的^ B
返回B的f_name场纪录
2,在某个字符或字符串的结尾查询记录。

以特定字符或字符串结尾的文本。
选择*从水果里f_name regexp'y $
返回一个记录,结束在f_name场Y
三.使用符号替换字符串中的任何字符。

字符。匹配任何字符
SELECT * FROM水果,f_name regexp'a.g

A和G的两个字母包含一个字符,而橙色符合要求。

4。使用*和+匹配多个字符

星号与前一个字符匹配的次数最多,包括0次,至少一次字符加上匹配前的字符。
选择*从水果里f_name regexp的^巴*

黑莓和香蕉符合要求,B开始,任何一个匹配多次,无论订单出现在哪里。
选择*从水果里f_name regexp的^ BA +

+至少匹配字母A,只有香蕉满足匹配条件。

5。匹配指定字符串

正则表达式可以匹配指定的字符串,只要在查询文本字符串被如匹配多个字符串分隔符分隔|之间的多个字符串
选择*从水果里f_name regexp'on | AP

你可以看到苹果、甜瓜和椰子的3个价值观包括字符串和AP,以满足匹配条件。

6。匹配指定字符中的任何一个

括号指定字符集,只有一个字符,即要查找的文本。
选择*从水果里{ }f_name regexp OT

括号还可以指定值集。
选择*从水果里s_id regexp的{ 456 }

在s_id字段的值的3个数字1是匹配的记录字段

{ 456 }也可以作为指定的集合间隔写入。

7。与指定字符以外的字符匹配。

字符集,而不是指定集合中的任何{ }字符。
选择*从水果里f_id regexp的{ ^ a-e1-2 }

返回一个记录,是不是在一个AE 1-2封信的开头,如A1,B1,不符合要求。

8。使用{、}、或n和m }来指定连续字符串的数目。

字符串是{,},至少表示N时间之前的字符;字符串n和m表示匹配前的字符串不小于n次,不超过m次。
选择*从水果里f_name regexp'b { 1 }
至少有1个字母B、黑莓和香蕉都符合要求。
选择*从水果里f_name regexp'ba { }的1,3

BA字符串至少出现一次,最多三次,香蕉串符合要求。

总结

本节介绍了MySQL的查询与SQL Server进行比较,尤其是定期查询MySQL的灵活性

这比SQLServer的一点

如果有不对的地方,欢迎派专噢(一_ u)O

附上一个O(色情作者_ U)这是O.

tag:查询电脑软件mysqlMSSQL

相关内容