关于sql多表查询sql语句语句

> 问题详情
下列关于SQL查询说法中,不正确的是()。A.SQL查询是用户使用SQL语句创建的查询B.在查询设计视图中
悬赏:0&答案豆
发布时间:
下列关于SQL查询说法中,不正确的是()。A.SQL查询是用户使用SQL语句创建的查询B.在查询设计视图中创建查询时,Access将在后台构造等效的SQL语句C.SQL查询可以用结构化的查询语言来查询、更新和管理关系数据库D.SQL查询被更改之后,可以以设计视图中所显示的方式显示,也可以从设计网格中进行创建请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
您可能感兴趣的试题
1下面显示的是查询设计视图的设计网格部分,从下图所示的内容中,可以判断出要创建的查询是(&&)。A.追加查询B.删除查询C.生成表查询D.更新查询2查询最近30天的记录应使用(&&)作为准则。A.Between Date() And Date()-30B.Between Date()-30 And Date()C.<=Date()-30D.<Date()-303若要确保输入的出生日期值的格式必须为短日期,应将该字段的输入掩码设置为(&&)。A.B.C.D.4下列关于字段属性的默认值设置的说法中,错误的是(&&)。A.默认值类型必须与字段的数据类型相匹配B.在对默认值进行设置时,输入文本不需要加引号,系统会自动加上引号C.设置默认值后,用户只能使用默认值D.可以使用Access的表达式来定义默认值
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:> 问题详情
关于SQL查询,以下说法不正确的是()。A.SQL查询是用户使用SQL语句创建的查询B.在查询设计视图中创
悬赏:0&答案豆
发布时间:
关于SQL查询,以下说法不正确的是()。A.SQL查询是用户使用SQL语句创建的查询B.在查询设计视图中创建查询时,Access将在后台构造等效的SQL语句C.SQL查询可以用结构化的查询语言来查询、更新和管理关系数据库D.SQL查询更改之后,可以以设计视图中所显示的方式显示,也可以从设计网格中进行创建
为您推荐的考试题库
您可能感兴趣的试题
1将表A的记录添加到表B中,要求保持表B中原有的记录,可以使用的查询是(&&)。A.选择查询B.生成表查询C.追加查询D.更新查询2若要查询成绩为85~100分(包括85分,不包括100分)的学生的信息,查询准则设置正确的是(&&)。A.>84 or<100B.Between 85 with 100C.IN(85,100)D.>=85 and<1003若要确保输入的出生日期值格式必须为短日期,应将该字段的输入掩码设置为(&&)。A.B.C.D.4定义字段默认值的含义是(&&)。A.不得使该字段为空B.不允许字段的值超出某个范围C.在未输入数据之前系统自动提供的数值D.系统自动把小写字母转换为大写字母
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:在SQL语言中,LIKE语句有时候有着强大的作用。LIKE语句的语法格式为:select * from 表名 where 字段名 like 对应值(字符串);注:主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应字符串的。下面列举常用的几种标识含义;A:% 表示零个或多个字符的任意字符串:
1. LIKE'Mi%' 将搜索以字母 Mi开头的所有字符串(如 Michael)。
2. LIKE'%er' 将搜索以字母 er 结尾的所有字符串(如 Worker、Reader)。
3. LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 When、Green)。B:_(下划线)表示任何单个字符:
1. LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。C:[ ] 表示指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符: LIKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。LIKE'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。D:[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符:
1. LIKE'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。E:* 它同于DOS命令中的通配符,代表多个字符:
1. c*c代表cc,cBc,cbc,cabdfec等多个字符。F:?同于DOS命令中的?通配符,代表单个字符 :
1. b?b代表brb,bFb等。G:# 大致同上,不同的是代只能代表单个数字。
1. k#k代表k1k,k8k,k0k 。F:[!] 排除 它只代表单个字符。下面举例说明:例1,查询name字段中包含有“明”字的。select * from table1 where name like '%明%'例2,查询name字段中以“李”字开头。select * from table1 where name like '李*'例3,查询name字段中含有数字的。select * from table1 where name like '%[0-9]%'例4,查询name字段中含有小写字母的。select * from table1 where name like '%[a-z]%'例5,查询name字段中不含有数字的。select * from table1 where name like '%[!0-9]%'以上例子能列出什么值来显而易见。但在这里,我们着重要说明的是通配符“*”与“%”的区别。很多朋友会问,为什么我在以上查询时有个别的表示所有字符的时候用"%"而不用“*”?先看看下面的例子能分别出现什么结果:select * from table1 where name like '*明*'select * from table1 where name like '%明%'大家会看到,前一条语句列出来的是所有的记录,而后一条记录列出来的是name字段中含有“明”的记录,所以说,当我们作字符型字段包含一个子串的查询时最好采用“%”而不用“*”,用“*”的时候只在开头或者只在结尾时,而不能两端全由“*”代替任意字符的情况下。
sql语句的各种模糊查询语句
一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件其中关于条件,SQL提供了四种匹配模式:1、%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是...
sql语句的各种模糊查询
转载:http://www.cnblogs.com/to-creat/p/6515256.html
SQL模糊查询,使用like比较关键字,加上SQL里的通配符,请参考以下:
sql语句的各种模糊查询
一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件其中关于条件,SQL提供了四种匹配模式:1、%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是...
SQL 模糊查询
查询名字中包含“小明”
select * from PE_User where name Like '%小明%'
询名字中以“小明”开头的
select * from PE_User ...
实现多条件模糊查询SQL语句
很多网友问到如何写模糊查询语句和多条件查询,这里我整理了一下,假设以姓名、性别、电话号...作为数据库中的字段名。 通常写一个简单的模糊查询的SQL语句格式可以如下例:
sql语句模糊查询like的用法
在SQL结构化查询语言中,LIKE语句有着至关重要的作用。
  LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它...
