扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
操作步骤如下:
为德宏州等地区用户提供了全套网页设计制作服务,及德宏州网站建设行业解决方案。主营业务为成都做网站、网站制作、成都外贸网站建设、德宏州网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
1、打开任务管理器、-、启动、MySQL、服务(右键、开始(S)、即可),
2、打开下载好的连接工具、Navicat、选择要连接的数据库(MySQL、、、)
3、弹出、MySQL、-、新建连接、窗口,
4、完成以上步骤之后,点击、测试连接,
5、出现、连接成功、,完成啦,
mysql
with
as
用法如下:
WITH
AS短语,也叫做子查询部分(subquery
factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION
ALL的不同部分,作为提供数据的部分。
特别对于UNION
ALL比较有用。因为UNION
ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH
AS短语,则只要执行一遍即可。如果WITH
AS短语所定义的表名被调用两次以上,则优化器会自动将WITH
AS短语所获取的数据放入一个TEMP表里,如果只是被调用一次,则不会。而提示materialize则是强制将WITH
AS短语里的数据放入一个全局临时表里。很多查询通过这种方法都可以提高速度。
二.使用方法
先看下面一个嵌套的查询语句:
复制代码
代码如下:
select
*
from
person.StateProvince
where
CountryRegionCode
in
(select
CountryRegionCode
from
person.CountryRegion
where
Name
like
'C%')
上面的查询语句使用了一个子查询。虽然这条SQL语句并不复杂,但如果嵌套的层次过多,会使SQL语句非常难以阅读和维护。因此,也可以使用表变量的方式来解决这个问题,SQL语句如下:
复制代码
代码如下:
declare
@t
table(CountryRegionCode
nvarchar(3))
insert
into
@t(CountryRegionCode)
(select
CountryRegionCode
from
person.CountryRegion
where
Name
like
'C%')
select
*
from
person.StateProvince
where
CountryRegionCode
in
(select
*
from
@t)
虽然上面的SQL语句要比第一种方式更复杂,但却将子查询放在了表变量@t中,这样做将使SQL语句更容易维护,但又会带来另一个问题,就是性能的损失。由于表变量实际上使用了临时表,从而增加了额外的I/O开销,因此,表变量的方式并不太适合数据量大且频繁查询的情况。为此,在SQL
Server
2005中提供了另外一种解决方案,这就是公用表表达式(CTE),使用CTE,可以使SQL语句的可维护性,同时,CTE要比表变量的效率高得多。
下面是CTE的语法:
复制代码
代码如下:
[
WITH
common_table_expression
[
,n
]
]
common_table_expression::=
expression_name
[
(
column_name
[
,n
]
)
]
AS
(
CTE_query_definition
)
现在使用CTE来解决上面的问题,SQL语句如下:
复制代码
代码如下:
with
cr
as
(
select
CountryRegionCode
from
person.CountryRegion
where
Name
like
'C%'
)
select
*
from
person.StateProvince
where
CountryRegionCode
in
(select
*
from
cr)
其中cr是一个公用表表达式,该表达式在使用上与表变量类似,只是SQL
Server
2005在处理公用表表达式的方式上有所不同。
MySQL中"as quarter" 通常是为列、表或中间过渡查询起一个别名。
例如:
select a.sid,a.sname as 姓名,sum(b.score) as 总分 from
students as a,scores as b where a.sid=b.sid group by b.sid;
说明:上述语句中“a”和“b”分别是数据表students和scores的表别名,“姓名”和“总分”分别是为学生表的“sname”列和成绩表的分数合计列“sum(b.score)”起的别名。
另外在MySQL SQL语言中关键字"as"是可以省略的,下列写法与上面的写法等效:
select a.sid,a.sname 姓名,sum(b.score) as 总分 from
students a,scores b where a.sid=b.sid group by b.sid;
SQL语言中使用别名可起到减少SQL语句字符数、为列指定一个不同的名称、规避歧义和提高语句可读性等作用。
Where查询条件,on内外连接时候用,as作为别名,in查询某值是否在某条件里
比如:
1、selec name as “姓名” ,sex as "性别" from user
2、select u.name as “姓名”,o.name as "英文名" ,u.sex as "性别" from user u ,other o where u.id = o.id;
as不是给表里的字段取别名,而是给查询的结果字段取别名。
其目的是让查询的结果展现更符合人们观看习惯,在多张表查询的时候可以直接的区别多张表的同名的字段。
扩展资料:
SQL别名:
SQL别名用于为表或表中的列 提供临时名称。
SQL别名通常用于使表名或列名更具可读性。
SQL一个别名只存在于查询期间。
别名使用AS关键字赋予。
在下列情况下使用别名:
1,查询涉及多个表
2,用于查询函数
3,需要把两个或更多的列放在一起
4,列名长或可读性差
语法
1、表名的别名语法:
SELECT 列名
FROM 表名 AS 别名;
2、列名的别名语法:
SELECT 列名 AS 别名
FROM 表名
3、表名和列名的别名混合使用语法:
SELECT 列名 AS 别名
FROM 表名 AS 别名
语法举例
1、使用表名称别名
有两个表分别是:"Persons" 和 "Product_Orders"。分别为它们指定别名 "p" 和 "po"。列出 "John Adams" 的所有定单。
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John';
2、使用列名称别名
查询 Persons 表中的 LastName 列 (为其定义别名 '姓氏')和 FirstName 列(为其定义别名 ‘名字’),输出所有结果值。
SELECT LastName AS 姓氏, FirstName AS 名字
FROM Persons
为了使用简单,我做了一个简单的包装类(包含一个数据结构):
package com.easily.ds
{
public class DataBaseData
{
public var host:String;
public var port:int;
public var username:String;
public var password:String;
public var database:String;
}
}
package com.easily.util
{
import com.easily.ds.DataBaseData;
import com.maclema.mysql.Connection;
import com.maclema.mysql.Field;
import com.maclema.mysql.MySqlResponse;
import com.maclema.mysql.MySqlToken;
import com.maclema.mysql.ResultSet;
import com.maclema.mysql.Statement;
import flash.events.Event;
import flash.events.EventDispatcher;
import mx.rpc.AsyncResponder;
/**
* @author Easily
*/
public class DataBase extends EventDispatcher
{
private var mDataBase:DataBaseData;
private var mConnection:Connection;
public function DataBase(database:DataBaseData)
{
mDataBase = database;
}
public function connect():void
{
mConnection = new Connection(mDataBase.host, mDataBase.port,
mDataBase.username, mDataBase.password, mDataBase.database);
mConnection.addEventListener(Event.CONNECT, onConnected);
mConnection.connect();
function onConnected(event:Event):void
{
mConnection.removeEventListener(Event.CONNECT, onConnected);
dispatchEvent(event);
}
}
public function disconnect():void
{
mConnection.disconnect();
}
public function select(sql:String, completeHandler:Function, errorHandler:Function = null):void
{
var st:Statement = mConnection.createStatement();
var token:MySqlToken = st.executeQuery(sql);
var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);
token.addResponder(responder);
function resultHandler(result:Object/*ResultSet*/, token:Object/*MySqlToken*/):void
{
var data:Array = [];
if (result is ResultSet)
{
var fieldList:Array = result.getColumns();
while (result.next())
{
var item:Object = {};
for each (var field:Field in fieldList)
{
item[field.getName()] = result.getString(field.getName());
}
data.push(item);
}
}
completeHandler(data);
}
function faultHandler(info:Object, token:Object):void
{
if (errorHandler == null) return;
errorHandler();
}
}
public function insert(sql:String, completeHandler:Function, errorHandler:Function = null):void
{
var st:Statement = mConnection.createStatement();
var token:MySqlToken = st.executeQuery(sql);
var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);
token.addResponder(responder);
function resultHandler(result:Object/*MySqlResponse*/, token:Object/*MySqlToken*/):void
{
completeHandler(result.insertID);
}
function faultHandler(info:Object, token:Object):void
{
if (errorHandler == null) return;
errorHandler();
}
}
public function remove(sql:String, completeHandler:Function, errorHandler:Function = null):void
{
var st:Statement = mConnection.createStatement();
var token:MySqlToken = st.executeQuery(sql);
var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);
token.addResponder(responder);
function resultHandler(result:Object/*MySqlResponse*/, token:Object/*MySqlToken*/):void
{
completeHandler();
}
function faultHandler(info:Object, token:Object):void
{
if (errorHandler == null) return;
errorHandler();
}
}
}
}
其中有3个方法,select,insert,remove,分别对应了SQL语句中的select,insert,delete
用法很简单,先连接:
var databaseData:DataBaseData = new DataBaseData();
databaseData.host = "127.0.0.1";
databaseData.database = "game";
databaseData.password = "123456";
databaseData.port = 3306;
databaseData.username = "root";
var dataBase:DataBase = new DataBase(databaseData);
dataBase.addEventListener(Event.CONNECT, onConnected);
dataBase.connect();
function onConnected(event:Event):void
{
dataBase.removeEventListener(Event.CONNECT, onConnected);
dispatchEvent(new Event(Event.COMPLETE));
}
如果不需要用了可以先断开连接:
dataBase.disconnect();
下面是select语句:
var sql:String = "select id,name from `npc`";
dataBase.select(sql, endQuery);
function endQuery(data:Array):void
{
var npcList:Array= [];
for each (var item:Object in data)
{
var npc:Object = {id:item.id, name:item.name};
npcList.push(npc);
}
}
insert语句用法会返回一个insertID,也就是插入的那条数据的ID。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流