搜索
首页数据库mysql教程mysql中SQL查询语句分类的示例详解
mysql中SQL查询语句分类的示例详解Sep 08, 2017 pm 01:44 PM
mysql分类示例

SQL查询语句有多种,下面总结下。首先先建三张表用于后面的实验

-- 学生表,记录学生信息
    CREATE TABLE student(
    sno VARCHAR(10),
    sname VARCHAR(10),
    ssex ENUM('男','女'),
    sage INT,
    sdept VARCHAR(10),
    PRIMARY KEY(sno)
);

+-----------+-------+------+------+-------+
| sno       | sname | ssex | sage | sdept |
+-----------+-------+------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215123 | 王敏  | 女   |   18 | MA    |
| 201215125 | 张立  | 男   |   19 | IS    |
+-----------+-------+------+------+-------+

-- 课程表,记录课程信息,cpno是指当前记录的先行课程的cno
CREATE TABLE course(
    cno INT AUTO_INCREMENT,
    cname VARCHAR(10),
    cpno INT,
    ccredit INT NOT NULL,
    PRIMARY KEY(cno),
    FOREIGN KEY(cpno) REFERENCES course(cno)
);

+-----------+-------+------+------+-------+
| sno       | sname | ssex | sage | sdept |
+-----------+-------+------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215123 | 王敏  | 女   |   18 | MA    |
| 201215125 | 张立  | 男   |   19 | IS    |
+-----------+-------+------+------+-------+

-- 选课记录表,记录选课信息
CREATE TABLE sc (
    sno VARCHAR(10),
    cno INT,
    grade INT
);

+-----------+------+-------+
| sno       | cno  | grade |
+-----------+------+-------+
| 201215121 |    1 |    92 |
| 201215121 |    2 |    85 |
| 201215121 |    3 |    88 |
| 201215122 |    1 |    90 |
| 201215122 |    2 |    80 |
+-----------+------+-------+

1.单表查询

仅涉及一张表的查询语句称为单表查询语句,举个栗子。

SELECT * FROM student;
SELECT  FROM student WHERE sage>=20;

这些语句仅涉及了一张表,所以是单表查询语句。

2.多表查询

与单标查询对应,涉及多个表的查询为多表查询,其中又分为连接查询、嵌套查询、 派生表查询、集合查询。

2.1连接查询

连接查询是数据库查询中最常用的一种查询语句,是指通过连接字段连接条件连接多个表从而进行查询,连接查询又分为小类:等值连接、非等值连接 、自然连接、外连接、内连接、自身连接。

等值连接与非等值连接

当连接条件是等于号(=)时的连接称之为等值连接,相反,当连接条件不是等于号就是非等值连接。

-- 查询每个学生的选修课情况,连接条件是等于,连接字段是sno
SELECT * FROM student,sc WHERE student.sno = sc.sno;

+-----------+-------+------+------+-------+-----------+------+-------+
| sno       | sname | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    2 |    80 |
+-----------+-------+------+------+-------+-----------+------+-------+

该连接操作的过程是,首先拿出student表中的第一条记录,然后根据连接条件和连接字段,与 sc表中的所有记录进行匹配,合适接连接起来形成结果表中的一个元组。然后再拿student表的 第二条记录与sc表进行匹配,第三条记录...,如此反复直到取完。这一匹配算法称为嵌套循环连接算法

内连接

内连接就是等值连接或者非等值连接的另一种写法,写法有INNER JOIN ON或者CORSS JOIN USING两种

-- 使用内连接查询每个学生的选修课情况,查询结果和使用上面的等值连接一样。
-- 在MySQL中,INNER可省略,CROSS JOIN= INNER JOIN = INNER
SELECT * FROM student INNER JOIN sc ON student.sno=sc.sno;
SELECT * FROM student JOIN sc ON student.sno=sc.sno;
SELECT * FROM student CROSS JOIN sc USING(sno);
+-----------+-------+------+------+-------+-----------+------+-------+
| sno       | sname | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    2 |    80 |
+-----------+-------+------+------+-------+-----------+------+-------+

