SQL教程之子查询语句要注意什么?
嵌套SELECT语句也叫子查询,形如: SELECT name FROM bbc WHERE region = (SELECT region FROM bbc WHERE name = 'Brazil') 一个 SELECT 语句的查询结果可以作为另一个语句的输入值。
上面的SQL语句作用为获得和'Brazil'(巴西)同属一个地区的所有国家。
子查询不但可以出现在Where子句中,也可以出现在from子句中,作为一个临时表使用,也可以出现在select list中,作为一个字段值来返回。
本节我们仅介绍的Where子句中的子查询。
在Where子句中使用子查询,有一个在实际使用中容易犯的错在这里说明一下。
通常,就像上面的例子一样,嵌套的语句总是和一个值进行比较。
语句 (SELECT region FROM bbc WHERE name = 'Brazil') 应该仅返回一个地区,即 'Americas'. 但如果我们在表中再插入一条地区为欧洲,国家名称为Brazil的记录,那会发生什么情况? 这将会导致语句的运行时错误.因为这个SQL语句的语法是正确的,所以数据库引擎就开始执行,但当执行到外部的语句时就出错了。
因为这时的外部语句就像好像是 SELECT name FROM bbc WHERE region = ('Americas', 'Europe'),这个语句当然报错了。
那么有没有办法解决这个问题呢,当然有。
有一些SQL查询条件允许对列表值(即多个值)进行操作。
例如"IN" 操作符,可以测试某个值是否在一个列表中。
下面的语句就可以安全的执行而不出错,不管表中有多少条包含Brazils的记录 SELECT name FROM bbc WHERE region IN (SELECT region FROM bbc WHERE name = 'Brazil') OK, 让我们再看看一些具体的实例, 一、给出人口多于Russia(俄国)的国家名称 SELECT name FROM bbcWHERE population>(SELECT population FROM bbcWHERE name='Russia') 二、给出'India'(印度), 'Iran'(伊朗)所在地区的所有国家的所有信息 SELECT * FROM bbcWHERE region IN(SELECT region FROM bbcWHERE name IN ('India','Iran')) 三、给出人均GDP超过'United Kingdom'(英国)的欧洲国家. SELECT name FROM bbcWHERE region='Europe' AND gdp/population >(SELECT gdp/population FROM bbcWHERE name='United Kingdom')
啥能翻译句子的软件啥能翻译英语句子的软件
1. 基础的Insert语句示例下面的语句向员工表插入一条新记录。
在这个例子中,后的“values”指定要插入到表中的所有字段对应的值。
INSERT INTO employee VALUES(100,'Thomas','Sales',5000);用SELECT语句来验证数据是否插入成功。
SELECT * FROM employee;2. 只针对选定的字段插入值如果你只想向选定的字段插入值,你需要在INSERT语句中明确指定要插入的字段名字。
下面的代码仅插入id和name列的数据INSERT INTO employee(id,name) VALUES(200,'Jason');以上代码中,我们未对dept和salary列指定任何值。
所以,以上两个字段的值为NULL,当我们用SELECT语句检索数据时。
需要注意的是,NULL不是指"NULL"字符串,SELECT语句使用"NULL"来表示这个字段的值是空的而已。
mysql> SELECT * FROM employee;+-----+--------+-------+--------+| id | name | dept | salary |+-----+--------+-------+--------+| 100 | Thomas | Sales | 5000 || 200 | Jason | NULL | NULL |+-----+--------+-------+--------+2 rows in set (0.00 sec)3. INSERT SET示例INSERT语句不仅仅可以使用"VALUE"关键字,也可以使用"SET"关键字。
下面的例子与上面的例子结果一样,但是使用的是SET关键字。
mysql> INSERT INTO employee SET id=300, name='Mayla';mysql> select * from employee;+-----+--------+-------+--------+| id | name | dept | salary |+-----+--------+-------+--------+| 100 | Thomas | Sales | 5000 || 200 | Jason | NULL | NULL || 300 | Mayla | NULL | NULL |+-----+--------+-------+--------+4.从另一个表中检索数据插入下面的例子中,我们会使用INSERT ... SELECT语句,这个语句可以从其他表中检索数据,并插入到目标表。
下面的代码从Contractor表中检索所有数据并插入到Employee表。
INSERT INTO employee SELECT * FROM contractor;SELECT语句中可以根据需要使用WHERE子句,用来检索需要的从Contractor表插入到Employee表的数据。
INSERT INTO employee SELECT * FROM contractor WHERE salary >= 7000;注意:如果你使用oracle数据库,你的SQL应该这样写"INSERT INTO employee AS SELECT * FROM contractor"。
需要注意在MySQL中不适用AS关键字。
5.从其他表中选择部分字段插入当然,你也可以从其他表中选择部分字段的数据插入到你的表中。
下面的例子将从contractor表中选择id,name字段的所有数据插入到employee表。
INSERT INTO employee(id,name) SELECT id,name FROM contractor;跟前面的例子一样,可以使用WHERE子句过滤数据。
INSERT INTO employee(id,name) SELECT id,name FROM contractor WHERE salary >= 7000;注意:如果employee表中已存在相同主键(这里的主键是id)的记录,你会得到一条错误信息。
下面是一个示例错误信息,指出employee表中已经存在id为100的记录。
ERROR 1062 (23000): Duplicate entry '100' for key 'PRIMARY'6. 插入数据到指定分区如果创建了分区表(分区类型为range)并希望将输入插入到指定分区,可以参考下面代码。
将数据插入到分区p1中的employee表。
INSERT INTO employee PARTITION (p1) VALUES(100,'Thomas','Sales',5000);注意:如果该分区的employee表中已包含相应的数据(这里是id=100的employee数据),你会得到如下错误信息。
ERROR 1729 (HY000): Found a row not matching the given partition set注意: 分区仅在MySQL5.6及以上版本可用。
7. 插入数据到多个分区可以使用单条SQL语句将数据插入到多个分区。
下面的INSERT语句将id为100的记录插入到p1分区,将id为200的记录插入到p2分区。
INSERT INTO employee PARTITION (p1, p2) VALUES(100,'Thomas','Sales',5000), (200,'Jason','Technology',5500);注意: 在上例中,如果MySQL往任意分区插入数据失败,那么整个INSERT语句将失败。
当然,这同样仅能在MySQL5.6及以上版本使用。
8. 在插入过程中忽略错误在一些场景中(比如:批处理),你可能希望忽略插入过程中MySQL产生的错误信息,你可以使用INSERT IGNORE语句。
比如:下面的例子会抛出错误信息,提示数据已经存在。
mysql> INSERT INTO employee VALUES(100,'Thomas','Sales',5000);ERROR 1062 (23000): Duplicate entry '100' for key 'PRIMARY'要忽略上面的错误信息,可以使用INSERT IGNORE来替换INSERT语句(执行前请确保这条对应的主键已经存在)。
mysql> INSERT IGNORE INTO employee VALUES(100,'Thomas','Sales',5000);Query OK, 0 rows affected (0.00 sec)INSERT IGNORE仅仅只是忽略错误信息,不会进行其他任何处理。
9. INSERT语句的默认值如果MySQL运行在strict模式下,并且在我们的INSERT语句中并未指定默认值,那么MySQL将抛出错误信息。
不过,如果MySQL并未启用strict模式(这个是默认启用的)时,同时INSERT语句没有为字段指定值,那么MySQL会为该字段使用字段类型的默认值。
比如,bonus表的所有字段都不允许为空(not null)。
mysql> DESC bonus;+--------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+--------+---------+---...
有什么网络词语
人不叫人,叫----淫 我不叫我,叫----偶 年轻人不叫年轻人,叫----小P孩 岁数不叫岁数叫----年轮 蟑螂不叫蟑螂,叫----小强 什么不叫什么,叫----虾米 不要不叫不要,叫----表 喜欢不叫喜欢,叫----稀饭 这样子不叫这样子,叫----酱紫 好不叫好,叫----强 强不叫强,叫----弓虽 看不懂不叫看不懂,叫-------晕。
不满不叫不满,叫-----------靠。
见面不叫见面,叫-----------聚会。
大哥不叫大哥,叫-----------兄台。
看法不叫看法,叫-----------愚见。
有钱佬不叫有钱佬,叫-----vip。
提意见不叫提意见,叫-----拍砖。
支持不叫支持,叫------------顶。
强烈支持不叫强烈支持,叫------------狂顶。
不忠不叫不忠,叫------------外遇。
纸牌游戏不叫纸牌游戏,叫----杀人 被无数蚊子咬了不叫被无数蚊子咬了,叫----~~~新蚊连啵~~~ 毛片不叫毛片,叫----av 追女孩不叫追女孩,叫----把MM 看MM不叫看MM,叫----鉴定 好看不叫好看,叫----养眼 厉害不叫厉害,叫——牛x! 用烂了的东西还拿出来叫----老! 不懂装懂叫----sb! 乐一乐不叫乐一乐,叫happy! 尴尬不叫尴尬,叫——汗 不喜欢不叫不喜欢,叫--吐 思想异类叫------变态bt 我爱你不叫我爱你,叫——你去死 你进来不叫你进来,叫---乱入 兴奋不叫兴奋,叫----high 吃喝不叫吃喝,叫----腐败 请人吃饭不叫请客,叫----反腐败 做爱不叫做爱,叫——xx! xx不叫xx,叫----日 女人自己xx不叫xx,叫——买黄瓜 奇怪怀孕不叫奇怪怀孕,叫--黄瓜都靠不住了~ 文字擦边游戏,叫 rpwt 测试 帖子老不叫老,叫火星 帖子总发不叫总发……叫月经贴。
变态贴不叫变态贴叫---潜力贴 欠扁不叫欠扁-----叫陈水 第一个回贴的不叫第一叫-----沙发! 第二个回贴的不叫第二叫-----板凳 第三个回帖的不见第三叫-----地板!还有一些有趣的网络用语:如88用来指拜拜,1314有网络中用来指一生一世,而且8常用来代替不,比如8要即为不要,8给即为不给类似的如酱紫即为这样子还有一些比较常用来称呼的网络用语,如:GG(哥哥) JJ(姐姐) DD(弟弟) MM(美眉) 大虾 菜鸟 青蛙 恐龙 网虫 黑客 闪客 斑猪等还有一些有趣的动词:如说人隐身为潜水,人们都习惯了说“我晕”等PK就是单挑 粉丝 就是FANS 追星族 追女孩不叫追女孩,叫--泡妞 吃不叫吃,叫--撮 羡慕不叫羡慕,叫--流口水 乐一乐不叫乐一乐,叫--happy 跳舞不叫跳舞,叫--蹦的 东西不叫东西,叫--东东 别人请吃饭不叫请吃饭,叫--饭局 兴奋不叫兴奋,叫--high 特兴奋不叫特兴奋,叫--至high 有本事不叫有本事,叫--有料 倒霉不叫倒霉,叫--衰 单身女人不叫单身女人,叫--小资 单身男人不叫单身男人,叫--钻石王老五 被无数蚊子咬了不叫被无数蚊子咬了,叫--新蚊连啵 好看不叫好看,叫--养眼! 看帖不叫看帖——叫瞧瞧去不错不叫不错,叫8错 去死不叫去死,叫74 亲亲你叫771,抱抱你叫881 气死我了——7456 祝你快乐不叫祝你快乐.........叫猪你快乐 就是不叫就是,叫94 是啊不叫是啊,叫42 不要不叫不要——叫表 kick your ass:踢你的PP FT,分特:faint的简称,晕倒。
统一:刷墙,扫楼的同义词。
也就是整个版面都是你的回复,一种被谴责的行为。
XXXX的说:一种动词后置,比如吃饭的说 XXXXing:XXXX进行中,正在XXXX。
比如上网ing PP:照片,但如果是说打PP,那就是kick your ass的意思了 kick your ass:打你屁屁 BT:变态。
和浮云的其他版块相比,水版是个BT出没的地方 扁他(她、它) SL:色狼。
浮云的特点是,狼多也MM多 GF:girl friend,女友 BF:boy friend,男友 kao,靠,拷:粗口,慎用 MD:粗口,特别慎用!TMD: 粗口,特别慎用! TNND:粗口,特别慎用! JJWW:唧唧歪歪,指人说话的样子 SJB:神经病 PMP:拍马屁 MPJ:马屁精 kick:扁 slap:打耳光 KH:葵花,就是练葵花宝典的高手,浮云某高手已练至化境,人皆不呼其名,而直呼KH。
KHBD:葵花宝典 PXJF:辟邪剑法,源于KHBD,KH专用的剑法 SP:support,支持 的微:一种语气助词,KH专用 呼呼,猪猪:睡觉 果酱:过奖 BXCM:冰雪聪明 LOL:Laugh Out Loud,大笑 KFC:Kxxx & Fxxx & Cxx,要是和某人有仇,就KFC他吧 PK:player kill,砍人,攻击,也可解释为先批后K btw:by the way,顺便说一句 PS:两种意思,btw或者photoshop(一种电脑修图软件) CU:see you,再见 BB:宝贝,情人,孩子,byebye,看具体使用 走召弓虽:超强 饭饭:吃饭 片片:照片 斑竹,板猪:版主,论坛版块的管理人员,把水版比作个小店,他们就是店小二。
水桶,水鬼,水仙,水王,水母:指灌水狂人,水母特制女性 水手:版中的芸芸众生潜水员:就是那些喜欢看别人灌水自己不灌水的家伙 抓狂:受不了刺激而行为失常 THX,3X:thanks,谢谢 sigh:叹息cool:酷 pm:论坛的私信 zip it:闭嘴 DL:download,下载 PUB:网路上扫描到的ftp,可以临时起上传下载功能,也指把文件传到pubftp上共享的行为。
BRB:Be right back,马上回来 TTYL:Talk to you later,再见,下次回头再谈 BBL:be back later 过会回来 包子:某人长得难看或者笨就说他包子 粉:很,非常 蛋白质:BD+BC+SJB 爱老虎油:I love U,我爱你 表:不要,比如表太好,不要太好的...
转载请注明出处51数据库 » 一般句子要注意什么软件