Mybatis 模糊查询和动态sql语句
Mybatis 模糊查询和动态sql语句模糊查询
对数据库最常用的操作就是查询了,但是如何使用Mybatis进行模糊查询呢?下面先看一个简单的模糊查询
SQL 模糊查询条件的四种匹配模式
执行数据库查询时,有完整查询和模糊查询之分。
一般模糊语句格式如下:
SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件;
其中,关于条件,SQL提供了...
SQL 模糊查询
在进行数据库查询时,有完整查询和模糊查询之分。
一般模糊查询语句如下:
SELECT 字段 FROM 表 WHERE 某字段 Like 条件
没有更多推荐了,Hibernate对原生SQL查询的支持和控制是通过SQLQuery接口实现的。通过Session接口,我们能够很方便的创建一个SQLQuery(SQLQuery是一个接口,在Hibernate4.2.2之前,默认返回的是SQLQuery的实现类——SQLQueryImpl对象,在下文中出现的SQLQuery如非注明,都是指该子类)对象来进行原生SQL查询:
SQLQuery实现了Query接口,因此你可以使用Query接口中提供的API来获取数据。
最简单的示例
使用预处理SQL
预处理SQL的好处自然不必多说,除了众所周知的能够防止SQL注入攻击外,还能够在一定程度上提高SQL的查询效率。SQLQuery提供了众多的接口来分别设置不同类型的参数,诸如setBigDecimal、setBinary、setDouble等,详参SQLQuery的JavaDoc,此处不再赘述。这里仅重点说一下通用的SQL参数设置接口setParameter。
如下代码示范了如何使用SQLQuery执行预处理SQL:
SQLQuery query = session.createSQLQuery("select * from note where id = ?");
这里需要注明一点,&无论是通过不同类型参数的设置接口来设置SQL参数,还是通过setParameter来设置参数,下标都是从0开始的,而不是从1开始的&!
使用自定义的结果转换器处理查询结果
SQLQuery接口预留了setResultTransformer接口以实现使用用户自定义的ResultTransformer结果集转换器处理查询结果。ResultTransformer接口非常简单,只有两个方法,分别用来转换单行数据和所有结果数据。经过自定义ResultTransformer生成的实体,并未加入Session,因此是非受管实体。
如下代码,示范了如何将单行数据装入LinkedHashMap对象中:
query.setResultTransformer(new ResultTransformer() {
public Object transformTuple(Object[] values, String[] columns) {
Map&String, Object& map = new LinkedHashMap&String, Object&(1);
int i = 0;
for(String column : columns){
map.put(column, values[i++]);
public List transformList(List list) {
如果不设置自定义的ResultTransformer转换器,则Hibernate将每行返回结果的数据按照结果列的顺序装入Object数组中。
这里介绍一个工具类:&Transformers&,它提供了一些常用的转换器,能够帮助我们快速转换结果集,如&Transformers.aliasToBean(Note.class)&能够将查询结果依别名注入到Note实体中。
使用SQLQuery执行原生SQL时,Hibernate会使用ResultSetMetadata来判定返回的标量值的实际顺序和类型。如果要避免过多的使用ResultSetMetadata,或者只是为了更加明确的指名返回值,可以使用addScalar()。
session.createSQLQuery("select * from note where id = 1")
.addScalar("id", LongType.INSTANCE)
.addScalar("name", StringType.INSTANCE)
.addScalar("createtime", DateType.INSTANCE);
这个查询指定了SQL查询字符串,要返回的字段和类型.它仍然会返回Object数组,但是此时不再使用ResultSetMetdata,而是明确的将id,name和createtime按照Long, String和Date类型从resultset中取出。同时,也指明了就算query是使用*来查询的,可能获得超过列出的这三个字段,也仅仅会返回这三个字段。
对全部或者部分的标量值不设置类型信息也是可以的:
session.createSQLQuery("select * from note where id = 1")
.addScalar("id")
.addScalar("name")
.addScalar("createtime", DateType.INSTANCE);
没有被指定类型的字段将仍然使用ResultSetMetdata获取其类型。&注意&,字段不区分大小写,同时不能够指定不存在的字段&!
关于从ResultSetMetaData返回的java.sql.Types是如何映射到Hibernate类型,是由方言(Dialect)控制的。假若某个指定的类型没有被映射,或者不是你所预期的类型,你可以通过Dialet的registerHibernateType调用自行定义。
如果仅指定了一个scalar,那么...
Date createTime = (Date)session.createSQLQuery("select * from note where id = 1")
.addScalar("createtime", DateType.INSTANCE)
.uniqueResult();
如果我们的SQL语句使用了聚合函数,如count、max、min、avg等,且返回结果仅一个字段,那么Hibernate提供的这种提取标量结果的方式就非常便捷了。
上面的查询都是返回标量值的,也就是从resultset中返回的“裸”数据。下面展示如何通过addEntity()让原生查询返回实体对象。
session.createSQLQuery("select * from note where id = 1").addEntity(Note.class);
session.createSQLQuery("select id,name,createtime from note where id = 1").addEntity(Note.class);
这个查询指定SQL查询字符串,要返回的实体。假设Note被映射为拥有id,name和createtime三个字段的类,以上的两个查询都返回一个List,每个元素都是一个Note实体。
假若实体在映射时有一个many-to-one的关联指向另外一个实体,在查询时必须也返回那个实体,否则会导致发生一个"column not found"的数据库错误。这些附加的字段可以使用*标注来自动返回,但我们希望还是明确指明,看下面这个具有指向Dog的many-to-one的例子:
session.createSQLQuery("select id,note,createtime,author from note where id = ?").addEntity(Note.class);
author字段即为Note实体和Author实体的关联字段,只需在查询时得到该字段的值,Hibernate即可使用该值找到对应的关联实体。如上例中,note.getAuthor()即可返回当前Note所属的Author对象。
处理关联和集合类
通过提前抓取将Author连接获得,而避免初始化proxy带来的额外开销也是可能的。这是通过addJoin()方法进行的,这个方法可以让你将关联或集合连接进来。
上面的例子是多对一的关联查询,反过来做一对多的关联查询也是可以的。如下的例子中,author.notes表示该用户发表的所有日记(Note),Set集合类型:&
session.createSQLQuery("select {author.*},{note.*} from note note, user author where author.id = ? and note.author = author.id")
.addEntity("author", User.class)
.addJoin("note", "author.notes");
注意&:&join查询会在每行返回多个实体对象,处理时需要注意&。
别名和属性引用
假若SQL查询连接了多个表,同一个字段名可能在多个表中出现多次,这会导致SQL错误。不过在我们可以通过使用占位符来完美地解决这一问题。
其实在上例中已经用到了占位符:
这个查询指明SQL查询语句,其中包含占位附来让Hibernate注入字段别名,查询并返回的实体。
上面使用的{note.*}和{author.*}标记是作为“所有属性”的简写形式出现的,当然你也可以明确地罗列出字段名。但如下的范例代码中我们让Hibernate来为每个属性注入SQL字段别名,字段别名的占位符是表别名 + . + 属性名。
注意&:&属性名区分大小写,而且不能够在where子句中使用占位符&。
SQLQuery query = session.createSQLQuery("select note.id as {note.id},note as {note.note},createtime as {note.createTime},author as {note.author}, {author.*} from note, user author where note.id = ? and note.author = author.id");
query.addEntity("note", Note.class);
query.addJoin("author", "note.author");
大多数情况下,上面的别名注入方式可以满足需要,但在使用更加复杂的映射,比如复合属性、通过标识符构造继承树,以及集合类等等情况下,则需要更加复杂的别名注入方式。
下表列出了使用别名注射参数的不同方式:
&别名注入(alias injection names) 描述
&{[aliasname].[propertyname]
&A_NAME as {item.name}
&{[aliasname].[componentname].[propertyname]}
&CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}
&实体辨别器
&{[aliasname].class}
&DISC as {item.class}
&实体的所有属性
&{[aliasname].*}
&集合键(collection key)
&{[aliasname].key}
&ORGID as {coll.key}
&{[aliasname].id}
&EMPID as {coll.id}
&{[aliasname].element}
&XID as {coll.element}
&集合元素的属性
&{[aliasname].element.[propertyname]}
&NAME as {coll.element.name}
&集合元素的所有属性
&{[aliasname].element.*}
&{coll.element.*}
&集合的所有属性
&{[aliasname].*}
在hbm文件中描述结果集映射信息,并在查询中使用
对于一些复杂的结果集映射,往往需要像MyBatis那样在文件中手动配置好,然后在程序中使用。幸运的是Hibernate也提供了类似的功能,你可以使用自己配置的结果集映射来处理返回的结果集数据:
SQLQuery query = session.createSQLQuery("select note.id as {note.id},note as {note.note},createtime as {note.createTime},author as {note.author}, {author.*} from note, user author where note.id = ? and note.author = author.id");
//使用在hbm文件中配置的自定义结果集映射
query.setResultSetMapping("noteAnduthor");
query.list();
执行更新操作
使用SQLQuery执行数据库更新操作比较容易,除了像查询时那样需要指定SQL语句(如有需要还需设置SQL参数)外,仅需调用executeUpdate()方法,即可提交更新操作。代码如下所示:
executeUpdate方法的返回结果为改变的数据库记录的行数。
阅读(...) 评论()结构化查询语言_百度百科
清除历史记录关闭
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
结构化查询语言
结构化查询语言(Structured Query Language)简称SQL(发音:/'es kju: 'el/ &S-Q-L&),是一种特殊目的的编程语言,是一种数据库查询和,用于存取数据以及查询、更新和管理;同时也是的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。
结构化查询语言语言简介
结构化查询语言应用
结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的操作语言,并且它的影响已经超出领域,得到其他领域的重视和采用,如领域的数据检索,第四代软件开发工具中嵌入SQL的语言等。
结构化查询语言支持标准
SQL 是1986年10 月由()通过的语言美国标准,接着,国际标准化组织()颁布了SQL正式国际标准。1989年4月,ISO提出了具有完整性特征的SQL89标准,1992年11月又公布了标准,在此标准中,把分为三个级别:基本集、标准集和完全集。
结构化查询语言其他版本
各种不同的对语言的支持与标准存在着细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。已有100多种遍布在从微机到大型机上的数据库产品SQL,其中包括、SQL/DS、、、、、DBASEⅣ、、MICROSOFTACCESS等。
SQL语言基本上独立于本身、使用的机器、网络、操作系统,基于SQL的产品可以运行在从个人机、工作站到基于、小型机和大型机的各种计算机系统上,具有良好的可移植性。可以看出标准化的工作是很有意义的。早在1987年就有些有识之士预测SQL的标准化是“一场革命”,是“关系数据库管理系统的转折点”。数据库和各种产品都使用SQL作为共同的数据存取语言和标准的接口,使不同数据库系统之间的互操作有了共同的基础,进而实现异构机、各种操作环境的共享与移植。
1974年,在公司圣约瑟研究实验室研制的大型关系数据库管理系统SYSTEM R 中,使用SEQUEL语言(由BOYCE 和CHAMBERLIN 提出),后来在SEQUEL 的基础上发展了SQL 语言。 SQL语言是一种交互式查询语言,允许用户直接查询存储数据,但它不是完整的程序语言,如它没有DO或FOR 类似的循环语句,但它可以嵌入到另一种语言中,也可以借用、C、等语言,通过调用级接口(CALL LEVEL INTERFACE)直接发送到数据库管理系统。SQL基本上是域关系演算,但可以实现关系代数操作。
结构化查询语言语句结构
结构化查询语言包含6个部分:
一:查询语言(:Data Query Language):
其语句,也称为“数据检索”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
二:(DML:Data Manipulation Language):
其语句包括动词,和。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
三:事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
四:(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对的访问。某些RDBMS可用GRANT或REVOKE控制对个列的访问。
五:数据定义语言():
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人中获得数据有关的保留字。它也是动作查询的一部分。
六:指针控制语言(CCL):
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
结构化查询语言发展历史
在1970年代初,由公司San Jose,California研究实验室的发表将数据组成表格的应用原则(Codd's Relational Algebra)。1974年,同一实验室的D.D.Chamberlin和R.F. Boyce对Codd's Relational Algebra在研制关系数据库管理系统System R中,研制出一套规范语言-SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL。
1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS数据库系统中也实现了SQL。
1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。
1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89,该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳:
国际标准化组织(ISO),为ISO 报告“Database Language SQL With Integrity Enhancement”
美国联邦政府,发布在The Federal Information Processing Standard Publication(FIPS PUB)127
目前(21世纪初期)主要的关系数据库管理系统支持某些形式的SQL,大部分数据库打算遵守ANSI SQL89标准。
结构化查询语言数据类型
简要描述一下结构化查询语言中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型。
结构化查询语言字符型
VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于255的字符。
假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。
当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。
VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。
结构化查询语言文本型
使用,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用。
注意没有长度,而上一节中所讲的是有长度的。一个文本型字段中的数据通常要么为空,要么很大。
当你从HTML FORM的多行文本编辑框()中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用型字段,你就应该不使用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。
一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分。
结构化查询语言数值型
整数INT 、小数NUMERIC、钱数MONEY
INT VS SMALLINT VS TINYINT
通常,为了节省空间,应该尽可能的使用最小的。一个TINYINT型数据只占用一个字节;一个型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测一下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。
为了能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-10^38到10^38范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数3.14。
MONEY VSSMALLMONEY
你可以使用 INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922,337,203,685,477.7,203,685,477.5807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。
SMALLMONEY型数据只能存储从-214,748.8.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。
结构化查询语言逻辑型
如果你使用复选框()从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。
当心,在你创建好一个表之后,你不能向表中添加 BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。
结构化查询语言日期型
DATETIME VS SMALLDATETIME
一个 DATETIME型的字段可以的日期范围是从日第一毫秒到日最后一毫秒。
如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从日到日的日期,它只能精确到秒。
DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。
结构化查询语言语言特点
1.一体化:SQL集数据定义、数据操纵和数据控制于一体,可以完成数据库中的全部工作。
2.使用方式灵活:它具有两种使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、、FORTRAN、、等主语言中使用。
3.非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”。
4.语言简洁,语法简单,好学好用:在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语。
结构化查询语言
SQL(Structured Query Language,结构化查询语言)是一种用于数据库操作的语言。
结构化查询语言使用简要
简单的Transact-结构化查询语言查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
结构化查询语言选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
SELECT * FROM testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名 列名 列标题
如果指定的列标题不是标准的格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable。
4、删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的合中只保留一行。
5、限制返回的行数
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。TOP命令仅针对SQL Server系列数据库,并不支持。
结构化查询语言FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
SELECTusername,citytable.cityid
 FROMusertable,citytable
 WHEREusertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:  表名 as 别名  表名 别名
结构化查询语言WHERE子句
WHERE子句设置查询条件,过滤掉不需要的数据行。
WHERE子句可包括各种条件运算符:
比较运算符(大小比较):&;、&=、=、&;、&=、&&;、!&;、!&
范围运算符(表达式值是否在指定的范围):BETWEEN…AND…
NOT BETWEEN…AND…
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……)
NOT IN (项1,项2……)
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
空值判断符(判断表达式是否为空):IS NULL、IS NOT NULL
逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR
1、范围运算符例:age BETWEEN 10 AND 30相当于age&=10 AND age&=30
2、列表运算符例:country IN ('Germany','China')
3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。
可使用以下通配字符:
%:可任意类型和长度的,如果是中文,请使用两个百分号即%%。
下划线_:匹配单个任意字符,它常用来限制的字符长度。
方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
结构化查询语言查询结果排序
使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为:
ORDER BY {column_name [ASC|DESC]} [,…n]
其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image进行排序。
结构化查询语言相关函数
SQL Aggregate 函数
SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。
有用的 Aggregate 函数:
AVG() - 返回平均值
COUNT() - 返回行数
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和
SQL Scalar 函数
SQL Scalar 函数基于输入值,返回一个单一的值。
有用的 Scalar 函数:
UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式
.维基百科[引用日期]
姚珺.数据库原理及应用.哈尔滨:哈尔滨工程大学出版社,2011:179
.w3cschool .[引用日期]
中国电子学会(Chinese Instit...
提供资源类型:内容
清除历史记录关闭

我要回帖

更多关于 sql查询语句实例 的文章

 

随机推荐