外连接(左外连接、右外连接、全外连接)

外连接的存在可以弥补内连接仅匹配符合条件的元组的缺陷,也就是说,内连接仅能查询出两个表中符合连接条件的元组 ,而外连接可以在某种程度上弥补这种缺陷。外连接分为左外连接(以JOIN关键字左边的表为基准,没有匹配的记录则置NULL),右外连接(以JOIN关键字右边的表为基准) ,全外连接(以JOIN关键字左右两边的表为基准)。其中MySQL不支持全外连接,但是可以用集合查询做到,即将左外连接的查询结果和右外连接的查询结果做UNION ALL操作。

-- 左外连接,以左边的表student为基准。
在MySQL中,OUTER关键字在MySQL中可省略 LEFT JOIN=LEFT OUTER JOIN,RIGHT JOIN=RIGHT OUTER JOIN
SELECT * FROM student LEFT OUTER JOIN sc ON student.sno=sc.sno;
SELECT * FROM student LEFT JOIN sc ON student.sno=sc.sno;
+-----------+-------+------+------+-------+-----------+------+-------+
| sno       | sname | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    2 |    80 |
| 201215123 | 王敏  | 女   |   18 | MA    | NULL      | NULL |  NULL |
| 201215125 | 张立  | 男   |   19 | IS    | NULL      | NULL |  NULL |
+-----------+-------+------+------+-------+-----------+------+-------+

-- 右外连接,注意sc和student换了位置
SELECT * FROM sc RIGHT OUTER JOIN student ON student.sno=sc.sno;
+-----------+------+-------+-----------+-------+------+------+-------+
| sno       | cno  | grade | sno       | sname | ssex | sage | sdept |
+-----------+------+-------+-----------+-------+------+------+-------+
| 201215121 |    1 |    92 | 201215121 | 李勇  | 男   |   20 | CS    |
| 201215121 |    2 |    85 | 201215121 | 李勇  | 男   |   20 | CS    |
| 201215121 |    3 |    88 | 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 |    1 |    90 | 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215122 |    2 |    80 | 201215122 | 刘晨  | 女   |   19 | CS    |
| NULL      | NULL |  NULL | 201215123 | 王敏  | 女   |   18 | MA    |
| NULL      | NULL |  NULL | 201215125 | 张立  | 男   |   19 | IS    |
+-----------+------+-------+-----------+-------+------+------+-------+
-- 全外连接
SELECT * FROM sc FULL JOIN student ON student.sno=sc.sno;
ERROR 1054 (42S22): Unknown column 'sc.sno' in 'on clause'

-- 注意是UNION ALL,而非UNION,UNION有个去重效果
SELECT * FROM student LEFT OUTER JOIN sc ON student.sno=sc.sno
UNION ALL
SELECT * FROM student RIGHT OUTER JOIN sc ON student.sno=sc.sno;
+-----------+-------+------+------+-------+-----------+------+-------+
| sno       | sname | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    2 |    80 |
| 201215123 | 王敏  | 女   |   18 | MA    | NULL      | NULL |  NULL |
| 201215125 | 张立  | 男   |   19 | IS    | NULL      | NULL |  NULL |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    2 |    80 |
+-----------+-------+------+------+-------+-----------+------+-------+

自然连接(全自然连接、左自然连接、右自然连接)

在等值连接中去除相同的属性即为自然连接或称全自然连接左自然连接以左表为基准匹配, 右自然连接以右表为基准匹配

-- 查询每个学生的选修课情况,自然连接,去除相同的属性sno
SELECT student.sno,student.sname,student.ssex,student.sage,student.sdept,sc.cno,sc.grade
FROM student,sc WHERE student.sno = sc.sno;
SELECT * FROM student NATURAL JOIN sc;
+-----------+-------+------+------+-------+------+-------+
| sno       | sname | ssex | sage | sdept | cno  | grade |
+-----------+-------+------+------+-------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    |    2 |    80 |
+-----------+-------+------+------+-------+------+-------+

SELECT * FROM student NATURAL LEFT JOIN sc;
+-----------+-------+------+------+-------+------+-------+
| sno       | sname | ssex | sage | sdept | cno  | grade |
+-----------+-------+------+------+-------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    |    2 |    80 |
| 201215123 | 王敏  | 女   |   18 | MA    | NULL |  NULL |
| 201215125 | 张立  | 男   |   19 | IS    | NULL |  NULL |
+-----------+-------+------+------+-------+------+-------+

-- sc和student位置交换了,仍已student为基准,以为王敏、张立没有选课,所以有NULL字段
SELECT * FROM sc NATURAL RIGHT JOIN student;
+-----------+-------+------+------+-------+------+-------+
| sno       | sname | ssex | sage | sdept | cno  | grade |
+-----------+-------+------+------+-------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    |    2 |    80 |
| 201215123 | 王敏  | 女   |   18 | MA    | NULL |  NULL |
| 201215125 | 张立  | 男   |   19 | IS    | NULL |  NULL |
+-----------+-------+------+------+-------+------+-------+

自身连接

顾名思义,自身连接就是一张表,自己和自己连接。

-- '数据库'的先修课信息,连接条件是course1.cno = course2.cpno
SELECT * FROM course AS course1,course AS course2
WHERE course1.cno = course2.cpno
AND course1.cno = 4
+-----+--------+------+---------+-----+--------+------+---------+
| cno | cname  | cpno | ccredit | cno | cname  | cpno | ccredit |
+-----+--------+------+---------+-----+--------+------+---------+
|   4 | 数据库 |    2 |       4 |   7 | PASCAL |    4 |       4 |
+-----+--------+------+---------+-----+--------+------+---------+

2.2嵌套查询

首先引入一个查询块的概念,一个 SELECT...FROM...WHERE... 形式的SQL语句称为查询块。当一个查询块的SELECT子句或者WHERE子句中嵌套了另一个查询块的查询语句就称为嵌套查询。最外层的查询称为外层查询或父查询,最内层的查询称为内层查询或子查询。子查询用到了父查询的数据(表、字段)的情况称为相关子查询,相反,如果没用到就称为不相关子查询。 通常嵌套查询与IN、ALL、ANY、EXISTS配合使用。

-- 查询与刘晨在同一个系中的学生(先查出刘晨所在系,再查该系中的学生)
-- 内层查询可以独立运行没有依赖于外层,所以是不相关子查询
SELECT * FROM student WHERE sdept IN (
    SELECT sdept FROM student WHERE sname='刘晨'
)
+-----------+-------+------+------+-------+
| sno       | sname | ssex | sage | sdept |
+-----------+-------+------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
+-----------+-------+------+------+-------+

-- 查询选修了‘信息系统’的学生信息(先查出信息系统的课程号cno,再查处所有选课信息,再查出学生信息)
-- 同样,也是不相关子查询
SELECT * FROM student WHERE sno IN (
    SELECT sno FROM sc WHERE cno IN (
        SELECT cno FROM course WHERE cname='信息系统'
    ) 
)
+-----------+-------+------+------+-------+
| sno       | sname | ssex | sage | sdept |
+-----------+-------+------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |
+-----------+-------+------+------+-------+

-- 找出每个学生超过自己选修课平均成绩的选课信息(先查出平均成绩,再查出选课信息)
-- 内层查询无法独立运行,所以是相关子查询
SELECT * FROM sc AS x WHERE grade >= (
    SELECT AVG(grade) FROM sc AS y WHERE x.sno AND y.sno
)
+-----------+------+-------+
| sno       | cno  | grade |
+-----------+------+-------+
| 201215121 |    1 |    92 |
| 201215121 |    3 |    88 |
| 201215122 |    1 |    90 |
+-----------+------+-------+

2.3派生表查询

个人认为也是嵌套查询的一种,但用得比较广泛,就提出来了。当查询块出现在FROM子句后面时,就称为派生表查询。

-- 查询所有选修了cno=1的课程的学生信息
SELECT * FROM student,(
    SELECT sno FROM SC WHERE cno=1
) AS tempSC
WHERE student.sno = tempSC.sno
+-----------+-------+------+------+-------+-----------+
| sno       | sname | ssex | sage | sdept | sno       |
+-----------+-------+------+------+-------+-----------+
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |
+-----------+-------+------+------+-------+-----------+

2.4集合查询

涉及UNION、UNION ALL、INTERSECT、EXCEPT的查询操作就称为集合查询。其中,UNION和UNION ALL都会做 并集,但UNION会去除重复的记录。最后,MySQL不支持INTERSECT和EXCEPT。

--查询CS系及年龄不大于19岁的学生(CS系的学生与年龄不大于19岁的学生做并集)
SELECT * FROM student WHERE sdept='CS'
UNION ALL
SELECT * FROM student WHERE sage<=19
+-----------+-------+------+------+-------+
| sno       | sname | ssex | sage | sdept |
+-----------+-------+------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215123 | 王敏  | 女   |   18 | MA    |
| 201215125 | 张立  | 男   |   19 | IS    |
+-----------+-------+------+------+-------+

-- UNION去重
SELECT * FROM student WHERE sdept=&#39;CS&#39;
UNION
SELECT * FROM student WHERE sage<=19
+-----------+-------+------+------+-------+
| sno       | sname | ssex | sage | sdept |
+-----------+-------+------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215123 | 王敏  | 女   |   18 | MA    |
| 201215125 | 张立  | 男   |   19 | IS    |
+-----------+-------+------+------+-------+

-- 查询计算机系年龄不大于19岁的学,计算机系的学生与年龄不大于19岁的学生取交集,MySQL不支持INTERSECT操作
SELECT * FROM student WHERE sdept=&#39;cs&#39;
INTERSECT
SELECT * FROM student WHERE sage<=19
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near &#39;INTERSECT
SELECT * FROM student WHERE sage<=19&#39; at line 2

-- 用内连接代替
SELECT a.* FROM student AS a INNER JOIN student AS b ON a.sno=b.sno
WHERE a.sdept=&#39;CS&#39; AND b.sage<=19
+-----------+-------+------+------+-------+
| sno       | sname | ssex | sage | sdept |
+-----------+-------+------+------+-------+
| 201215122 | 刘晨  | 女   |   19 | CS    |
+-----------+-------+------+------+-------+


-- 查询计算机系中年龄大于19岁的学生,就是查询计算机系的学生与年龄不大于19岁的学生的差集,MySQL不支持EXCEPT操纵
SELECT * FROM student WHERE sdept=&#39;CS&#39; 
EXCEPT
SELECT * FROM student WHERE sage<=19
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near &#39;EXCEPT
SELECT * FROM student WHERE sage<=19&#39; at line 2

-- 用外连接或普通连接代替
SELECT a.* FROM student AS a LEFT JOIN student AS b ON a.sno=b.sno
WHERE a.sdept=&#39;CS&#39; 
AND b.sage>19
AND b.sno IS NOT NULL

SELECT * FROM student WHERE sdept=&#39;CS&#39; AND sage>19;

+-----------+-------+------+------+-------+
| sno       | sname | ssex | sage | sdept |
+-----------+-------+------+------+-------+
| 201215121 | 李勇  | 男   |   20 | CS    |
+-----------+-------+------+------+-------+

总结

以上是mysql中SQL查询语句分类的示例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境