第一篇:精妙的作文语句
精妙的作文语句.txt39人生旅程并不是一帆风顺的,逆境 失意会经常伴随着我们,但人性的光辉往往在不如意中才显示出来,希望是激励我们前进的巨大的无形的动力。40奉献是爱心,勇于付出,你一定会收到意外之外的馈赠。
(一)付出与收获
1、有人说付出和接受是等价的,是一种人们情感的储蓄,一味的索取,只会等来情感的毁灭;我要说:付出与接受是双向的,只有一方的的主动是得不到真情的回报的,我们需要彼此心灵真诚的付出。
2、在人生的道路上,付出与接受是不可避免的。在荆棘路前,看着条条荆棘,不免退避三舍之感油然而生。但当你付出努力,忍住被荆棘划过时的剧痛感,胜利的女神已经向你露出了灿烂的微笑,这时,请你不要害羞,自豪的去拥抱本就属于你的成3、大海无语,却有鱼儿为它编制多彩的图案;大地无语,却有万物为他谱写生命的乐章;天空无语,却有鸟儿们为他演唱生活的美好。付出后有对良心的慰藉,接受后有对生活的追求。生活虽无语,却有着付出与接受的轮回,有着付出与接受所谱写的动听、美妙的华丽乐章!请把握好付出与接受!
爱是生命的真谛,接受是爱的源泉,而付出则是爱的灵魂。任何的接受与付出,都是情感的陶冶与升华。
4、流光溢彩的鲜花,它们接受了阳光的洗礼,细雨的滋润,付出了自己婀娜多姿的脸庞来点缀世界;高大伟岸的树木,它们接受了人们的浇灌,鸟儿的祝福,付出了自己参天的绿荫来回报恩者;潺潺溪流,它们接受了雨水的恩赐,鱼儿的舞蹈,付出了自己甘甜清澈的血液来感谢„„
5、我喜欢接受的美丽,付出的伟大。如果付出是充满荆棘的漫漫征途,那么接受就是征途后蜂飞蝶舞的锦簇花团。历史滚滚前进的车轮告诉我们,没有人民抛头颅、撒热血的气节,哪会有新中国初升的太阳?
(二)关于文化
1、文化,或者说,艺术,做了什么呢?它使孤独的个人为自己说不出的痛苦找到了名字和定义。艺术像一块蘸了药水的纱布,轻轻擦拭他灵魂深处从未愈合的伤口。
2、文化艺术使孤立的个人打开深锁自己的门,走出去,找到同类。他发现,他的经验不是孤立的,而是共同的集体的经验,他的痛苦和喜悦,是一个可以与人分享的痛苦和喜悦。
3、人本是散落的珠子,随地乱滚,文化就是那根柔弱又强韧的细丝,将珠子串起来成为社会。
4、一个中国孩子,甚至在呀呀学语的时候,已经可能背下来许多古典诗词了。过年时吟爆竹声中一岁除,春雨时吟清明时节雨纷纷,中秋时吟明月几时有,送别时吟劝君更进一杯酒,喜悦时吟漫卷诗书喜欲狂,慷慨时吟大江东去,疲倦时吟春眠不觉晓,激越时吟凭栏处潇潇雨歇„„古典诗词已经规定了铸就了中国人的心理结构和表达。
(三)书籍和学习
1、智慧必须通过智慧才能被认知,否则智慧也成为未知。
2、每一本优秀的书都开启了一扇智慧之门,每一扇门后都有一位智者在等候你的来访,把你引领到新的境
3、在很大程度上,人类精神文明的成果是以书籍的形式保存的,而读书就是享用这些成果并把它们据为己有的过程。做一个读者,就是加入到人类精神文明的传统中去,做一个文明
4、文字和书籍的发明,让后人从一开始就可以站在人类已有文明的起点上,继续出
5、与女娲造人并给万物命名一样,每一个人的一生,就仿佛在重新经历一遍女娲命名世界的辉煌过程。因为学习,每天的太阳才是新的,我们也在发生奇妙的变化,日渐创造出一个全新的自我。
(四)要独立
1、黑色的门紧闭着:一个永远期待的灵魂死在门内,一个永远找寻的灵魂死在门外。每一个灵魂是一个世界,没有窗户。而可爱的灵魂都是倔强的独语者。
2、没有蓝天的深邃可以有白云的飘逸;没有大海的壮阔可以有小溪的优雅;没有原野的芬芳可以有小草的翠绿!生活中没有旁观者的席位,我们总能找到自己的位置,自己的光源,自己的声音!我们有美的胸襟,我们才活得坦然。我们活得坦然,生活才给我们快乐的体验。
3、其实,名人形象的高大,是崇拜者自己先屈下膝去仰视的结果:把别人看作耸入云际的高山,视自己则为一抔黄土。若能站直了看名人,就会发现在他们显赫声名的背后,原来也是一副普通的身材,只不过穿了特制的名袍而已,无须那般景仰的。
(五)要有思想
1、我的思想在荒野上奔驰。有一所落寞的古老的屋子,画壁漫漶,阶石上铺着苔藓,像期待着我的脚步。
2、野蛮的符咒尚未挣脱,文明的压抑接踵而至。一方面,权贵贪欲的膨胀使得腐败丛生;另一方面,金钱力量的崛起导致精神平
3、真正有生命力的思想不会被体系的废墟掩埋,一旦除去体系的虚饰,它们反以更加纯粹的面貌出现在天空下,显示出它们与阳光、土地、生命的坚实联系,在我们心中唤起亲切的回响。
4、人皆有灵魂,但灵魂未必总是在场的。现代生活的特点之一是灵魂的缺席,它表现在各个方面,例如使人不得安宁的快节奏,远离自然,传统的失落,人与人之间亲密关系的丧失,等等。因此,现代人虽然异常忙碌,却仍不免感到空虚。
5、法国思想家帕斯卡尔有一句名言:“人是一支有思想的芦苇。”他的意思是说,人的生命像芦苇一样脆弱,宇宙间任何东西都能致人于死地。可是,即使如此,人依然比宇宙间任何东西高贵得多,因为人有一颗能思想的灵魂。
(六)面对苦难
1、痛苦应成为我们生命之舟上的压舱物,正因为有了它的存在,我们的船才得以稳健地前行。
2、大约世间之人多是寂寞的吧?未被击节赞美的文章,未蒙赏识的赤诚,未受注视的美貌,无人为之垂泪的剧情,徒然的弹了又弹却不曾被一语道破的高山流水之音„„
3、有人说苦难就是不幸。是的,苦难常常把人逼到无奈和困惑的地步,可你也往往因此得以最大地发挥自己的潜能,体现自己的价值。苦难又是段风雨路,跌倒了爬起来才知寻路的重要和开路的不易。而走过那段泥泞坎坷,前路还有什么可畏惧?这么说,苦难不能算不幸。
4、微笑着的人并非没有痛苦,只不过他们善于把痛苦锤炼成诗行;微笑着的人并非没有眼泪,只不过他们善于把眼泪化作心灵的灯盏,照耀着前行的路。微笑是一种气质,气质得益于修养;微笑是一种境界,境界依靠磨练。相逢一笑泯恩怨,桃花依旧笑春风„„
5、叔本华曾说:“生活是一条由炽热的煤炭所铺成的环形道路。”因为他的情感中有对生活苦难的深度感知。张爱玲说:“生活是一件美丽的华袍,里面爬满了虱子。”因为她的情感中有对生活本质深刻的剖析。
6、毛泽东面对生活中的苦难是“雄关漫道真如铁,而今迈步从头越”的激昂;苏东坡是“一樽还酹江月”的感叹;徐志摩是“得之,我幸;失之,我命”的自慰。
(七)坎坷与坚强
1、如果说他的命运是那破旧的花架,那么因为他的坚强意志,变得繁花似锦,光艳夺人;如果说他的命运是那漆黑的夜空,那么因为他的坚强意志,变得繁星闪烁,熠熠发光;如果说他的命运是那贫瘠的土地,那么因为他的坚强意志,变得葱葱郁郁、油油翠绿。
2、我们的老祖宗归有光八次落第,于是有了《项脊轩志》这样的隽永文章;英国的大将军威灵顿七败七战,于是有了永垂千古的美名;越王勾践卧薪尝胆,于是有了“苦心人,天不负”这样的豪言壮语。
3、既然不愿意被风雨淋湿,何不未雨绸缪?既然不愿意屈服于坎坷崎岖,何不磨练自己,让自己适应困难,战胜困难;既然不能号令风雨,让日月臣服,为何不趁早学会适应,为自己撑起一方璀璨星空。
(八)积极乐观
1、生命之宴该是如此吧!我对生命中的涓滴每有一分赏悦,上帝总立即赐下万道流泉;我为每一个音符凝神,他总是倾下整匹的音乐如素锦。生命的厚礼,原来只赏赐给那些肯于一尝的人。
2、世界本来就不“完美”。我们不快乐的程度取决于现实跟它们“应该是”的样子之间有多大距离。如果我们不凡事苛求完美,快乐这档子事就简单得多
3、在生与死之间还有一段美妙的征程,叫做生活。这是一段神奇的旅途,它应该充满了梦幻、想象、知识、现实和领悟。
4、如果你意识到,生命是一条单向车道,你永远不可能再次路过相同的风景,那么你就应该全身心地去享受生活,而这就是快乐的真谛了。
5、古往今来,尽管人生虚无的悲论如缕不绝,可是劝人执著人生爱惜光阴的教诲更是谆谆在耳。两相比较,执著当然比悲观明智得多。悲观主义是一条绝路,冥思苦想人生的虚无,想一辈子也还是那么一回事,绝不会有柳暗花明的一天,反而窒息了生命的乐趣。不如把这个虚无放到括号里,集中精力做好人生的正面文章。既然只有一个人生,世人心目中值得向往的东西,无论成功还是幸福,今生得不到,就永无得到的希望了,何不以紧迫的心情和执著的努力,把这一切追求到手再说?
4、我们趋行在人生这个亘古的旅途,在坎坷中奔跑,在挫折里涅盘,忧愁缠满全身,痛苦飘洒一地。我们累,却无从止歇;我们苦,却无法回
(九)做人与责任
1、生命的可爱正在于它的脆弱,脆弱仿佛一根丝,慢慢地缠绕起雪白的茧子。茧子内,是生,也是死,全看我们怎样选择。
2、真正有价值的东西没有一件是出于个人的雄心或仅仅纯粹是出于一种责任感,而是源于对人类和客观事物的爱和献身精神。
3、人世间各种其他的责任都是可以分担或转让的,惟有对自己的人生的责任,每个人都只能完全由自己来承担,一丝一毫依靠不了别人。
4、往事付流水。然而,人生中有些往事是岁月带不走的,仿佛愈经冲洗就愈加鲜明,始终活在记忆中。我们生前守护着它们,死后便把它们带入了永恒。
5、忽然想起泰戈尔的最有名的一句诗:“天空不留下我的痕迹,但我已飞过。”许多的事得失成败我们不可预料,也承担不起。我们只需尽力去做,求得一份付出之后的坦然和快乐,奉上我们的真心,然而感铭自己的博大。我们可能一次一次失却机会,没有关系,那只是命运剥夺了你活得高贵的权利,却没有剥夺你活得伟大的权利!
(十)热爱生活
1、生活还像一杯红酒,热爱生活的人会从中品出无穷无尽的美妙,将它握在手中仔细观察,它的暗红色中有血的感觉,那正是生命的痕迹;抿一口留在口中回味,它的甘甜中有一丝苦涩,如人生一般复杂迷离;喝一口下肚,余香沁人心脾,让人终生受益。
2、人要高瞻远瞩,应走出生活里的山谷与阴影,进入一望无际的高原,然后沉浸在那阳光里,让灵魂翱翔,让内心充满伟大的梦想,让生命、生活和热情恣意奔放。
3、生命不是一篇“文摘”,不接受平淡,只收藏精彩,她是一个完整的过程,是一个“连载”,无论成功还是失败,她都不会在你背后留有空白;生命也不是一次彩排,走得不好还可以从头再来,她绝不给你第二次机会,走过去就无法回头。
4、青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤
6、当简爱说“我们是平等的,我不是无感情的机器”,我懂得了做为女性的自尊;当裴多菲说“若为自由故,两者皆可抛”,我懂得了做为人的价值;当王勃说“海内存知己,天涯若比邻”,我懂得了友情的可贵;当拿破仑说“不想当将军的士兵不是好士兵”,我懂得了奋斗的意义;当孔子说“三人行必有我师焉”,我懂得了谦虚的必要;当范仲淹说“先天下之忧而忧,后天下之乐而乐”,我懂得了做人的责任。
(十一)生命
1、生命就像一种回音,你送出什么它就送回什么,你播种什么就收获什么,你给予什么就得到什么。
2、生命的美丽,永远展现在她的进取之中;就像大树的美丽,是展现在它负势向上高耸入云的蓬勃生机中;像雄鹰的美丽,是展现在它搏风击雨如苍天之魂的翱翔中;像江河的美丽,是展现在它波涛汹涌一泻千里的奔流中。
3、生命是什么?有人说,生命是初生的无知,少年的纯真,青年的朝气,中年的稳健,老年的愤世嫉俗。有人说,生命是母亲的慈爱,父亲的严厉,爱人的柔情,朋友的关切,是一切感情的组合体。有人说,生命是夕阳衬落日,青松立峭壁,万里平沙落秋雁,三月阳春和白雪,是宝刀快马,金貂美酒,是孤月冷歌的漂泊。
(十二)幸福
1、幸福是什么?幸福是饥饿者手中的面包,是流浪人身上的那顶帐篷,是不幸者心中的向往。
2、拥有思想的瞬间,是幸福的;拥有感受的快意是幸福的;拥有激动的时刻是幸福的。只因我们能真实地享用生命的馈赠,从而品尝生命的真实。记住幸福,留下快乐。
3、幸福是花朵,绽放出光明与希望;幸福是果实,回报以芳香与甘甜;幸福是落叶,奉献出余热化香泥。
4、幸福是什么?幸福是微笑着的闪着泪光的双眼;是耳边亲切的问候;是孩子们在沙滩上玩耍;是风烛残年的老人携手夕阳;是全家人围成一桌在中秋幸福、回味幸福呢?你渴望它时,它不会随叫随到,而在你不经意间她就会悄悄地如天使般降临你的身旁。她滋润着你那快要枯竭的心田,一阵阵笑容荡漾在你的脸庞。
5、幸福是一条缓缓流过的长河,我沿着河岸向上寻找„„哦!原来“追求”才是幸福的源头。
6、有意念才会有目标,有追求才会有幸福。古今中外,无论凡人还是伟人他们都曾有过“追求”。有人追求自由,有人追求理想,有人追求幸福。因为追求,钱学森在数学方面作出了杰出的贡献;因为追求,司马迁在狱中写成了伟大的著作《史记》;因为追求,沃尔特*迪斯尼成功地绘画了许多深受大众喜爱的卡通人物„„
7、追求是一种持之以恒的过程,只要心中存在着这种信念,日复一日,年复一年,你一定会到达幸福的彼岸。但其中必定会有狂风暴雨,冰山触礁,它们就像逆流一样阻止你前进的步伐。这时,你不要退缩,不要气馁,哪怕最终只在幸福之门外徘徊。毕竟,我们追求过,努力过,与狂风暴雨拼搏过。追求就是一种幸福。正如泰戈尔所说过的一句话:“天空中没有留下鸟的痕迹,但我已飞过”。
8、决定我们幸福与不幸,快乐与否的,不在于我们是谁,我们在什么地方,我们有什么,我们正在做什么,而在于我们怎么想。所以,追求着便是幸福
3、对于我们这些平凡的生命来说,能否赢得别人的贺彩并不重要,只要能在我们生活与生存的空间里,大部人能容纳你、接受你,小部分人能善待你、喜欢你,有那么几个人能真爱你、牵挂你,这便是幸福的人生
(十三)成功与失败
1、从古至今,成功与失败二词,永远都是那么的鲜明。在俗人眼中,成功之人都是高高在上,永远都是成功的,对于失败之人,却是将视为,眼中钉,肉中刺,永无翻身之日。成功没有永远的成功,失败也没有永远的失败!
其实成功与失败都是对于一个人的考验。但都有两个优点与两个缺点!
成功的优点在于,试明了人生某一个目标的完成,给于自信之上的自信。证明了,自己的实力与信念!
成功的缺点在于,当一个人成功之后,长时间的生存于,成功的那一刻。而却不知道,成功与他已经慢慢的,产生了距离。
失败的优点在于,真正考验了一个人的坚韧不拔的意志,和对于失败的看法。要知道失败的原因,明白如何对待他!努力战胜眼前的失败,战胜了眼前的失败,就等于失败中的成功。因为战胜自己的成功,是非一般的成功!你才会铭记在心!
失败的缺点在于,长时间无法从苦海之中,逃离出来。一个人失败在时候,是需要时间的,但时间的长短就等于,一个人的修为!所以才会在茫茫苦海中,越陷越深,无法自拔!
无论成功还是失败,都是人生的一个点。就像直线一样,是用每一个圆点,而点出来的。每个点,可以说是成功,也可是说是失败。但这个圆点,怎么画,还再于自己。怎么画才会圆。
人生的直线,不再于直与不直!而在于,每一个点!之夜享受天伦„„
2、幸福如此绚丽多彩,如此令人神往,然而又有谁不渴望幸福、等待,享受。
1.天使飞过的地方留下的是快乐
一直以来,我始终坚信我的世界是一片白色,就像雾一样,只能看到表面,而深处的角落,那是一个谜,一个不知道有没有答案的谜。或许不知道是否有那样的一个角落。
总是很习惯性的微笑,笑的很大声,那是狂笑,发疯似的笑,很傻。但我始终觉得那样的笑容是没有任何感情色彩的。那是一种模式,是一种习惯,是伪装。
我说过很多话,也听到过很多话,但那种语言就仿如吃饭.睡觉,除了必要性,你还能说它有什么价值吗?没有!我一直都认为语言是苍白的。
我一直按着一个古怪的思维,生存着。我想我是单纯的活着,只为了活着而活者,并不是为了活者以外的事而活者。但小天的出现,给了我一个惊讶的感觉。她是一个一眼就能看出我心中的角落。她说,我一直压抑着心中的快乐,我一直都不想让自已快乐。听到这话的时候,我手中的杯子就不禁滑落。这是我从未想到的,但却似乎那么真。此时的我,不禁产生了矛盾,对以前的自已产生了疑问。
她告诉我,她不仅想知道我最近是否快乐,并且还想带给我快乐。听到这话的时候,我浑身上下有一股暖流在沸腾,它似乎要吞嗤我。那句话是我听过最美丽的一句话,它似乎是那美妙的音乐,缓慢的,动听的流遍全身;它似乎是清澈的泉水,流畅在我心中,滋润我干涩的心田;它似乎是黑夜中的星星,给我了希望与美好,为我点燃指航的灯火。原来当太阳从东边升起来的时候,厚厚的雾会消失,前方竟如此的清澈,清晰。
2.一张贺卡,就是一份温馨的友情,一份热情的祝愿。它把春的信息捎来,它把爱的种子撒播,它把美好的祝福传达,它把人间的真情传递。
3.我们做事不应该空眼其大而不屑其小,它会使我们变的好高务远,不切实际;也不应该念其粗而忘其细;而应该脚踏实地,粗中有细,完成任务。
4.我将是一架护航机,让所有的劫机者头破血流,不让“9.11”的悲剧重演;我将是一个智能法官,让冤案重洗,让罪犯束手就擒;我将是一辆无敌坦克,让所有的来犯者焦头烂额;我将是一位自由女神,让所有的人不受压迫;我将是一个纳米医生,让所有的绝病病人起死回生;我将是一只保护森林、河流、自然界的神鹰,让我们的家园更加美丽。
5.心灵是一方广袤的天空,它包容着世间的一切;心灵是一片宁静的湖水,偶尔也会泛起阵阵涟漪;心灵是一块皑皑的雪原,它辉映出一个缤纷的世界。
5.痛苦是黑暗中的摸索,前进的路途中满是坎坷;痛苦是无人理解的悲哀,无助的面对一切挫折;痛苦是心灵最深的折磨,无泪且无法直言;痛苦是天生没有的表情,是烦恼中的恶魔。
6.愚蠢是一种天生的无奈,是一种后天的懒惰,是一颗自己种下的恶果,是一条好果实中的蛀虫。
7.谎言是一只心灵的蛀虫,将人的心蛀得面目全非;谎言是一个深深的泥潭,让人深陷其中无法自拔;谎言是一个无尽的黑洞,让人坠入罪恶的深渊万劫不复。
8.阴险,是一条披着羊皮的狼,干着不见天日的勾当;阴险是善良的公敌,嫉妒的朋友;阴险是一座心灵的冰山,让人透过清澈感到的是阵阵的寒意。
9.自私是一面镜子,镜子里永远只看得到自己;自私是一块布匹,蒙住了自己的眼睛,看不见别人的痛楚;自私是一层玻璃,看上去透明,却始终隔开了彼此的距离。
10.爱心是一片照射在冬日的阳光,使贫病交迫的人感到人间的温暖;爱心是一泓出现在沙漠里的泉水,使濒临绝境的人重新看到生活的希望;爱心是一首飘荡在夜空的歌谣,使孤苦无依的人获得心灵的慰藉。
11.静物是凝固的美,动景是流动的美;直线是流畅的美,曲线是婉转的美;喧闹的城市是繁华的美,宁静的村庄是淡雅的美。生活中处处都有美,只要你有一双发现美的眼睛,有一颗感悟美的心灵。
12.古语云:“不积跬步,无以至千里;不积小流,无以成江海。”凡立功名于世者,无不是从小处做起,注意点点滴滴的积累,有意识地培养自己的品德才能,不断自我完善的。若无每日闻鸡起舞坚持不懈的毅力,那么祖逖又怎能北伐中原而名垂千古!若无长年笔走龙蛇墨染池水的工夫,那么王羲之又怎能挥毫盖世被尊为书圣呢?若无半生钻研演算草稿盈筐的血汗,那么陈景润又怎能摘取明珠享誉世界呢?
13.伽利略、牛顿、爱迪生是人不是神,其缺点错误在所难免,但这并不妨碍他们成为“巨人”。试问,有谁能否认物理学中的落体定律、惯性定律、抛物体运动规律、摆振动的等时性现象是伽利略建立或发现的呢?有谁能否定牛顿作为经典物理学创立者的地位呢?有谁能否定爱迪生是对人类物质文明有重大贡献的大发明家呢?
14.徒有万般“羡鱼”心,而无一丝“结网”意,结果定会一事无成。这道理虽然浅显,但实际上却不是每个人都能清楚认识到的。有的人希望成为爱迪生式的“发明大王”,可是却畏于钻研科学知识之难;有的人想继莫泊桑之后,再夺“短篇小说之王”的桂冠,但又慑于常年练笔之艰辛;有的人想一鸣惊人成为“音乐巨匠”,却惰于在五线谱的田地上埋首耕耘;有的人愿自己成为体育明星,却怠于“闻鸡起舞”进行训练。如此心怀鸿鹄之志,而身属燕雀之行,连一条小小的鱼都会捉不到,更何况要实现那恢宏的大志呢!
15.选择是一个崭新的开端,选择高耸入云的峭崖便需有“路漫漫其修远兮,吾将上下而求索”的信念;选择波涌浪滚的大海便需有“直挂云帆济沧海”的壮志豪情;选择寒风劲厉的荒漠便需有“醉卧沙场君莫笑,古来征战几人回”的博大胸怀-----
16.生活是什么?不同的人有不同的看法。有人说生活如酒。童年就像鸡尾酒,色彩斑斓,甜美之味令人回味;青年就像冰镇的啤酒,色彩浓黑,清凉的同时又让人觉得苦涩;中年就像烈性酒,纯净无色,辛辣之味使你五脏六腑都会灼热;老年就像葡萄酒,久存弥香,滴滴让你感受到香中之甜。(《生活是什么》)
17.如果黑板就是浩淼的大海,那么,老师便是海上的水手。铃声响起那刻,你用教职工鞭作浆,划动那船只般泊在港口的课本。课桌上,那难题堆放,犹如暗礁一样布列,你手势生动如一只飞翔的鸟,在讲台上挥一条优美弧线——船只穿过„„天空飘不来一片云,犹如你亮堂堂的心,一派高远。
18.痛苦是黑暗中的摸索,前进的路途中满是坎坷;痛苦是无人理解的悲哀,无助的面对一切挫折;痛苦是心灵最深的折磨,无泪且无法直言;痛苦是天生没有的表情,是烦恼中的恶魔。
19、希望源于失望,奋起始于忧患,正如一位诗人所说:有饥饿感受的人一定消化好,有紧迫感受的人一定效率高,有危机感受的人一定进步快。
20、别在树下徘徊,别在雨中沉思,别在黑暗中落泪。向前看,不要回头,只要你勇于面对抬起头来,就会发现,分数的阴霾不过是短暂的雨季。向前看,还有一片明亮的天,不会使人感到彷徨。
21、柔和的阳光斜挂在苍松翠柏不凋的枝叶上,显得那么安静肃穆,绿色的草坪和白色的水泥道貌岸然上,脚步是那么轻起轻落,大家的心中却是那么的激动与思绪波涌。
22、生活的海洋并不像碧波涟漪的西子湖,随着时间的流动,它时而平静如镜,时而浪花飞溅,时而巨浪冲天„„人们在经受大风大浪的考验之后,往往会变得更加坚强。
23、当你身临暖风拂面,鸟语花香,青山绿水,良田万顷的春景时,一定会陶醉其中;当你面对如金似银,硕果累累的金秋季节时,一定会欣喜不已。你可曾想过,那盎然的春色却是历经严寒洗礼后的英姿,那金秋的美景却是接受酷暑熔炼后的结晶。
24、倘若希望在金色的秋天收获果实,那么在寒意侵人的早春,就该卷起裤腿,去不懈地拓荒、播种、耕耘,直到收获的那一天。
25、生活是蜿蜒在山中的小径,坎坷不平,沟崖在侧。摔倒了,要哭就哭吧,怕什么,不心装模作样!这是直率,不是软弱,因为哭一场并不影响赶路,反而能增添一份小心。山花烂漫,景色宜人,如果陶醉了,想笑就笑吧,不心故作矜持!这是直率,不是骄傲,因为笑一次并不影响赶路,反而能增添一份信心。
26、爱心是冬日的一片阳光,使用饥寒交迫的人感受到人间的温暖;爱心是沙漠中的一泓清泉,使用权濒临绝境的人重新看到生活的希望;爱心是洒在久旱大地上的一场甘霖,使孤苦无依的人即刻获得心灵的慰藉。
27、日子总是像从指尖渡过的细纱,在不经意间悄然滑落。那些往日的忧愁和误用伤,在似水流年的荡涤下随波轻轻地逝去,而留下的欢乐和笑靥就在记忆深处历久弥新。
28、忧郁的心情蒸发了。
29、褪色的记忆。
30、硝烟又在和平的家中燃烧。
31、有些记忆被焚烧掉,有些记忆被埋在心底,纯真年代如流水划过金色年代。
32、我,要融化在粉红的桃花瓣里,拭去整日在你心头的牵挂。
1、意志倒下的时候/生命也就不再屹立。(汪国真《旅程》)
【感悟与联想】意志若倒下,生命就像鸟儿折断翅膀,再也不能飞翔。意志一但死亡,生命就像荒芜的田野,冰封雪覆,万物不再生长。
生命应当是漫天风雪中的一剪红梅,尽管深山寂寂万木萧萧,也要在枝头燃烧!生命应当是挺立于悬崖一侧的树根,用智慧和力量去熔化山岩,顽强且韧劲十足地去开垦坚硬的土地;生命应当是游鱼,寻找激流,寻找飞浪,寻找银鳞的闪光,笑仰于波涛之上。
2、只要春天还在/我就不会悲哀/纵使黑夜吞噬了一切/太阳还可以重新回来。/只要生命还在/我就不会悲哀/纵使陷身茫茫沙漠/还有希望的绿洲存在。/只要明天还在/我就不会悲哀/冬雪终会悄悄融化/春雷定将滚滚而来。(汪国真《只要明天还在》)
【感悟与联想】遭遇挫折,不应该沉溺在痛苦的泥淖,坚信明天的阳光!正如诗人舒婷所言:不是一切大树都被风暴折断;不是一切种子都找不到生根的土壤;不是一切真情都流失在人心的沙漠里;不是一切梦想都甘愿被折掉翅膀。„„不是一切火焰都只燃烧自己而不把别人照亮;不是一切星星都仅指示黑暗而不报告曙光;不是一切歌声都只掠过耳旁而不留在心上„„不是一切呼吁都没有回响;不是一切失却都无法补偿;不是一切深渊都是灭亡;不是一切灭亡都覆盖在弱者头上;不是一切心灵都可以踩在脚下,烂在泥里;不是一切后果都是眼泪血印,而不展现欢容。„„
旅途不总是布满陷阱,栽倒不总是跌断脊梁,恶梦不会紧连着恶梦,总有一天醒来是满眼晨光。不是每颗心都长满老茧,不是每根血管都注满泥浆。„„要相信,总有一朵花是香的,总有一滴血是暖的,总有一种情是真的。
诗人沙叶新说得好:即使命运从不发芽,我不惋惜千百次播种;即使花朵结不成果实,我不遗憾千百次凋零。信念告诉我的人生:没有比脚再长的道路,没有比人更高的山峰。即使永远找不到大海,我不停息寻觅的歌声;即使脚印被风雪掩埋,我也珍爱走过的路程。无愧无悔才是人生:朝着地平线匆匆走去,让世界评说我的背影。(沙叶新《我的人生》)
3、不愿攀登天堂的阶梯/就要跌进地狱的牢门。(《生命的诠释》)【感悟与联想】不要等到寿终正寝之后再去攀登,而是自呱呱落地之日起,就要自强不息,不断进取。攀登人生的每一级台阶,都要历经艰辛,付出汗水,这样才能逐步登堂入室,造福人类。否则,误入歧途,随时有坠入深渊的危险。
苹果因阳光而红晕,人生因攀登而精彩!
4、不倦的眺望,便是心灵的翅膀。/有时,人生的风雨,会折落几支羽毛/但,向往是倔强的/会穿越岁月的迭障/眺望是一只思想鸟/越是沉重/越是奋力飞翔。(潘万提《眺望》)
【感悟与联想】人受困现实,不应消沉颓唐,要有不懈的精神追求。人,只要眺望不倦,就会挣脱禁锢拘禁;人,只要不倦的眺望,就会飞越现实的苦难,进入精神的天空翱翔。
你有了远方,只能风雨兼程,你有了地平线,只能看见你越来越小的背影。
5、脚步/仅仅流连于春的原野/这只能算作春游/脚步/如果迈不出秋季的果园/便可称为采摘/脚步/深深嵌刻与峭壁与坚冰之上/便有权解释跋涉。(潘万提《关于跋涉》)
【感悟与联想】每个人都走在人生的路上。因人生态度、人生目的、终极关怀不同,“走”的步态便有差异。陶然于春日原野美景的人,会忘记播种;掇拾他人或自己果园的果实的人,因掇拾太多背负太重,始终迈不出新的脚步;至于把脚印“嵌刻与峭壁与坚冰之上”的跋涉者,他们是走向未来的哨探,是人类进步的先行者。
6、没有罗盘的风帆/只能四处流浪/如果你是鱼,/不要迷恋天空/如果你是鸟,/不要痴情海洋。(汪国真《选择》)
【感悟与联想】人生的路,有砂砾坑洼,有荆棘装潢风雨包裹;人生的路,没有风标,没有脚印,没有车辙,没有尽头;但人生的路不能没有自己的方向。
你若生为鱼,就当痴情海洋;你若生为鸟,就当迷恋天空;你若生为夏花,就当郁郁灿烂;你若生为小草,就当有着大树般接近蓝天的梦想;你若生为林木,就当欣欣向荣。
7、“只有经历地狱般的磨练,才能炼出创造天堂的力量;只有流血的手指,才能弹出世间的绝唱。”(泰戈尔)
【感悟与联想】成功都是苦瓜上结出的甜果,风雨摧折后的彩虹,经历磨难后的收获。没有冰雪的洗礼,就不会有青松的傲岸;没有人生的挫折,就无法彰显英雄的本色。冰心说:“成功的花儿,人们只惊羡它现时的明艳,然而当初它的芽儿,曾经浸透了奋斗的泪泉,洒遍了牺牲的血雨。”
8、人生并非只有一处/缤纷烂漫/那凋零的是花/----不是春天。(汪国真《那凋零的是花》)
【感悟与联想】不因一朵花的凋零而否认春天的绚丽,不因一朵浪花而否认海洋的澎湃,不因沉舟而看不见侧畔的千帆竞渡,不因病树而看不见前头的万木逢春。最美的风景,是在人生之河的上游,是在山的那边!
9、不站起来/才不会倒下/更何况/我们要浪迹天涯/跌倒是一次纪念/纪念是一朵温馨的花"(汪国真《致友人》)
【感悟与联想】跌倒并不可怕,可怕的是爬起来手里没有泥沙。
10、我让信念扎入地下/我让理想升向蓝天/我——愈是深深地扎下/愈是高高地伸展/愈是同泥土为伍/愈是有云彩作伴/根须牵着枝梢/勿让它/走向缥缈的梦幻/枝梢挽着根须/使得它/坚持清醒的实践/我于是有了/粗壮的树干/美丽的树冠/我于是长出了/累累果实/具有泥土的芳香/像云霞一样/彩色斑斓(屠岸《树的哲学》)
【感悟与联想】做人要像树那样有“升向蓝天”的理想,否则,混混沌沌,盲目生存。这样的生命之树,是结不出什么果实来的!
11.它的弯曲的身体,留下了风的形状,它似乎即将倾跌进深谷里,却又象是要展翅飞翔„„(曾卓《悬崖边的树》)
【感悟与联想】狂风可以改变树的身躯,使它由俊秀变得弯曲倾斜,但始终无法征服不屈的灵魂。生命能在死亡的边缘扎根,并出现奇迹,全靠意志的倔强。愿我们都能像这样的一棵树一样,在风雨中把自己的姿势写意成飞翔。
12、站在城市里/永远也不会摔倒/还不是因为有根吗/行人是要赶路的/他们不会停下来/让脚下生出根子/站成树/树有树的悲哀/一辈子不知道什么是路/一辈子迈不出一步。(邓万鹏《树》)
【感悟与联想】生长在“城市里”的“树”,虽说没有奔忙之劳,跋涉之苦,坎坷之虞,但对于不断延伸的道路上的变换的风景,却是无法领略的;对于穿越过程,征服道路、抵达目标的快乐,也是无从体验的。
停留在生命的原点,永远也画不出生命新的轨迹。做一棵安稳的树还是做一个人生路上的匆匆行人,看你选择什么?
做一个阅读的有心人,常收集整理一些闪光的语句,这就是考试作文中的“荧火虫”。另外,要仔细琢磨这123句哲理与意义,相信,无论是在日常写作还是在临场写作中一定会对你有所帮助的。
一、高分作文中引用较多的现代诗文
01、让我怎样感谢你/当我走向你的时候/我原想收获一缕春风/你却给了我整个春天(《感谢》汪国真)
02、愿所有的幸福都追随着你/仰首是春,俯首是秋/愿所有的快乐都陪伴着你/月圆是画,月缺是诗(《旅行》汪国真)
03、我不去想是否能够成功/既然选择了远方/便只顾风雨兼程//我不去想身后会不会袭来寒风冷雨/既然目标是地平线/留给世界的只能是背影《热爱生命》汪国真)
04、没有比脚更长的路/没有比人更高的山(《山高路远》汪国真)
05、如果你是鱼/不要迷恋天空/如果你是鸟/不要痴情海洋(《选择》汪国真)
06、如果你因失去了太阳而流泪,那么你也将失去群星了(《飞鸟集》泰戈尔)
07、鸟儿愿为一朵云/云儿愿为一只鸟(《飞鸟集》泰戈尔)
08、不要因为你自己没有胃口而去责备你的食物(《飞鸟集》泰戈尔)
09、小草呀,你的足步虽小,但是你拥有你足下的土地(《飞鸟集》泰戈尔)
10、使生如夏花之绚烂,死如秋叶之静美(《飞鸟集》泰戈尔)
11、不是槌的打击,乃是水的载歌载舞,使鹅卵石臻于完美(《飞鸟集》泰戈尔)
12、天空不留下鸟的痕迹,但我已飞过(《飞鸟集》泰戈尔)
13、墙角的花/你孤芳自赏时/天地便小了(《繁星》冰心)
14、成功的花/人们只惊慕她现时的明艳/然而当初她的芽儿/浸透了奋斗的泪泉/洒遍了牺牲的血雨(同上)
15、生命诚可贵,爱情价更高,若为自由故,两者皆可抛(《自由》裴多菲)
16、黑夜给了我黑色的眼睛/我却用它寻找光明(顾城《一代人》)
17、为什么我的眼里常含泪水?因为我对这土地爱得深沉„„(艾青《我爱这土地》)
18、卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭(北岛《回答》)
19、假如生活欺骗了你/不要悲伤,不要心急/忧郁的日子里须要镇静/相信吧,快乐的日子将会来临/心儿永远向往着未来/现在却常是忧郁,一切都是瞬息/一切都将会过去/而那过去了的,就会成为亲切的回忆(普希金《假如生活欺骗了你》)
20、你在桥上看风景/看风景的人在楼上看你//明月装饰了你的窗子/你装饰了别人的梦(《断章》卞之琳)
21、世上本来没有路/走的人多了/也便成了路(《故乡》鲁迅)
22、有的人活着/他已经死了/有的人死了/他还活着(《有的人》藏克家)
23、从明天起,做一个幸福的人/喂马,劈柴,周游世界/从明天起,关心粮食和蔬菜/我有一所房子,面朝大海,春暖花开(《春暖花开》海子)
24、老是把自己当作珍珠/就时时有被埋没的痛苦//把自己当作泥土吧/让众人把你踩成一条道路(鲁藜《泥土》)
25、附着在大地上/你是土壤//沉浮在空间里/你是尘埃。(林希《土》)
26、真的猛士,敢于直面惨淡的人生,敢于正视淋漓的鲜血。(鲁迅《纪念刘和珍君》)
二、古代哲理名句集
01、古之成大事业者,不惟有超世之才,亦有坚韧不拔之志!(苏轼)
02、古今来许多世家,无非积德;天地间第一人品,还是读书。
03、宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。(《菜根谭》)
04、水至清则无鱼,人至清则无徒。(韩非子)05、居高声自远,非是藉秋风。(虞世南)
06、夕云乍起日沉阁,山雨欲来风满楼。(许浑)07、老骥伏枥,志在千里,烈士暮年,壮心不已。(曹操)
08、宁可枝头抱香死,何曾吹落北风中(郑思肖)09、落红不是无情物,化作春泥更护花(龚自珍)
10、看似寻常最奇崛,成如容易却艰辛(王安石)
11、纸上得来终觉浅,绝知此事要躬行(陆游)
12、问渠那得清如许,为有源头活水来(朱熹)
13、长风破浪会有时,直挂云帆济沧海(李白)
14、身无彩凤双飞翼,心有灵犀一点通(李商隐)
15、江山代有才人出,各领风骚数百年(赵翼)
16、与其临渊羡鱼,不如退而结网。
17、长风破浪会有时,直挂云帆济沧海。(李白)
18、古今之成大事业、大学问者,必经过三种之境界:“昨夜西风凋碧树。独上高楼,望尽天涯路”。此第一境也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境也。“众里寻他千百度,蓦然回首,那人却在,灯火阑珊处”。此第三境也。(王国维)
三、网络俏皮话精选集
01、人长得漂亮不如活得漂亮!
02、有些事,明知是错的也要去坚持,因为不甘心;有些人,明知是爱的也要去放弃,因为没结局;有时候,明知路没了却还在前行,因为习惯了。
03、记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
04、我可以选择放弃,但不能放弃选择。
05、大事难事,看担当;逆境顺境,看胸襟;是喜是怒,看涵养;有舍有得,看智慧;是成是败,看坚持。
06、人之所以活的累,是因为放不下架子、撕不开面子、解不开情结。
07、一道幸福之门关闭时,另一道就会打开。我们经常盯着关闭的门,对开启的门却视若无睹。
08、人生最精彩的不是实现梦想的瞬间,而是坚持梦想的过程!
09、微小的幸福就在身边,容易满足就是天堂。
10、一个人能走多远,要看他与谁同行;一个人有多优秀,要看他有谁指点;一个人有多成功,要看他有谁相伴。
11、探索的旅程不在于发现新大陆,而在于培养新视角。
12、忙碌是一种幸福,让我们没时间体会痛苦;奔波是一种快乐,让我们真实的感受生活;疲惫是一种享受,让我们无暇空虚。
13、把一切平凡的事做好即不平凡,把一切简单的事做对即不简单。
14、人生重要的不是你站在什么地方,而是朝什么方向走。
15、没有风险的人生,好比平川走马,静水行船。
16、顺利时得意忘形是可怕的,挫折时一蹶不振是可悲的,成功后奋进不止是可敬的,失败后亡羊补牢是可喜的。
17、仰对父母,我们是“孤本”且不可重复;俯对孩童,我们是至尊至高的唯一;面对友情,我们是密友最珍贵的财富;面对事业,我们是不可或缺的主宰。
18、悲观者说,希望是地平线,就算看得见,也永远走不到;乐观者说,希望是启明星,即使摘不到,也能告诉人们曙光就在前头。
19、遗忘是心的缝隙,漏掉了许多珍贵的昨天。
20、真正的成功者,从来不会给自己留退路,相反,倒往往在山重水复中踏出一条新路来。虽遇挫折,但决不气馁;每次跌倒,随即站起;别人放手,他仍然坚持抓住;别人后退,他仍然奋勇前行。
21、成功者都是从失败的炼狱中走出来的。成功与失败的裁决,不是在起点,而是在终点。
22、你不能左右天气,但可以改变心情。你不能改变容貌,但可以掌握自己。你不能预见明天,但可以珍惜今天。
23、脚不能到达的地方,眼睛可以到达,眼睛不能到达的地方,精神可以飞到。
24、弱者说,逆境是绊脚石,碰上它,会跌下失败的深渊;强者说,逆境是垫脚石,踩着它,可以登上成功的高峰。
25、命运,其实是公平的,它遵循一条鲜为人知的补偿原则:它青睐不断拼搏的强者,让在生活中失去最多的强者,也收获最多。
26、人能走多远?这话不要问双脚,而是要问志向。
27、无论命运多么晦暗,人生多么颠簸,都会有摆渡的船,这只船就在我们自己手里。实在无船可渡的人,哪怕用幻想折只小船呢,也要奋力将自己摆渡到对岸。
28、遇到困难时不要抱怨,既然改变不了过去,那么就努力改变未来。
29、如果惧怕前面跌宕的山岩,生命就永远只能是死水一潭。
30、含泪播种的人一定能含笑收获。
31、如果上帝给你关了一扇门,他必定会给你开扇窗。
32、成功是对执着者的一种馈赠;失败是对追求者的一种考验。
四、优秀题记精选
01、最柔软脆弱的是人性,最厚重刚烈的也是人性。
02、人性的堕落,常常从无视公理开始,社会的尊严,常常因权力滥用萎缩。
03、永远相信,人世间不只是心灵的沙漠,感情的冰窑,各种至善至真的情怀,筑起了一道道最美的风景。
04、幸福的家庭家家都相似,不幸的家庭却各有各的不幸。(托尔斯泰《复活》)
05、人生的道路虽然漫长,但紧要处常常只有几步,特别是当人年轻的时候。没有一个人的生活道路是笔直的、没有岔道的。有些岔道口,譬如政治上的岔道口,事业上的岔道口,个人生活上的岔道口,你走错一步,可以影响你人生的一个时期,甚至影响你的一生!(路遥《平凡的世界》)
06、生命的意义不在美丽的言辞中,不在空洞的追求里,而在于实实在在的谋求自己的生存,同时也帮助别人生存中。
07、人的一生,如同四季,春种,夏耘,秋收,冬藏。
08、生命如同一幅画,可以没有色彩铺张的轰轰烈烈,但不能缺少美的意境。
09、生活如同一根燃烧的火柴,当你四处巡视以确定自己的位置,它已经点完了。
10、当雨季来临时,许多生命的记忆被雨水淋成褪色的风景,所有不经意的回眸都被绚丽成最浪漫的构思,在梦醒后的清晨,无奈地投入另一种漂泊„„
11、每个人都曾面临人生的选择,我们必须决定什么是重要的事„„
12、拉开窗帘,阳光只有一种颜色。
13、不要被世俗的尘嚣蒙住你的眼睛。
14、把耳朵叫醒,然后,倾听世界,相信,必有一个声音属于成功。
15、苦难对于天才是块垫脚石,对能干的人是财富,对弱者是一个万丈深渊。
16、如果把苦难只视为苦难,那它真的就只是苦难。但是如果你让它与你精神世界里最广阔的那片土地去结合,它就会成为一种宝贵的营养,让你在苦难中如凤凰涅盘,体会到特别的甘甜和美好。
17、惟宽可以容人,惟厚可以载物。
18、一个不容置疑的哲理,一个令人铭心的命题,一个内涵丰富的象征,没有不为名利的世纪超人,只有善待名利的智者。
19、只要心里有阳光,眼睛看到的就都是温暖。
20、给心情涂上颜色,我们便有了七彩的人生,我们才真正地把握了自己。
21、乐观者和悲观者之间的差别十分微妙:乐观者看到的是甜甜圈,而悲观者看到的则是甜甜圈中间的小小空洞。
22、倘若你想改变你的世界,首先就应该改变你自己。
23、就像向日葵追寻太阳,人总是追求崇高与完美,而人生偏是一个在苦难中不断雕塑自我的过程。
24、冬天,从这里夺去的,春天会一丝不少的变换着形式交还给你。
25、有许多的人,一直在苦苦地寻找着上帝赐予自己的“宝石”,但当“宝石”已经拾在自己的手中时,却又被自己轻而易举地抛弃了。
26、儿时的岁月总是有母爱相伴,长大的我觉得与母亲渐远。蓦然回首,才发现阳光依旧——母爱就在身边。
27、幸福的定义,珍惜你所拥有的每一样东西,你会发现,幸福简单的让你无法置信。
28、一忍可以成百勇,一静可以制百动。
29、独善其身者难成大事,越利他,就越利己
30、我睡去,感觉生命之美丽,我醒来,感觉生命之责任。
31、一个人到了忘记得失的时候,他实际上已有所得。
32、每个人都有自己的一亩三分地,永远的守望可能只会收获糊口的玉米,如果跳出了这一亩三分地,你可能成为乞丐,但更有机会发现远方的金子。
33、蜡烛的美,是绝唱的美。它以自焚的痛苦将自己化为光和热,照亮了别人。
34、我们可以失望,但决不能盲目。
35、人生没有不可逾越的天堑,只要永不懈怠地一步一步走下去,前面就是幸福的彼岸。
36、为人处世的原则就是多为对方留下一些余地,留给别人的同时,也留给了自己。
37、许多时候,能让我们超越极限的力量,不是名利,不是财富,甚至连自己的生命都不是,而是在血管里涌动的,一次次漫过心底的爱!
38、许诺通常分为两种,一种如清茶,倒一杯是一杯,一种如啤酒,才倒半杯,就已经泡沫翻腾。
39、肉体是精神居住的花园,而意志则是这个花园的园丁,意志既能够使肉体“贫瘠”下去,也能用“勤劳”使它“肥沃”起来。
40、一种颜色,生命的一瞬。执着地追求着永恒,一路失落,一路遗失,一路惘然,仍旧梦想,梦想„„
41、打开心的窗口,睁开敏锐的眼睛,莫让一切都随风。
42、别忘了,爱有多深路就有多长,只要有一个明天,就会有无穷无尽的希望。
43、温暖是无处不在的,温暖着自己,也温暖着别人。正如:送人玫瑰,手有余香。
44、我不一定在快乐地活着,但我一定是在追逐生活中的快乐。
45、记取昨天,是为了把握今天,更是为了掌握明天。
46、如果敌人让你生气,那说明你还没有胜他的把握。如果朋友让你生气,那说明你仍然在意他的友情。
47、日出东海落西山,愁也一天,喜也一天;遇事不钻牛角尖,人也舒坦,心也舒坦。
48、高三生活就是游离于满足与不满足之间的某种综合症!
49、过去在消逝,未来,才刚刚开始。无所谓对与错!50、时间是最大的小偷。当不能再拥有时,唯一能做的就是令自己不要忘记!
51、在幻变的生命里,岁月,原来是最大的小偷。
52、我们每个人每天都不知不觉失去些东西,与时间赛跑的我们永远是输家,也许应该坦然面对人生中失去的东西,在时 间的长河里我们其实抓不住任何东西。
53、世界上唯一你可以拥有的东西就是过程,而时间永远是流逝的。
54.无论是谁,所谓幸福,也只存在眼下一时。
有 人说爱是垣久忍耐,是奉献,是包容,是柔软地包裹一切的梦的外衣。是因为所爱的是天使而自己也要变得美好。可没有 人想过,温柔不能保护温柔,天真不能纵容天真,我的爱不高尚,不完美的。我站在黑暗里,永世也洗不掉身上的血腥,但我却仍骄傲,因为我守护的是一位微笑的天使
第二篇:精妙SQL语句
精妙SQL语句
说明:复制表(只复制结构,源表名:a 新表名:b)select * into b from a where 1<>1
说明:拷贝表(拷贝数据,源表名:a 目标表名:b)insert into b(a, b, c)select d,e,f from b; 说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b
说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 说明:日程安排提前五分钟提醒
select * from 日程安排 where datediff('minute',f开始时间,getdate())>5 说明:两张关联表,删除主表中已经在副表中没有的信息
delete from info where not exists(select * from infobz where info.infid=infobz.infid)
说明:--
SQL:
SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE
FROM TABLE1,(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
FROM(SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND
FROM TABLE2
WHERE TO_CHAR(UPD_DATE,'YYYY/MM')= TO_CHAR(SYSDATE, 'YYYY/MM'))X,(SELECT NUM, UPD_DATE, STOCK_ONHAND
FROM TABLE2
WHERE TO_CHAR(UPD_DATE,'YYYY/MM')=
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM')|| '/01','YYYY/MM/DD')1 FROM Handle a)
一个SQL语句的问题:行列转换 select * from v_temp 上面的视图结果如下: user_name role_name-------------------------系统管理员 管理员
feng 管理员
feng 一般用户
test 一般用户
想把结果变成这样: user_name role_name---------------------------系统管理员 管理员
feng 管理员,一般用户
test 一般用户
=================== create table a_test(name varchar(20),role2 varchar(20))insert into a_test values('李','管理员')insert into a_test values('张','管理员')insert into a_test values('张','一般用户')insert into a_test values('常','一般用户')
create function join_str(@content varchar(100))returns varchar(2000)as begin declare @str varchar(2000)set @str='' select @str=@str+','+rtrim(role2)from a_test where [name]=@content select @str=right(@str,len(@str)-1)return @str end go
--调用:
select [name],dbo.join_str([name])role2 from a_test group by [name]
--select distinct name,dbo.uf_test(name)from a_test 快速比较结构相同的两表
结构相同的两表,一表有记录3万条左右,一表有记录2万条左右,我怎样快速查找两表的不同记录?
============================ 给你一个测试方法,从northwind中的orders表取数据。select * into n1 from orders select * into n2 from orders
select * from n1 select * from n2
--添加主键,然后修改n1中若干字段的若干条
alter table n1 add constraint pk_n1_id primary key(OrderID)alter table n2 add constraint pk_n2_id primary key(OrderID)
select OrderID from(select * from n1 union select * from n2)a group by OrderID having count(*)> 1
应该可以,而且将不同的记录的ID显示出来。下面的适用于双方记录一样的情况,select * from n1 where orderid in(select OrderID from(select * from n1 union select * from n2)a group by OrderID having count(*)> 1)至于双方互不存在的记录是比较好处理的--删除n1,n2中若干条记录
delete from n1 where orderID in('10728','10730')delete from n2 where orderID in('11000','11001')
--*************************************************************--双方都有该记录却不完全相同
select * from n1 where orderid in(select OrderID from(select * from n1 union select * from n2)a group by OrderID having count(*)> 1)union--n2中存在但在n1中不存的在10728,10730 select * from n1 where OrderID not in(select OrderID from n2)union--n1中存在但在n2中不存的在11000,11001 select * from n2 where OrderID not in(select OrderID from n1) 四种方法取表里n到m条纪录:
1.select top m * into 临时表(或表变量)from tablename order by columnname--将top m笔插入 set rowcount n select * from 表变量 order by columnname desc
2.select top n * from(select top m * from tablename order by columnname)a order by columnname desc
3.如果tablename里没有其他identity列,那么: select identity(int)id0,* into #temp from tablename
取n到m条的语句为:
select * from #temp where id0 >=n and id0 <= m
如果你在执行select identity(int)id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行: exec sp_dboption 你的DB名字,'select into/bulkcopy',true
4.如果表里有identity属性,那么简单:
select * from tablename where identitycol between n and m 如何删除一个表中重复的记录?
create table a_dist(id int,name varchar(20))
insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')
exec up_distinct 'a_dist','id'
select * from a_dist
create procedure up_distinct(@t_name varchar(30),@f_key varchar(30))--f_key表示是分组字段﹐即主键字段 as begin declare @max integer,@id varchar(30),@sql varchar(7999),@type integer select @sql = 'declare cur_rows cursor for select '+@f_key+' ,count(*)from ' +@t_name +' group by ' +@f_key +' having count(*)> 1' exec(@sql)open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin
select @max = @max-1 set rowcount @max
select @type = xtype from syscolumns where id=object_id(@t_name)and name=@f_key if @type=56 select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+ @id if @type=167 select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+''''+ @id +'''' exec(@sql)fetch cur_rows into @id,@max end
close cur_rows deallocate cur_rows set rowcount 0 end
select * from systypes select * from syscolumns where id = object_id('a_dist') 查询数据的最大排序问题(只能用一条语句写)
CREATE TABLE hard(qu char(11),co char(11),je numeric(3, 0))
insert into hard values('A','1',3)insert into hard values('A','2',4)insert into hard values('A','4',2)insert into hard values('A','6',9)insert into hard values('B','1',4)insert into hard values('B','2',5)insert into hard values('B','3',6)insert into hard values('C','3',4)insert into hard values('C','6',7)insert into hard values('C','2',3)
要求查询出来的结果如下:
qu co je
---------------------------A 6 9 A 2 4 B 3 6 B 2 5 C 6 7 C 3 4
就是要按qu分组,每组中取je最大的前2位!而且只能用一句sql语句!!
select * from hard a where je in(select top 2 je from hard b where a.qu=b.qu order by je)
求删除重复记录的sql语句?
怎样把具有相同字段的纪录删除,只留下一条。例如,表test里有id,name字段
如果有name相同的记录 只留下一条,其余的删除。name的内容不定,相同的记录数不定。有没有这样的sql语句?
============================== A:一个完整的解决方案:
将重复的记录记入temp1表: select [标志字段id],count(*)into temp1 from [表名] group by [标志字段id] having count(*)>1
2、将不重复的记录记入temp1表: insert temp1 select [标志字段id],count(*)from [表名] group by [标志字段id] having count(*)=1
3、作一个包含所有不重复记录的表:
select * into temp2 from [表名] where 标志字段id in(select 标志字段id from temp1)
4、删除重复表: delete [表名]
5、恢复表:
insert [表名] select * from temp2
6、删除临时表: drop table temp1 drop table temp2 ================================ B: create table a_dist(id int,name varchar(20))
insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')
exec up_distinct 'a_dist','id'
select * from a_dist
create procedure up_distinct(@t_name varchar(30),@f_key varchar(30))--f_key表示是分组字段﹐即主键字段 as begin declare @max integer,@id varchar(30),@sql varchar(7999),@type integer select @sql = 'declare cur_rows cursor for select '+@f_key+' ,count(*)from ' +@t_name +' group by ' +@f_key +' having count(*)> 1' exec(@sql)open cur_rows
fetch cur_rows into @id,@max while @@fetch_status=0 begin
select @max = @max-1 set rowcount @max
select @type = xtype from syscolumns where id=object_id(@t_name)and name=@f_key if @type=56 select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+ @id if @type=167 select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+''''+ @id +'''' exec(@sql)fetch cur_rows into @id,@max end
close cur_rows deallocate cur_rows set rowcount 0 end
select * from systypes select * from syscolumns where id = object_id('a_dist') 行列转换--普通
假设有张学生成绩表(CJ)如下
Name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82
想变成
姓名 语文 数学 物理
张三 80 90 85 李四 85 92 82
declare @sql varchar(4000)set @sql = 'select Name'
select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end)['+Subject+']'
from(select distinct Subject from CJ)as a
select @sql = @sql+' from test group by name' exec(@sql)
行列转换--合并
有表A, id pid 1 1 1 2 1 3 2 1 2 2 3 1
如何化成表B: id pid 1 1,2,3 2 1,2 3 1
创建一个合并的函数
create function fmerg(@id int)returns varchar(8000)as begin
declare @str varchar(8000)set @str=''
select @str=@str+','+cast(pid as varchar)from 表A where id=@id set @str=right(@str,len(@str)-1)return(@str)End go
--调用自定义函数得到结果
select distinct id,dbo.fmerg(id)from 表A 如何取得一个数据表的所有列名
方法如下:先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOLUMN表中取得该数据表的所有列名。
SQL语句如下:
declare @objid int,@objname char(40)set @objname = 'tablename'
select @objid = id from sysobjects where id = object_id(@objname)
select 'Column_name' = name from syscolumns where id = @objid order by colid
或
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='users'
通过SQL语句来更改用户的密码
修改别人的,需要sysadmin role
EXEC sp_password NULL, 'newpassword', 'User'
如果帐号为SA执行EXEC sp_password NULL, 'newpassword', sa 怎么判断出一个表的哪些字段不允许为空?
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE='NO' and TABLE_NAME=tablename 如何在数据库里找到含有相同字段的表?
a.查已知列名的情况
SELECT b.name as TableName,a.name as columnname From syscolumns a INNER JOIN sysobjects b ON a.id=b.id AND b.type='U'
AND a.name='你的字段名字'
未知列名查所有在不同表出现过的列名
Select o.name As tablename,s1.name As columnname From syscolumns s1, sysobjects o Where s1.id = o.id And o.type = 'U' And Exists(Select 1 From syscolumns s2 Where s1.name = s2.name And s1.id <> s2.id)
查询第xxx行数据
假设id是主键:
select * from(select top xxx * from yourtable)aa where not exists(select 1 from(select top xxx-1 * from yourtable)bb where aa.id=bb.id)
如果使用游标也是可以的
fetch absolute [number] from [cursor_name] 行数为绝对行数
SQL Server日期计算
a.一个月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)b.本周的星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)c.一年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)d.季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)e.上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))f.去年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))g.本月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))h.本月的第一个星期一
select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
i.本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。
获取表结构[把 'sysobjects' 替换 成 'tablename' 即可]
SELECT CASE IsNull(I.name, '')When '' Then '' Else '*'
End as IsPK,Object_Name(A.id)as t_name, A.name as c_name,IsNull(SubString(M.text, 1, 254), '')as pbc_init, T.name as F_DataType,CASE IsNull(TYPEPROPERTY(T.name, 'Scale'), '')WHEN '' Then Cast(A.prec as varchar)
ELSE Cast(A.prec as varchar)+ ',' + Cast(A.scale as varchar)END as F_Scale,A.isnullable as F_isNullAble FROM Syscolumns as A JOIN Systypes as T
ON(A.xType = T.xUserType AND A.Id = Object_id('sysobjects'))LEFT JOIN(SysIndexes as I JOIN Syscolumns as A1
ON(I.id = A1.id and A1.id = object_id('sysobjects')and(I.status & 0x800)= 0x800 AND A1.colid <= I.keycnt))
ON(A.id = I.id AND A.name = index_col('sysobjects', I.indid, A1.colid))LEFT JOIN SysComments as M
ON(M.id = A.cdefault and ObjectProperty(A.cdefault, 'IsConstraint')= 1)ORDER BY A.Colid ASC
提取数据库内所有表的字段详细说明的SQL语句
SELECT
(case when a.colorder=1 then d.name else '' end)N'表名', a.colorder N'字段序号', a.name N'字段名',(case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then ''else '' end)N'标识',(case when(SELECT count(*)FROM sysobjects WHERE(name in(SELECT name FROM sysindexes
WHERE(id = a.id)AND(indid in(SELECT indid
FROM sysindexkeys
WHERE(id = a.id)AND(colid in(SELECT colid FROM syscolumns
WHERE(id = a.id)AND(name = a.name)))))))AND(xtype = 'PK'))>0 then '' else '' end)N'主键', b.name N'类型',a.length N'占用字节数',COLUMNPROPERTY(a.id,a.name,'PRECISION')as N'长度',isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0)as N'小数位数',(case when a.isnullable=1 then ''else '' end)N'允许空', isnull(e.text,'')N'默认值',isnull(g.[value],'')AS N'字段说明' FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join syscomments e on a.cdefault=e.id
left join sysproperties g
on a.id=g.id AND a.colid = g.smallid order by object_name(a.id),a.colorder
快速获取表test的记录总数[对大容量表非常有效]
快速获取表test的记录总数:
select rows from sysindexes where id = object_id('test')and indid in(0,1)
update 2 set KHXH=(ID+1)2 2行递增编号
update [23] set id1 = 'No.'+right('00000000'+id,6)where id not like 'No%' //递增
update [23] set id1= 'No.'+right('00000000'+replace(id1,'No.',''),6)//补位递增 delete from [1] where(id%2)=1 奇数
替换表名字段
update [1] set domurl = replace(domurl,'Upload/Imgswf/','Upload/Photo/')where domurl like '%Upload/Imgswf/%' 截位
SELECT LEFT(表名, 5)
下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:
DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
---创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'
---开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old(使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2)values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ‟%value1%‟---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count * as totalcount from table1
求和:select sum(field1)as sumvalue from table1
平均:select avg(field1)as avgvalue from table1
最大:select max(field1)as maxvalue from table1
最小:select min(field1)as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
其次,大家来看一些不错的sql语句
1、说明:复制表(只复制结构,源表名:a 新表名:b)(Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b)(Access可用)
insert into b(a, b, c)select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)(Access可用)
insert into b(a, b, c)select d,e,f from b in „具体数据库‟ where 条件
例子:..from b in '“&Server.MapPath(”.“)&”data.mdb“ &”' where..4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN(select d from b)或者: select a,b,c from a where a IN(1,2,3)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a)
select * from(SELECT a,b,c FROM a)T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法
select * from table1 where a [not] in(„值1‟,‟值2‟,‟值4‟,‟值6‟)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists(select * from table2 where table1.field1=table2.field1)
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where.....12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from(select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc)a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA)except(select a from tableB)except(select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'
21、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end)FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from(select top 15 * from table order by id asc)table_别名 order by id desc
随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:
Randomize
RNumber = Int(Rnd*499)+1
While Not objRec.EOF
If objRec(“ID”)= RNumber THEN
...这里是执行脚本...end if
objRec.MoveNext
Wend
这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?
采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:
Randomize
RNumber = Int(Rnd*499)+ 1
SQL = “SELECT * FROM Customers WHERE ID = ” & RNumber
set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & “ = ” & objRec(“ID”)& “ ” & objRec(“c_email”)
不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
再谈随机数
现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。
为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:
SQL = “SELECT * FROM Customers WHERE ID = ” & RNumber & “ OR ID = ” & RNumber2 & “ OR ID = ” & RNumber3
假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的ID 是自动生成的号码):
SQL = “SELECT * FROM Customers WHERE ID BETWEEN ” & RNumber & “ AND ” & RNumber & “+ 9”
注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。
随机读取若干条记录,测试过
Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysqlelect * From 表名 Order By rand()Limit n
Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)
语法elect table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where...使用SQL语句 用...代替过长的字符串显示
语法:
SQL数据库:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access数据库:SELECT iif(len(field)>2,left(field,2)+'...',field)FROM tablename;
Conn.Execute说明
Execute方法
该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
1.执行SQL查询语句时,将返回查询得到的记录集。用法为:
Set 对象变量名=连接对象.Execute(“SQL 查询语言”)
Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。
2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:
连接对象.Execute “SQL 操作性语句” [, RecordAffected][, Option]
·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
·Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。
·BeginTrans、RollbackTrans、CommitTrans方法
这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
BeginTrans和 CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。
常用SQL语句书写技巧(转)
关键词: SQL
SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实、最有效的手段,有时甚至是唯一的手段,比如在不允许大幅度修改现有数据库结构的情况下。
通过优化SQL语句提高查询性能的关键是:
l 根据实际需求情况,建立合适的索引; l 使用一切可能的方式去利用好索引,避免全表扫描;
l 尽量减少内存及数据I/O方面的开销
一、建立索引
(一)建立“适当”的索引,是快速查询的基础。
索引(index)是除表之外另一重要的、用户定义的存储在物理介质上的数据结构。当根据索引码的值搜索数据时,索引提供了对数据的快速访问。事实上,没有索引,数据库也能根据SELECT语句成功地检索到结果,但随着表变得越来越大,使用“适当”的索引的效果就越来越明显。注意,在这句话中,我们用了“适当”这个词,这是因为,如果使用索引时不认真考虑其实现过程,索引既可以提高也会破坏数据库的工作性能。
索引实际上是一种特殊的目录,SQL SERVER提供了两种索引:
l 聚集索引(clustered index,也称聚类索引、簇集索引)
我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
例如:
汉语字典中按拼音查某一个字,就是使用“聚集索引”,实际上,你根本用不着查目录,直接在字典正文里找,就能很快找到需要的汉字(假设你知道发音)。
l 非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)
我们把目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
例如:
汉语字典中按部首查某一个字,部首目录和正文一定要刻意的通过页码才能联系到一起,其顺序不是天然一致的。
聚集索引与非聚集索引的最大区别就在于:聚集索引是对原数据表进行排序,因此只要符合索引条件,就能够直接连续的读取数据记录,几乎可以达到对数据表的零扫描;而非聚集索引仅仅只是另外建了一张索引表,取数据的时候,从索引表取得结果后,还需要到指针所指的数据行读取相应数据,因此,在性能上,聚集索引会大大优于非聚集索引。
但是在一张表中,聚集索引只允许一个,是比较宝贵的,因此要尽可能的用于那些使用频率最高的索引上。另外,查询时必需要用到索引的起始列,否则索引无效。另外,起始列也必需是使用频繁的列,那样的索引性能才会达到最优化。
(二)表:何时应使用聚集索引或非聚集索引
动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序 ○ ○
返回某范围内的数据 ○
一个或极少不同值
小数目的不同值 ○
大数目的不同值 ○
频繁更新的列 ○
外键列 ○ ○
主键列 ○ ○
频繁修改索引列 ○
(三)索引建立的一些注意项
1、不要把聚集索引浪费在主键上,除非你只按主键查询
虽然SQL SERVER默认是在主键上建立聚集索引的,但实际应用中,这样做比较浪费。通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但这样做实用价值不大。
从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID 号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。聚集索引相对与非聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加宝贵,应该用在其他查询频率高的字段上。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会负作用,但对于查询速度并没有影响。
2、索引的建立要根据实际应用需求来进行
并非是在任何字段上简单地建立索引就能提高查询速度。聚集索引建立的规则大致是“既不能绝大多数都相同,又不能只有极少数相同”。举个例子,在公文表的收发日期字段上建立聚合索引是比较合适的。在政务系统中,我们每天都会收一些文件,这些文件的发文日期将会相同,在发文日期上建立聚合索引对性能的提升应该是相当大的。在群集索引下,数据物理上按顺序存于数据页上,重复值也排列在一起,因而在范围查找时,可以先找到这个范围的起末点,且只在这个范围内扫描数据页,避免了大范围扫描,提高了查询速度。
另一个相反的例子:比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就完全没必要建立索引。
3、在聚集索引中加入所有需要提高查询速度的字段,形成复合索引
根据一些实验的结果,我们可以得出一些可供参考的结论:
ü 仅用复合聚集索引的起始列作为查询条件和同时用到复合聚集索引的全部列的查询,速度是几乎一样的,甚至比后者还要快(在查询结果集数目一样的情况下);
ü 仅用复合聚集索引的非起始列作为查询条件的话,这个索引是不起任何作用的。
ü 复合聚集索引的所有列都用上,而且因为查询条件严格,查询结果少的话,会形成“索引覆盖”,性能可以达到最优。
ü 最重要的一点:无论是否经常使用复合聚合索引的其他列,其起始列一定要是使用最频繁的列。
4.根据实践得出的一些其他经验,特定情况下有效
ü 用聚合索引比用不是聚合索引的主键速度快;
ü 用聚合索引比用一般的主键作order by速度快,特别是在小数据量情况;
ü 使用聚合索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例减少,而无论聚合索引使用了多少个;
ü 日期列不会因为有分秒的输入而减慢查询速度;
ü 由于改变一个表的内容,将会引起索引的变化。频繁的insert,update,delete语句将导致系统花费较大的代价进行索引更新,引起整体性能的下降。一般来讲,在对查询性能的要求高于对数据维护性能要求时,应该尽量使用索引,否则,就要慎重考虑一下付出的代价。在某些极端情况下,可先删除索引,再对数据库表更新大量数据,最后再重建索引,新建立的索引总是比较好用。
二、编写优化的SQL语句,充分利用索引
下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。
SQL语句在提交给数据库进行操作前,都会经过查询分析阶段,SQLSERVER内置的查询优化器会分析查询条件的的每个部分,并判断这些条件是否符合扫描参数(SARG)的标准。只有当一个查询条件符合SARG的标准,才可以通过预先设置的索引,提升查询性能。
SARG的定义:用于限制搜索操作的一种规范,通常是指一个特定的匹配,一个确定范围内的匹配或者两个以上条件的AND连接。一般形式如下:
列名 操作符 <常数 或 变量> 或
<常数 或 变量> 操作符 列名
列名可以出现在操作符的一边,而常数或变量出现在操作符的另一边。如:
Name=‟张三‟
价格>5000
5000<价格
Name=‟张三‟ and 价格>5000
如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是说SQL SERVER必须对每一行都判断它是否满足WHERE子句中的所有条件,既进行全表扫描。所以,一个索引对于不满足SARG形式的表达式来说是无用的, 如:当查询条件为“价格*2 >5000”时,就无法利用建立在价格字段上的索引。
SQLSERVER内置了查询优化器,能将一些条件自动转换为符合SARG标准,如:将“价格*2 >5000” 转换为“价格 >2500/2 ”,以达到可以使用索引的目的,但这种转化不是100%可靠的,有时会有语义上的损失,有时转化不了。如果对“查询优化器”的工作原理不是特别了解,写出的SQL语句可能不会按照您的本意进行查询。所以不能完全依赖查询优化器的优化,建议大家还是利用自己的优化知识,尽可能显式的书写出符合SARG标准的 SQL语句,自行确定查询条件的构建方式,这样一方面有利于查询分析器分析最佳索引匹配顺序,另一方面也有利于今后重读代码。
介绍完SARG后,我们再结合一些实际运用中的例子来做进一步的讲解:
1、Like语句是否属于SARG取决于使用%通配符的样式
如:name like „张%‟,这就属于SARG
而:name like „%张‟ ,就不属于SARG
通配符%在字符串首字符的使用会导致索引无法使用,虽然实际应用中很难避免这样用,但还是应该对这种现象有所了解,至少知道此种用法性能是很低下的。
2、“非”操作符不满足SARG形式,使得索引无法使用
不满足SARG形式的语句最典型的情况就是包括非操作符的语句,如:NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE等。
下面是一个NOT子句的例子:
...where not(status ='valid')
not运算符也隐式的包含在另外一些逻辑运算符中,比如<>运算符。见下例:
...where status <>'invalid';
再看下面这个例子:
select * from employee where salary<>3000;
对这个查询,可以改写为不使用not:
select * from employee where salary<3000 or salary>3000;
虽然这两种查询的结果一样,但是第二种查询方案会比第一种查询方案更快些。第二种查询允许对salary列使用索引,而第一种查询则不能使用索引。
3、函数运算不满足SARG形式,使得索引无法使用
例:下列SQL条件语句中的列都建有恰当的索引,但执行速度却非常慢:
select * from record where substring(card_no,1,4)=′5378′(13秒)
select * from record where amount/30< 1000(11秒)
select * from record where convert(char(10),date,112)=′19991201′(10秒)
分析:
where子句中对列的任何操作结果都是在SQL运行时逐列计算得到的,因此它不得不进行全表扫描,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被SQL优化器优化,使用索引,避免表搜索,因此将SQL重写成下面这样:
select * from record where card_no like ′5378%′(< 1秒)
select * from record where amount < 1000*30(< 1秒)
select * from record where date= ′1999/12/01′(< 1秒)
你会发现SQL明显快很多
4、尽量不要对建立了索引的字段,作任何的直接处理
select * from employs where first_name + last_name ='beill cliton';
无法使用索引
改为:
select * from employee where
first_name = substr('beill cliton',1,instr('beill cliton',' ')-1)and
last_name = substr('beill cliton',instr('beill cliton',' ')+1)
则可以使用索引
5、不同类型的索引效能是不一样的,应尽可能先使用效能高的
比如:数字类型的索引查找效率高于字符串类型,定长字符串char,nchar的索引效率高于变长字符串varchar,nvarchar的索引。
应该将
where username='张三' and age>20
改进为
where age>20 and username='张三'
注意:
此处,SQL的查询分析优化功能可以做到自动重排条件顺序,但还是建议预先手工排列好。
6、尽量不要使用 is null 与 is not null作为查询条件
任何包含null值的列都将不会被包含在索引中,如果某列数据中存在空值,那么对该列建立索引的性能提升是值得怀疑的,尤其是将null作为查询条件的一部分时。建议一方面避免使用is null和is not null, 另一方面不要让数据库字段中存在null, 即使没有内容,也应利用缺省值,或者手动的填入一个值,如:‟‟ 空字符串。
7、某些情况下IN 的作用与OR 相当,且都不能充分利用索引
例:表stuff有200000行,id_no上有非群集索引,请看下面这个SQL:
select count(*)from stuff where id_no in(′0′,′1′)(23秒)
where条件中的′in′在逻辑上相当于′ or′,所以语法分析器会将in(′0′,′1′)转化为id_no =′0′ or id_no=′1′来执行。我们期望它会根据每个or子句分别查找,再将结果相加,这样可以利用id_no上的索引;但实际上,它却采用了“OR策略”,即先取出满足每个or子句的行,存入临时数据库的工作表中,再建立唯一索引以去掉重复行,最后从这个临时表中计算结果。因此,实际过程没有利用id_no 上索引,并且完成时间还要受tempdb数据库性能的影响。
实践证明,表的行数越多,工作表的性能就越差,当stuff有620000行时,执行时间会非常长!如果确定不同的条件不会产生大量重复值,还不如将or子句分开:
select count(*)from stuff where id_no=′0′
select count(*)from stuff where id_no=′1′
得到两个结果,再用union作一次加法合算。因为每句都使用了索引,执行时间会比较短,select count(*)from stuff where id_no=′0′
union
select count(*)from stuff where id_no=′1′
从实践效果来看,使用union在通常情况下比用or的效率要高的多,而exist关键字和in关键字在用法上类似,性能上也类似,都会产生全表扫描,效率比较低下,根据未经验证的说法,exist可能比in要快些。
8、使用变通的方法提高查询效率
like关键字支持通配符匹配,但这种匹配特别耗时。例如:select * from customer where zipcode like “21_ _ _”,即使在zipcode字段上已建立了索引,在这种情况下也可能还是采用全表扫描方式。如果把语句改为:select * from customer where zipcode >“21000”,在执行查询时就会利用索引,大大提高速度。但这种变通是有限制的,不应引起业务意义上的损失,对于邮政编码而言,zipcode like “21_ _ _” 和 zipcode >“21000” 意义是完全一致的。
9、组合索引的高效使用
假设已在date,place,amount三个字段上建立了组合索引
select count(*)from record
where date > ′19991201′ and date < ′19991214′ and amount > 2000
(< 1秒)
select date,sum(amount)from record group by date
(11秒)
select count(*)from record
where date > ′19990901′ and place in(′BJ′,′SH′)
(< 1秒)
这是一个设置较合理的组合索引。它将date作为前导列,使每个SQL都可以利用索引,并且在第一和第三个SQL中形成了索引覆盖,因而性能达到了最优。如果索引不便于更改,修正SQL中的条件顺序以配合索引顺序也是可行的。
10、order by按聚集索引列排序效率最高
排序是较耗时的操作,应尽量简化或避免对大型表进行排序,如缩小排序的列的范围,只在有索引的列上排序等等。
我们来看:(gid是主键,fariqi是聚合索引列)
select top 10000 gid,fariqi,reader,title from tgongwen
用时:196 毫秒。扫描计数 1,逻辑读 289 次,物理读 1 次,预读 1527 次。
select top 10000 gid,fariqi,reader,title from tgongwen order by gid asc
用时:4720毫秒。扫描计数 1,逻辑读 41956 次,物理读 0 次,预读 1287 次。
select top 10000 gid,fariqi,reader,title from tgongwen order by gid desc
用时:4736毫秒。扫描计数 1,逻辑读 55350 次,物理读 10 次,预读 775 次。
select top 10000 gid,fariqi,reader,title from tgongwen order by fariqi asc
用时:173毫秒。扫描计数 1,逻辑读 290 次,物理读 0 次,预读 0 次。
select top 10000 gid,fariqi,reader,title from tgongwen order by fariqi desc
用时:156毫秒。扫描计数 1,逻辑读 289 次,物理读 0 次,预读 0 次。
从以上我们可以看出,不排序的速度以及逻辑读次数都是和“order by 聚集索引列” 的速度是相当的,但这些都比“order by 非聚集索引列”的查询速度是快得多的。
同时,按照某个字段进行排序的时候,无论是正序还是倒序,速度是基本相当的。
三、关于节省数据查询系统开销方面的措施
1、使用TOP尽量减少取出的数据量
TOP是SQL SERVER中用来提取前几条或前某个百分比数据的关键词。
select top 20 gid,fariqi,reader,title from tgongwen order by gid desc select top 60 percent gid,fariqi,reader,title from tgongwen order by gid desc
在实际的应用中,应该经常利用top 剔除掉不必要的数据,只保留必须的数据集合。这样不仅可以减少数据库逻辑读的次数,还能避免不必要的内存浪费,对系统性能的提升都是有好处的。
2、字段提取要按照“需多少、提多少”的原则,避免“select *”
这个举个例子:
select top 10000 gid,fariqi,reader,title from tgongwen order by gid desc
用时:4673毫秒
select top 10000 gid,fariqi,title from tgongwen order by gid desc
用时:1376毫秒
select top 10000 gid,fariqi from tgongwen order by gid desc
用时:80毫秒
由此看来,字段大小越大,数目越多,select所耗费的资源就越多,比如取int类型的字段就会比取char的快很多。我们每少提取一个字段,数据的提取速度就会有相应的提升。提升的幅度根据舍弃的字段的大小来判断。
3、count(*)与 count(字段)方法比较
我们来看一些实验例子(gid为Tgongwen的主键):
select count(*)from Tgongwen
用时:1500毫秒
select count(gid)from Tgongwen
用时:1483毫秒
select count(fariqi)from Tgongwen
用时:3140毫秒
select count(title)from Tgongwen 用时:52050毫秒
从以上可以看出,用count(*)和用 count(主键)的速度是相当的,而count(*)却比其他任何除主键以外的字段汇总速度要快,而且字段越长,汇总速度就越慢。如果用 count(*),SQL SERVER会自动查找最小字段来汇总。当然,如果您直接写count(主键)将会来的更直接些。
4、有嵌套查询时,尽可能在内层过滤掉数据
如果一个列同时在主查询和where子句中出现,很可能当主查询中的列值改变之后,子查询必须重新查询一次。而且查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。
5、多表关联查询时,需注意表顺序,并尽可能早的过滤掉数据
在使用Join进行多表关联查询时候,应该使用系统开销最小的方案。连接条件要充份考虑带有索引的表、行数多的表,并注意优化表顺序;说的简单一点,就是尽可能早的将之后要做关联的数据量降下来。
一般情况下,sqlserver 会对表的连接作出自动优化。例如:
select name,no from A
join B on A.id=B.id
join C on C.id=A.id
where name='wang'
尽管A表在From中先列出,然后才是B,最后才是C。但sql server可能会首先使用c表。它的选择原则是相对于该查询限制为单行或少数几行,就可以减少在其他表中查找的总数据量。绝大多数情况下,sql server 会作出最优的选择,但如果你发觉某个复杂的联结查询速度比预计的要慢,就可以使用SET FORCEPLAN语句强制sql server按照表出现顺序使用表。如上例加上:SET FORCEPLAN ON…….SET FORCEPLAN OFF 表的执行顺序将会按照你所写的顺序执行。在查询分析器中查看2种执行效率,从而选择表的连接顺序。SET FORCEPLAN的缺点是只能在存储过程中使用。
小结:
Ø 聚集索引比较宝贵,应该用在查询频率最高的地方;
Ø 在数据为“既不是绝大多数相同,也不是极少数相同”状态时,最能发挥聚集索引的潜力;
Ø 复合索引的设置和使用要注意保持顺序一致;
Ø 条件子句的表达式最好符合SARG规范,是可利用索引的;
Ø 任何对列的操作都导致全表扫描,如数据库函数、计算表达式等,查询时应尽可能将操作移至等号的某一边;
Ø 要注意含有null值时,是不能充分利用索引的;
Ø exist, in、or等子句常会使索引失效;
如果不产生大量重复值,可以考虑把子句拆开,再用union拼合;
Ø 排序时应充分利用带索引的字段;
Ø 尽可能早,快的过滤掉无用的数据,只将必须的数据带到后续的操作中去
从前面讲叙的内容可以看出,SQL语句优化的实质就是在结果正确的前提下,用分析优化器可以识别的SARG规范语句,充份利用索引,减少数据的I/O次数,尽量避免全表扫描的发生。
以上内容有些是指导性的理论原则,有些是实际摸索的经验,大家在使用时应灵活处理,根据实际情况,选择合适的方法。本文中列举的实验数据仅作比对用,不具备普遍意义。大家在实际项目中,应充分利用性能监测和分析工具(如SQLSERVER带的相关工具)来检验自己的优化效果。
此外,还有很重要的一点要提醒大家,同样复杂的数据操作,在SQLSERVER数据库级别完成的代价要远远小于在应用端用程序代码完成的代价,所以建议大家全面,深入的学习SQL语法中重要关键字的应用,如:Group By,Having等,尽量把数据操作任务放在数据库系统中完成。数据库应用系统的性能优化是一个复杂的过程,上述这些只是在SQL语句层次的一种体现,深入研究还会涉及数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计等等,这些将在以后的文章中详细论述
如何获得sql查询侯满足条件的记录数
select kch into :ls_kch from cj_cjb where kch = :s_kch and kscj < 60 using ltr;
请问如何知道符合条件kch的纪录数。SELECT KCH, COUNT(*)INTO :ls_kch, :ll_count cj_cjb WHERE kch = :s_kch AND kscj < 60 UAING ltr;
ll_count
SRY少了个FROM
执行完后看:
sqlca.sqlnrows
呵呵select只能返回一条记录啊,要是有多条记录符合条件pb是会报错的。
are2000(乌鸦与土狗)说的对呀
只是想知道符合条件的纪录数,直接这样写:
SELECT COUNT(*)
INTO :ll_count
from cj_cjb
WHERE kch = :s_kch
AND kscj < 60
UAING sqlca;
楼上说的对啊
呵呵
多行的话要用游标的
用游标取的时候,在for 循环中加个变量就可以知道条数,数据也取出来了~~
如何查询SQLSERVER数据库DB1中所有表的记录数?
use DB1
if object_id('tempdb..##')is not null drop table ##
select cast(null as sysname)as 表名称, 1 as 记录数 into ## where 1 = 0
declare @TableName sysname
declare testcur cursor for select [name] from sysobjects where xtype ='U' order by [name]
open testcur
fetch next from testcur into @TableName
while @@fetch_status = 0
begin
exec('insert into ## select ''' + @TableName + ''',(select count(1)from ' + @TableName + ')')
fetch next from testcur into @TableName end
close testcur
deallocate testcur
select * from ##
drop table ##
Pubwin EP数据备份:
SQL server2000版本重装前,需要备份哪些数据
SQL server2000版本重装前,需要备份数据库文件,文件路径为: HintsoftPubwinServerdatabase 下的“local_Data.MDF”和“local_log.LDF”
除了备份数据库文件以外还有就是需要备份数据库的备份文件 其路径为 : HintsoftPubwinServerappServserverwebappsNetCafebackuplongtermdata 还有一个方面需要注意的是 网吧的会员是否存在头像与身份证证件照 如有的话 请备份
HintsoftPubwinServerappServserverwebappsNetCafeheadphotos HintsoftPubwinServerappServserverwebappsNetCafephotos ; 备份好后,重新安装将备份文件放置相应的目录即可。如何防止远程修改数据库
一、屏蔽1433端口(以win2000为例): 设置安全策略:
“控制面板”—〉“管理工具”—〉“本地安全策略”
选择IP安全策略—〉创建IP安全策略—〉建立名称—〉“激活默认响应规则”下一步—〉初始身份验证方法选择“win2000默认(V5)”—〉弹出的警告界面直接确认—〉完成建立安全策略。
选择你新建的策略—〉属性—〉添加—〉选择“此规则不指定隧道” —〉网络类型选择“所有网络连接”—〉身份验证方法“win2000默认(V5)” —〉弹出的警告界面直接确认—〉“所有IP通讯”—〉筛选器选择“要求安全设置”—〉继续下一步完成选中“所有 IP 通讯”—〉点“编辑”按钮,打开“IP筛选器列表”—〉继续点“编辑”按钮,打开“筛选器 属性” —〉在“寻址”中,源地址选择“任何IP地址”,目的地址选择“我的IP地址”,同时选中“镜像”—〉在“协议”中,协议选择“TCP”,设置协议端口为 “从任意端口”到“到此端口:1433” —〉确定,为了安全起见,最好再新建一个IP筛选器屏蔽1434端口。
完成上面配置后,在刚配置的策略点击右键,选择指派,完成后重新启动机器。如何验证数据库的1433已经不能连接?
1)局域网内找一个机器(非本机)安装企业管理,添加注册刚刚配制过安全策略的服务器,应该是那个等待注册的画面,状态中显示:“正在验证注册信息”或拒绝连接或服务未开启的提示。
2)局域网内找一个机器(非本机),在dos控制台下,输入telnet EP服务器IP 1433 如果安全策略应用成功的话,应该不能够连接,会出现如下的话:正在连接到xxxxxxx...无法打开到主机的连接 在端口 1433 : 连接失败。如果应用安全策略失败,则能够连接成功。
二、关闭不安全的服务
第一步只是屏蔽了其它机器连接数据库的端口,但是操作系统本身还存在一些漏洞,这些漏洞同样会导致数据库不安全。可以运行services.msc进入本地服务管理,禁用WMI和Server服务(屏蔽WMI和 IPC共享漏洞),但是有些网吧需要用到Server服务的部分功能,所以对于Server服务,可以使用以下两种较为灵活的方法来屏蔽: 1)批处理自启动法:
打开记事本,输入以下内容(记得每行最后要回车): net share ipc$ /delete net share admin$ /delete net share c$ /delete net share d$ /delete net share e$ /delete ……(你有几个硬盘分区就写几行这样的命令)
保存为NotShare.bat(注意后缀!),然后把这个批处理文件拖到“程序”→“启动”项,这样每次开机就会运行它,也就是通过net命令关闭共享。
如果哪一天你需要开启某个或某些共享,只要重新编辑这个批处理文件即可(把相应的那个命令行删掉)。2)注册表改键值法 “ 开始”→“运行”输入“regedit”确定后,打开注册表编辑器,找到“HKEY_LOCAL_MACHINESYSTEM CurrentControlSetServiceslanmanserverparameters”项,双击右侧窗口中的 “AutoShareServer”项将键值由1改为0,这样就能关闭硬盘各分区的共享。如果没有AutoShareServer项,可自己新建一个再改键值。然后还是在这一窗口下再找到“AutoShareWks”项,也把键值由1改为0,关闭admin$共享。最后到 “HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa”项处找到 “restrictanonymous”,将键值设为1,关闭IPC$共享。
PUBWIN后台网页应该映射那个端口? 8443,443
sql server多表关联update
UPDATE Tab1 SET a.Name = b.Name FROM Tab1 a,Tab2 b WHERE a.ID = b.ID
批量insert数据
insert into student(sno,sname,ssex,sage,sdept)select '95001','李勇','男','20','cs' union select '95002','刘晨','女','19','is' union select '95003','王敏','女','18','ma' union select '95004','张立','男','19','is'
第三篇:精妙SQL语句收集
SQL编程经典-精妙SQL语句收集
一、基础
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server---创建 备份数据的 device USE master
EXEC sp_addumpdevice ’disk’, ’testBack’, ’c:mssql7backupMyNwind_1.dat’
---开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:
A:create table tab_new like tab_old(使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2)values(value1,value2)删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’---like的语法很精妙,查资料!排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1)as sumvalue from table1 平均:select avg(field1)as avgvalue from table1 最大:select max(field1)as maxvalue from table1 最小:select min(field1)as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来 自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接 A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
二、提升
1、说明:复制表(只复制结构,源表名:a 新表名:b)(Access可用)法一:select * into b from a where 1<>1 法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b)(Access可用)insert into b(a, b, c)select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)(Access可用)insert into b(a, b, c)select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in ’“&Server.MapPath(”.“)&”data.mdb“ &”’ where..4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN(select d from b)或者: select a,b,c from a where a IN(1,2,3)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a)
select * from(SELECT a,b,c FROM a)T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法
select * from table1 where a [not] in(‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists(select * from table2 where table1.field1=table2.field1)
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where.....12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff(’minute’,f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from(select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc)a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于**每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA)except(select a from tableB)except(select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名 select name from sysobjects where type=’U’
21、说明:列出表里的所有的
select name from syscolumns where id=object_id(’TableName’)
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when ’A’ then pcs else 0 end),sum(case vender when ’C’ then pcs else 0 end),sum(case vender when ’B’ then pcs else 0 end)FROM tablename group by type 显示结果:
type vender pcs 电脑 A 1 电脑 A 1 光盘 B 2 光盘 A 2 手机 B 3 手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from(select top 15 * from table order by id asc)table_别名 order by id desc
三、技巧1、1=1,1=2的使用,在SQL语句组合时用的较多
“where 1=1” 是表示选择全部 “where 1=2”全部不选,如:
if @strWhere!=’’
begin
set @strSQL = ’select count(*)as Total from *’ + @tblName + ’+ where ’ + @strWhere end else begin
set @strSQL = ’select count(*)as Total from *’ + @tblName + ’+’ end
我们可以直接写成
set @strSQL = ’select count(*)as Total from *’ + @tblName + ’+ where 1=1 安定 ’+ @strWhere
2、收缩数据库--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG--收缩数据和日志
DBCC SHRINKDB DBCC SHRINKFILE
3、压缩数据库
dbcc shrinkdatabase(dbname)
4、转移数据库给新用户以已存在用户权限
exec sp_change_users_login ’update_one’,’newname’,’oldname’
go
5、检查备份集
RESTORE VERIFYONLY from disk=’E:dvbbs.bak’
6、修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER GO
DBCC CHECKDB(’dvbbs’,repair_allow_data_loss)WITH TABLOCK GO
ALTER DATABASE [dvbbs] SET MULTI_USER GO
7、日志清除 SET NOCOUNT ON
DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT
USE tablename--要操作的数据库名
SELECT @LogicalFileName = ’tablename_log’,--日志文件名
@MaxMinutes = 10,--Limit on time allowed to wrap log.@NewSize = 1--你想设定的日志文件的大小(M)
--Setup / initialize
DECLARE @OriginalSize int SELECT @OriginalSize = size FROM sysfiles
WHERE name = @LogicalFileName
SELECT ’Original Size of ’ + db_name()+ ’ LOG is ’ +
CONVERT(VARCHAR(30),@OriginalSize)+ ’ 8K pages or ’ + CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+ ’MB’
FROM sysfiles
WHERE name = @LogicalFileName CREATE TABLE DummyTrans
(DummyColumn char(8000)not null)
DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255)SELECT @StartTime = GETDATE(),@TruncLog = ’BACKUP LOG ’ + db_name()+ ’ WITH TRUNCATE_ONLY’
DBCC SHRINKFILE(@LogicalFileName, @NewSize)EXEC(@TruncLog)
--Wrap the log if necessary.WHILE @MaxMinutes > DATEDIFF(mi, @StartTime, GETDATE())--time has not expired AND @OriginalSize =(SELECT size FROM sysfiles WHERE name = @LogicalFileName)AND(@OriginalSize * 8 /1024)> @NewSize BEGIN--Outer loop.SELECT @Counter = 0
WHILE((@Counter < @OriginalSize / 16)AND(@Counter < 50000))BEGIN--update
INSERT DummyTrans VALUES(’Fill Log’)DELETE DummyTrans
SELECT @Counter = @Counter + 1 END
EXEC(@TruncLog)END
SELECT ’Final Size of ’ + db_name()+ ’ LOG is ’ + CONVERT(VARCHAR(30),size)+ ’ 8K pages or ’ + CONVERT(VARCHAR(30),(size*8/1024))+ ’MB’ FROM sysfiles
WHERE name = @LogicalFileName DROP TABLE DummyTrans SET NOCOUNT OFF
8、说明:更改某个表
exec sp_changeobjectowner ’tablename’,’dbo’
9、存储更改全部表
CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch @OldOwner as NVARCHAR(128), @NewOwner as NVARCHAR(128)AS
DECLARE @Name as NVARCHAR(128)DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR select ’Name’ = name,’Owner’ = user_name(uid)from sysobjects
where user_name(uid)=@OldOwner order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner WHILE(@@FETCH_STATUS=0)BEGIN
if @Owner=@OldOwner begin
set @OwnerName = @OldOwner + ’.’ + rtrim(@Name)exec sp_changeobjectowner @OwnerName, @NewOwner end
--select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner END
close curObject
deallocate curObject GO
10、SQL SERVER中直接循环写入数据
declare @i int set @i=1 while @i<30 begin
insert into test(userid)values(@i)set @i=@i+1 end
第四篇:Oracle SQL精妙SQL语句讲解
SQL*PLUS界面:
登录:输入SQLPLUS回车;输入正确的ORACLE用户名并回车;输入用户口令并回车,显示提示符:SQL>
退出:输入EXIT即可。
2)命令的编辑与运行:
在命令提示符后输入SQL命令并运行,以分号结束输入;以斜杠结束输入;以空行结束输入;
利用SQL缓冲区进行PL/SQL块的编辑和运行;
利用命令文件进行PL/SQL块的编辑和运行。
数据库查询
用SELECT语句从表中提取查询数据。语法为
SELECT [DISTINCT] {column1,column2,…} FROM tablename WHERE {conditions} GROUP BY {conditions} ORDER BY {expressions} [ASC/DESC];
说明:SELECT子句用于指定检索数据库的中哪些列,FROM子句用于指定从哪一个表或视图中检索数据。
SELECT中的操作符及多表查询WHERE子句。(LIKE,IS,…)
WHERE子句中的条件可以是一个包含等号或不等号的条件表达式,也可以是一个含有IN、NOT IN、BETWEEN、LIKE、IS NOT NULL等比较运算符的条件式,还可以是由单一的条件表达通过逻辑运算符组合成复合条件。
ORDER BY 子句
ORDER BY 子句使得SQL在显示查询结果时将各返回行按顺序排列,返回行的排列顺序由ORDER BY 子句指定的表达式的值确定。
连接查询
利用SELECT语句进行数据库查询时,可以把多个表、视图的数据结合起来,使得查询结果的每一行中包含来自多个表达式或视图的数据,这种操作被称为连接查询。
连接查询的方法是在SELECT命令的FROM子句中指定两个或多个将被连接查询的表或视图,并且在WHERE子句告诉ORACLE如何把多个表的数据进行合并。根据WHERE子句中的条件表达式是等还是不等式,可以把连接查询分为等式连接和不等式连接。
子查询
如果某一个SELECT命令(查询1)出现在另一个SQL命令(查询2)的一个子句中,则称查询1是查询2的子查询。
基本数据类型(NUMBER,VARCHAR2,DATE)O
RACEL支持下列内部数据类型:
VARCHAR2 变长字符串,最长为2000字符。
NUMBER 数值型。
LONG 变长字符数据,最长为2G字节。
DATE 日期型。
RAW 二进制数据,最长为255字节。
LONG RAW 变长二进制数据,最长为2G字节。
ROWID 二六进制串,表示表的行的唯一地址。
CHAR 定长字符数据,最长为255。
常用函数用法:
一个函数类似于一个算符,它操作数据项,返回一个结果。函数在格式上不同于算符,它个具有变元,可操作0个、一个、二个或多个变元,形式为:
函数名(变元,变元,…)
函数具有下列一般类形:
单行函数
分组函数
单行函数对查询的表或视图的每一行返回一个结果行。它有数值函数,字符函数,日期函数,转换函数等。
分组函数返回的结果是基于行组而不是单行,所以分组函数不同于单行函数。在许多分组函数中可有下列选项:
DISTRNCT 该选项使分组函数只考虑变元表达式中的不同值。
ALL该选项使分组函数考虑全部值,包含全部重复。
全部分组函数(除COUNT(*)外)忽略空值。如果具有分组函数的查询,没有返回行或只有空值(分组函数的变元取值的行),则分组函数返回空值。
5、数据操纵语言命令:
数据库操纵语言(DML)命令用于查询和操纵模式对象中的数据,它不隐式地提交当前事务。它包含UPDATE、INSERT、DELETE、EXPLAIN PLAN、SELECT和LOCK TABLE 等命令。下面简单介绍一下:
1)UPDATE tablename SET {column1=expression1,column2=expression2,…} WHERE {conditions};
例如:S QL>UPDATE EMP
SET JOB =’MANAGER’
WHERE ENAME=’MAPTIN’;
SQL >SELECT * FROM EMP;
UPDATE子句指明了要修改的数据库是EMP,并用WHERE子句限制了只对名字(ENAME)为’MARTIN’的职工的数据进行修改,SET子句则说明修改的方式,即把’MARTION’的工作名称(JOB)改为’MARAGER’.2)INSERT INTO tablename {column1,column2,…} VALUES {expression1,expression2,…};
例如:SQL>SELECT INTO DEPT(DNAME,DEPTNO)
VALUES(‘ACCOUNTING’,10)
3)DELETE FROM tablename WHERE {conditions};
例如:SQL>DELETE FROM EMP
WHERE EMPNO = 7654;
DELETE命令删除一条记录,而且DELETE命令只能删除整行,而不能删除某行中的部分数据.4)事务控制命令
提交命令(COMMIT):可以使数据库的修改永久化.设置AUTOCOMMIT为允许状态:SQL >SET AUTOCOMMIT ON;
回滚命令(ROLLBACK):消除上一个COMMIT命令后的所做的全部修改,使得数据库的内容恢复到上一个COMMIT执行后的状态.使用方法是:
SQL>ROLLBACK;
创建表、视图、索引、同义词、用户。、表是存储用户数据的基本结构。
建立表主要指定义下列信息:
列定义
完整性约束
表所在表空间
存储特性
可选择的聚集
从一查询获得数据
语法如下:CREATE TABLE tablename
(column1 datatype [DEFAULT expression] [constraint], column1 datatype [DEFAULT expression] [constraint], ……)
[STORAGE子句] [其他子句…];
例如:
SQL>CREATE TABLE NEW_DEPT(DPTNO NUMBER(2), DNAME CHAR(6), LOC CHAR(13);
更改表作用:
增加列
增加完整性约束
重新定义列(数据类型、长度、缺省值)
修改存储参数或其它参数
使能、使不能或删除一完整性约束或触发器
显式地分配一个范围
2)、视图
视图是一个逻辑表,它允许操作者从其它表或视图存取数据,视图本身不包含数据。视图所基于的表称为基表。
引入视图有下列作用:
提供附加的表安全级,限制存取基表的行或/和列集合。
隐藏数据复杂性。
为数据提供另一种观点。
促使ORACLE的某些操作在包含视图的数据库上执行,而不在另一个数据库上执行。
3)、索引
索引是种数据库对象。对于在表或聚集的索引列上的每一值将包含一项,为行提供直接的快速存取。在下列情况ORACLE可利用索引改进性能:
按指定的索引列的值查找行。
按索引列的顺序存取表。
建立索引: CREATE [UNIQUE] INDEX indexname ON tablename(column ,。。);
例如:SQL>CREAT INDEX IC_EMP
ON CLUSTER EMPLOYEE
4)、同义词
同义词:为表、视图、序列、存储函数、包、快照或其它同义词的另一个名字。使用同义词为了安全和方便。对一对象建立同义词可有下列好处:
引用对象不需指出对象的持有者。
引用对象不需指出它所位于的数据库。
为对象提供另一个名字。
建立同义词:
CREATE SYNONYM symnon_name FOR [username.]tablename;
例如:CREAT PUBLIC SYNONYM EMP
FOR SCOTT.EMP @SALES
5)、用户
CREATE USER username IDENTIFIED BY password;
例如:SQL>CREATE USER SIDNEY
IDENTIFIED BY CARTON;
Oracle扩展PL/SQL简介
PL/SQL概述。
PL/SQL是Oracle对SQL规范的扩展,是一种块结构语言,即构成一个PL/SQL程序的基本单位(过程、函数和无名块)是逻辑块,可包含任何数目的嵌套了快。这种程序结构支持逐步求精方法解决问题。一个块(或子块)将逻辑上相关的说明和语句组合在一起,其形式为:
DECLARE
---说明
BEGIN
---语句序列
EXCEPTION
---例外处理程序
END;
它有以下优点:
支持SQL;
生产率高;
性能好;
可称植性;
与ORACLE集成.PL/SQL体系结构
PL/SQL运行系统是种技术,不是一种独立产品,可认为这种技术是PL/SQL块和子程序的一种机,它可接收任何有效的PL/SQL块或子程序。如图所示:
PL/SQL机可执行过程性语句,而将SQL语句发送到ORACLE服务器上的SQL语句执行器。在ORACLE预编译程序或OCI程序中可嵌入无名的PL/SQL块。如果ORACLE具有PROCEDURAL选件,有名的PL/SQL块(子程序)可单独编译,永久地存储在数据库中,准备执行。
PL/SQL基础:
PL/SQL有一字符集、保留字、标点、数据类型、严密语法等,它与SQL有相同表示,现重点介绍。
1)、数据类型:如下表所示
数据类型 子类型
纯量类型 数值 BINARY_INTEGER NATURAL,POSITIVE
NUMBER DEC,DECIMAL,DOUBLE PRECISION,PLOAT,INTEGER,INT,NUMERIC,REAL,SMALLINT
字符 CHAR CHARACTER,STRING
VARCHAR2 VARCHAR
LONG
LONG RAW
RAW
RAWID
逻辑 BOOLEAN
日期 DATE
组合 类型 记录 RECORD
表 TABLE
2)、变量和常量
在PL/SQL程序中可将值存储在变量和常量中,当程序执行时,变量的值可以改变,而常量的值不能改变。
3)、程序块式结构:
DECLARE
变量说明部分;
BEGIN
执行语句部分;
[EXCEPTION
例外处理部分;] END;控制语句:
分支语句:
IF condition THEN
Sequence_of_statements;
END IF;
IF condition THEN
Sequence_of_statement1;
ELSE
Sequence_of_statement2;
END IF;
IF condition1 THEN
Sequence_of_statement1;
ELSIF condition2 THEN
Sequence_of_statement2;
ELSIF condition3 THEN
Sequence_of_statement3;
END IF;
循环语句:
LOOP
Sequence_of_statements;
IF condition THEN
EXIT;
END IF;
END LOOP;
WHILE condition LOOP
Sequence_of_statements;
END LOOP;
FOR counter IN lower_bound..higher_bound LOOP
Sequence_of_statements;
END LOOP;
子程序:
存储过程:
CREATE PROCEDURE 过程名(参数说明1,参数说明2,[局部说明]
BEGIN
执行语句;
END 过程名;
。)IS。
存储函数:
CREATE FUNCTION 函数名(参数说明1,参数说明2。。)RETURN 类型 IS [局部说明] BEGIN
执行语句;
END 函数名
Oracle SQL精妙SQL语句讲解
好东西,大家赶紧收藏吧~~~
--行列转换 行转列
DROP TABLE t_change_lc;CREATE TABLE t_change_lc(card_code VARCHAR2(3), q NUMBER, bal NUMBER);
INSERT INTO t_change_lc
SELECT '001' card_code, ROWNUM q, trunc(dbms_random.VALUE * 100)bal FROM dual CONNECT BY ROWNUM <= 4 UNION
SELECT '002' card_code, ROWNUM q, trunc(dbms_random.VALUE * 100)bal FROM dual CONNECT BY ROWNUM <= 4;
SELECT * FROM t_change_lc;
SELECT a.card_code,SUM(decode(a.q, 1, a.bal, 0))q1,SUM(decode(a.q, 2, a.bal, 0))q2,SUM(decode(a.q, 3, a.bal, 0))q3,SUM(decode(a.q, 4, a.bal, 0))q4
FROM t_change_lc a GROUP BY a.card_code ORDER BY 1;
--行列转换 列转行
DROP TABLE t_change_cl;CREATE TABLE t_change_cl AS SELECT a.card_code,SUM(decode(a.q, 1, a.bal, 0))q1,SUM(decode(a.q, 2, a.bal, 0))q2,SUM(decode(a.q, 3, a.bal, 0))q3,SUM(decode(a.q, 4, a.bal, 0))q4
FROM t_change_lc a GROUP BY a.card_code ORDER BY 1;
SELECT * FROM t_change_cl;
SELECT t.card_code,t.rn q,decode(t.rn, 1, t.q1, 2, t.q2, 3, t.q3, 4, t.q4)bal
FROM(SELECT a.*, b.rn
FROM t_change_cl a,(SELECT ROWNUM rn FROM dual CONNECT BY ROWNUM <= 4)b)t ORDER BY 1, 2;
--行列转换 行转列 合并
DROP TABLE t_change_lc_comma;CREATE TABLE t_change_lc_comma AS SELECT card_code,'quarter_'||q AS q FROM t_change_lc;
SELECT * FROM t_change_lc_comma;
SELECT t1.card_code, substr(MAX(sys_connect_by_path(t1.q, ';')), 2)q
FROM(SELECT a.card_code,a.q,row_number()over(PARTITION BY a.card_code ORDER BY a.q)rn
FROM t_change_lc_comma a)t1 START WITH t1.rn = 1 CONNECT BY t1.card_code = PRIOR t1.card_code
AND t1.rn1 = PRIOR t1.rn GROUP BY t1.card_code;
SELECT * FROM t_change_cl_comma;SELECT t.card_code,substr(t.q,instr(';' || t.q, ';', 1, rn),instr(t.q || ';', ';', 1, rn)-instr(';' || t.q, ';', 1, rn))q
FROM(SELECT a.card_code, a.q, b.rn
FROM t_change_cl_comma a,(SELECT ROWNUM rn FROM dual CONNECT BY ROWNUM <= 100)b
WHERE instr(';' || a.q, ';', 1, rn)> 0)t ORDER BY 1, 2;
--实现一条记录根据条件多表插入 DROP TABLE t_ia_src;CREATE TABLE t_ia_src AS SELECT 'a'||ROWNUM c1, 'b'||ROWNUM c2 FROM dual CONNECT BY ROWNUM<=5;DROP TABLE t_ia_dest_1;CREATE TABLE t_ia_dest_1(flag VARCHAR2(10), c VARCHAR2(10));DROP TABLE t_ia_dest_2;CREATE TABLE t_ia_dest_2(flag VARCHAR2(10), c VARCHAR2(10));DROP TABLE t_ia_dest_3;CREATE TABLE t_ia_dest_3(flag VARCHAR2(10), c VARCHAR2(10));
SELECT * FROM t_ia_src;SELECT * FROM t_ia_dest_1;SELECT * FROM t_ia_dest_2;SELECT * FROM t_ia_dest_3;
INSERT ALL WHEN(c1 IN('a1','a3'))THEN
INTO t_ia_dest_1(flag,c)VALUES(flag1,c2)WHEN(c1 IN('a2','a4'))THEN
INTO t_ia_dest_2(flag,c)VALUES(flag2,c2)ELSE INTO t_ia_dest_3(flag,c)VALUES(flag1||flag2,c1||c2)SELECT c1,c2, 'f1' flag1, 'f2' flag2 FROM t_ia_src;
--如果存在就更新,不存在就插入用一个语句实现 DROP TABLE t_mg;CREATE TABLE t_mg(code VARCHAR2(10), NAME VARCHAR2(10));
SELECT * FROM t_mg;
MERGE INTO t_mg a USING(SELECT 'the code' code, 'the name' NAME FROM dual)b ON(a.code = b.code)WHEN MATCHED THEN
UPDATE SET a.NAME = b.NAME WHEN NOT MATCHED THEN
INSERT(code, NAME)VALUES(b.code, b.NAME);
--抽取/删除重复记录
DROP TABLE t_dup;CREATE TABLE t_dup AS SELECT 'code_'||ROWNUM code, dbms_random.string('z',5)NAME FROM dual CONNECT BY ROWNUM<=10;
INSERT INTO t_dup SELECT 'code_'||ROWNUM code, dbms_random.string('z',5)NAME FROM dual CONNECT BY ROWNUM<=2;
SELECT * FROM t_dup;
SELECT * FROM t_dup a WHERE a.ROWID <>(SELECT MIN(b.ROWID)FROM t_dup b WHERE a.code=b.code);
SELECT b.code, b.NAME
FROM(SELECT a.code,a.NAME,row_number()over(PARTITION BY a.code ORDER BY a.ROWID)rn
FROM t_dup a)b WHERE b.rn > 1;
--IN/EXISTS的不同适用环境--t_orders.customer_id有索引 SELECT a.*
FROM t_employees a WHERE a.employee_id IN
(SELECT b.sales_rep_id FROM t_orders b WHERE b.customer_id = 12);
SELECT a.*
FROM t_employees a WHERE EXISTS(SELECT 1
FROM t_orders b
WHERE b.customer_id = 12
AND a.employee_id = b.sales_rep_id);
--t_employees.department_id有索引 SELECT a.*
FROM t_employees a WHERE a.department_id = 10
AND EXISTS(SELECT 1 FROM t_orders b WHERE a.employee_id = b.sales_rep_id);
SELECT a.*
FROM t_employees a WHERE a.department_id = 10
AND a.employee_id IN(SELECT b.sales_rep_id FROM t_orders b);
--FBI DROP TABLE t_fbi;CREATE TABLE t_fbi AS SELECT ROWNUM rn, dbms_random.STRING('z',10)NAME , SYSDATE + dbms_random.VALUE * 10 dt FROM dual
CONNECT BY ROWNUM <=10;
CREATE INDEX idx_nonfbi ON t_fbi(dt);
DROP INDEX idx_fbi_1;CREATE INDEX idx_fbi_1 ON t_fbi(trunc(dt));
SELECT * FROM t_fbi WHERE trunc(dt)= to_date('2006-09-21','yyyy-mm-dd');
--不建议使用
SELECT * FROM t_fbi WHERE to_char(dt, 'yyyy-mm-dd')= '2006-09-21';
--LOOP中的COMMIT/ROLLBACK DROP TABLE t_loop PURGE;create TABLE t_loop AS SELECT * FROM user_objects WHERE 1=2;
SELECT * FROM t_loop;
--逐行提交 DECLARE BEGIN
FOR cur IN(SELECT * FROM user_objects)LOOP
INSERT INTO t_loop VALUES cur;
COMMIT;
END LOOP;END;
--模拟批量提交 DECLARE
v_count NUMBER;BEGIN
FOR cur IN(SELECT * FROM user_objects)LOOP
INSERT INTO t_loop VALUES cur;
v_count := v_count + 1;
IF v_count >= 100 THEN
COMMIT;
END IF;
END LOOP;
COMMIT;END;
--真正的批量提交 DECLARE
CURSOR cur IS
SELECT * FROM user_objects;
TYPE rec IS TABLE OF user_objects%ROWTYPE;
recs rec;BEGIN
OPEN cur;
WHILE(TRUE)LOOP
FETCH cur BULK COLLECT
INTO recs LIMIT 100;
--forall 实现批量
FORALL i IN 1..recs.COUNT
INSERT INTO t_loop VALUES recs(i);
COMMIT;
EXIT WHEN cur%NOTFOUND;
END LOOP;
CLOSE cur;END;
--悲观锁定/乐观锁定
DROP TABLE t_lock PURGE;CREATE TABLE t_lock AS SELECT 1 ID FROM dual;
SELECT * FROM t_lock;
--常见的实现逻辑,隐含bug DECLARE
v_cnt NUMBER;BEGIN
--这里有并发性的bug
SELECT MAX(ID)INTO v_cnt FROM t_lock;
--here for other operation
v_cnt := v_cnt + 1;
INSERT INTO t_lock(ID)VALUES(v_cnt);
COMMIT;END;
--高并发环境下,安全的实现逻辑 DECLARE
v_cnt NUMBER;BEGIN
--对指定的行取得lock
SELECT ID INTO v_cnt FROM t_lock WHERE ID=1 FOR UPDATE;
--在有lock的情况下继续下面的操作
SELECT MAX(ID)INTO v_cnt FROM t_lock;
--here for other operation
v_cnt := v_cnt + 1;
INSERT INTO t_lock(ID)VALUES(v_cnt);
COMMIT;--提交并且释放lock END;
--硬解析/软解析
DROP TABLE t_hard PURGE;CREATE TABLE t_hard(ID INT);
SELECT * FROM t_hard;
DECLARE
sql_1
VARCHAR2(200);BEGIN
--hard parse
--java中的同等语句是 Statement.execute()
FOR i IN 1..1000 LOOP
sql_1 := 'insert into t_hard(id)values(' || i || ')';
EXECUTE IMMEDIATE sql_1;
END LOOP;
COMMIT;
--soft parse
--java中的同等语句是 PreparedStatement.execute()
sql_1
:= 'insert into t_hard(id)values(:id)';
FOR i IN 1..1000 LOOP
EXECUTE IMMEDIATE sql_1
USING i;
END LOOP;
COMMIT;END;
--正确的分页算法
SELECT *
FROM(SELECT a.*, ROWNUM rn
FROM(SELECT * FROM t_employees ORDER BY first_name)a
WHERE ROWNUM <= 500)WHERE rn > 480;
--分页算法(why not this one)SELECT a.*, ROWNUM rn
FROM(SELECT * FROM t_employees ORDER BY first_name)a WHERE ROWNUM <= 500 AND ROWNUM > 480;
--分页算法(why not this one)SELECT b.*
FROM(SELECT a.*, ROWNUM rn
FROM t_employees a
WHERE ROWNUM < = 500
ORDER BY first_name)b WHERE b.rn > 480;
--OLAP--小计合计 SELECT CASE
WHEN a.deptno IS NULL THEN
'合计'
WHEN a.deptno IS NOT NULL AND a.empno IS NULL THEN
'小计'
ELSE
'' || a.deptno
END deptno,a.empno,a.ename,SUM(a.sal)total_sal
FROM scott.emp a GROUP BY GROUPING SETS((a.deptno),(a.deptno, a.empno, a.ename),());
--分组排序 SELECT a.deptno,a.empno,a.ename,a.sal,--可跳跃的rank
rank()over(PARTITION BY a.deptno ORDER BY a.sal DESC)r1,--密集型rank
dense_rank()over(PARTITION BY a.deptno ORDER BY a.sal DESC)r2,--不分组排序
rank()over(ORDER BY sal DESC)r3
FROM scott.emp a
ORDER BY a.deptno,a.sal DESC;
--当前行数据和前/后n行的数据比较 SELECT a.empno,a.ename,a.sal,--上面一行
lag(a.sal)over(ORDER BY a.sal DESC)lag_1,--下面三行
lead(a.sal, 3)over(ORDER BY a.sal DESC)lead_3
FROM scott.emp a ORDER BY a.sal DESC;
一、数据表设计图
二、创建语句
/*================*/ /* DBMS name: ORACLE Version 9i */ /* Created on: 2008-11-10 23:39:24 */ /*================*/
alter table “emp”
drop constraint FK_EMP_REFERENCE_DEPT;
drop table “dept” cascade constraints;
drop table “emp” cascade constraints;
drop table “salgrade” cascade constraints;
/*================*/ /* Table: “dept” */ /*================*/
create table dept(deptno NUMBER(11)not null, dname VARCHAR2(15)not null, loc VARCHAR2(15)not null, constraint PK_DEPT primary key(deptno));
/*================*/ /* Table: “emp” */ /*================*/
create table emp(empno NUMBER(11)not null, deptno NUMBER(11), ename VARCHAR2(15)not null, sal NUMBER(11)not null, job VARCHAR2(15)not null, mgr NUMBER(11)not null, hirdate DATE not null, comm NUMBER(11)not null, constraint PK_EMP primary key(empno));
/*================*/ /* Table: salgrade */ /*================*/
create table salgrade(grade NUMBER(11)not null, losal NUMBER(11)not null, hisal NUMBER(11)not null, constraint PK_SALGRADE primary key(grade));
alter table emp add constraint FK_EMP_REFERENCE_DEPT foreign key(deptno)references dept(deptno);
三、测试要求及语句
/** *公司工资最高的员工列表 子查询 */
select t.ename,t.sal from emp t where t.sal =(select max(sal)from emp)
/** *查询每一个员工的经理人及自己的名字 */
select e1.ename,e2.ename from emp e1 join emp e2 on(e1.mgr = e2.empno)
/** *查询公司平均薪水的等级 */
select s.grade from salgrade s where(select avg(t.sal)from emp t)between s.losal and s.hisal
/** *求部门中那些人的工资最高 */
select d.dname,ename,sal from(select t.deptno,ename,sal from(select deptno,max(sal)as max_sal from emp group by deptno)e join emp t on(e.deptno = t.deptno and t.sal = max_sal))et join dept d on(d.deptno = et.deptno)
/** *查询部门平均薪水的等级 */
select d.dname,avg_sal,grade from(select deptno,avg_sal,grade from(select deptno,avg(sal)as avg_sal from emp group by deptno)e join salgrade s on(e.avg_sal between s.losal and s.hisal))es join dept d on(es.deptno = d.deptno)
/** *求部门的平均薪水等级 */
select deptno,avg(grade)from(select deptno,grade from emp e join salgrade s on(e.sal between s.losal and s.hisal))t group by t.deptno
/** * 求那些人是经理人 */
select ename from emp e where empno in(select distinct mgr from emp)
/** *不准用组函数 求薪水的最高值 */
select ename from emp where empno not in(select distinct e1.empno from emp e1 join emp e2 on(e1.sal /** *平均薪水最高的部门编号与名称 */ select d.deptno,dname from(select deptno,avg(sal)avg_sal from emp group by deptno)t1 join dept d on(d.deptno = t1.deptno)where avg_sal =(select max(avg_sal)from(select deptno,avg(sal)avg_sal from emp group by deptno)t2) /** *求平均薪水的等级最低的部门名称 */ select dname from dept d where d.deptno in(select deptno from(select deptno,grade from(select deptno,avg(sal)avg_sal from emp group by deptno)t1 join salgrade g on(avg_sal between g.losal and g.hisal))t2 where t2.grade =(select min(grade)from(select deptno,grade from(select deptno,avg(sal)avg_sal from emp group by deptno)t1 join salgrade g on(avg_sal between g.losal and g.hisal))t3)) /** *求部门经理人中平均薪水最低的部门名称 */ select d.dname,t1.avg_sal from dept d join(select deptno,avg(sal)avg_sal from(select e2.deptno,e2.ename,e2.sal from emp e1 join emp e2 on(e1.mgr = e2.empno))t group by deptno)t1 on(d.deptno = t1.deptno)where avg_sal =(select min(avg_sal)from(select deptno,avg(sal)avg_sal from(select e2.deptno,e2.ename,e2.sal from emp e1 join emp e2 on(e1.mgr = e2.empno))t group by deptno))/** *求必普通员工的最高薪水还要高的经理人名称 */ select ename from(select e2.ename,e2.empno,e2.sal from emp e1 join emp e2 on(e1.mgr = e2.empno))t where t.sal >(select max(e.sal)from emp e where e.empno not in(select e1.mgr from emp e1 join emp e2 on(e1.mgr = e2.empno))) /** *求薪水最高的第6名到10名雇员 */ SELECT * FROM(SELECT A.*, ROWNUM RN FROM(SELECT * FROM(select e1.ename,e1.sal from emp e1 order by e1.sal desc))A WHERE ROWNUM <= 10)WHERE RN >= 6 人生哲理小品十篇精妙语句 2010-04-13 23:45:40 阅读13 评论0 字号:大中小.每个人的人生都不相同,而我相信,下面的这些内容会对你的人生有所帮助,特别是对人生迷茫的同学。 1、站在烦恼里仰望幸福 幸福总围绕在别人身边,烦恼总纠缠在自己心里,这是大多数人对幸福和烦恼的理解。差学生以为考了高分就可以没有烦恼,贫穷的人以为有了钱就可以得到幸福。结果是,有烦恼的依旧难销烦恼,不幸福的仍然难得幸福。 烦恼,永远是寻找幸福的人命中的劫数。 另一类人也像在登山,但他们并不刻意要登到哪里。一路上走走停停,看看流岚,赏赏虹霓,吹吹清风,心灵在放松中,得到某种自足。 尽管不得大愉悦,然而,这些琐碎而细微的小自在,萦绕于心扉,一样芬芳身心,恬静自我。 有的人本来幸福着,却看起来很烦恼;有的人本来该烦恼,却看起来很幸福。 活得糊涂的人,容易幸福;活得清醒的人,容易烦恼。这是因为,清醒的人看得太真切,一较真,生活中便烦恼遍地;而糊涂的人,计较得少,虽然活得简单粗糙,却因此觅得了人生的大滋味。 所以,人生的烦恼是自找的。不是烦恼离不开你,而是你撇不下它。 这个世界,为什么烦恼的都有。为权,为钱,为名,为利,人人行色匆匆,背上背着这个沉重的布囊,装得越多,牵累得也就越多。 几乎所有的人都在追逐着人生的幸福。然而,就像卞之琳《断章》诗所写的那样,我们常常看到的风景是:一个人总在仰望和羡慕着别人的幸福,一回头,却发现,自己正被别人仰望和羡慕着。 其实,谁都是幸福的。只是,你的幸福,常常感受在别人心里。 2、时间的步子 我坐在老屋的大门口,看屋檐角滴下的雨点,仿佛看见了时间的身影。人生命的长短是用时间来衡量的,谁都希望长寿,但时间总是不答应,它依然按照自己的节拍行走,且从来不失却公平。 年轻时,时间的步子要慢得多,尤其是童年,总是留下比较多的回忆。年岁越高,日子过得越快,才知道要节约。可是,却挽不住时间匆匆的脚步。时间是高利贷者,如果你要时间预先支付,他日必会付出最昂贵的代价。简单地说,人一宿不睡觉,并不是睡一宿就能还清的。 最好是不紧不慢。站在桥下,看江水奔流,一边是现在,一边是过去。只有桥是现在。逝者如斯夫!人不免要感到悲哀。可是话说回来,真要是有大把的闲暇,无所事事,又觉得无聊的侵袭。闲暇对忙碌者是沙漠的甘泉,对无聊者是折磨的负累。 人对新鲜的事物充满好奇,因而印象深刻。对重复的东西,熟视无睹,不愿调动更多的精力予以关注。人们总认为时光在加速行进,不过是一种错觉罢了。童年慢,老年快,童年做加法,老年做减法,对谁都是一样。 和时间赛跑,只会受到时间的嘲笑。把时间当海绵用力挤压,实际上是一种透支。信贷消费花明天的钱,过今天的日子,时间可不可以信贷呢?或者把现在切割得很细小,塞满人生的悲欢离合?时间可以任你切割,但它的长度和节奏你无法更改。 你可以向别人借金钱,却不可以借时间。如果你强行剥夺别人的时间,就等于谋财害命。谋财害命也不能增加自己的时间,这又何必呢? 不管世界上的事物有多么复杂,在时间的面前,他们都是运转的钟。太阳是钟,日出日落分出白天黑夜。树木是钟,一枯一荣就是寒暑更替。人就是钟,一生一世记录不同时代的生活。人在旅途,含辛茹苦,时间会使我们了解事物,看事物很清楚吗? 科学上的时间是慢不下来的,心理上的时间却能够调整。让日子像童年那般新鲜!让生命像树木一样生长! 3、生命的长度与密度 若按岁计算,人生也不过两万五千多天,可是我还是要计算 有一位朋友问我一个问题,并要求我不假思索地答出。他说:人的一生有没有万天?“ 我说肯定有吧。我想,万元钱一天就可挣回,一天也可花掉。人的一生岂能没有万天?可朋友说:”否“ 于是细算,果然:人生七十古来稀,若按岁计算,人生也不过两万五千多天,连万天都不到!难怪罗大佑的《凡人歌》唱道:”人生何其短,何必苦留恋。“ 生命如此短促,我们每个人不过是一颗流星。算一算,出生在上世纪六十年代末的我,如果能战胜七病八灾有幸终老,死后墓志铭上最多写上这么一段:1969-2050年。前面是古人,后面是来者,我与他们无缘谋面。 生命来之不易,而又魅力无穷。每个生命的孕育都经过了与几亿个对手的竞争,每个都曾是他双亲怀里的至爱。忙碌的人生就像一辆快速奔跑的战车,疾病、痛苦、嫉妒、诅咒都是两旁嗖嗖作响的子弹。可我们不能停止,还要顽强地活下来,最终站到胜利的山巅与尊严握手。 这本身就是一部可歌可泣的英雄史诗。但生命是有长度的,它因人而异。我确信生命的长度取决于它的密度。--想到这一点,我才明白我之所以羡慕那些艺术家的原因:他们总是更醉心于关注他人和自己的人生和命运,他们也更乐于表现、展示、美化、创造那些富于个性魅力和共同命运的人生,他们其中甚至有很大的一部分,是以自己仅有的一次生命深投其中,无怨无悔。像海明威、巴尔扎克、贝多芬、凡]……他们生命的密度因此而加大,闪烁出金刚钻般坚韧的光泽,而被他们赋予灵魂的艺术则更接近于永恒。 还有那些终日勤勉于工作的人。那些也许并不懂得美学和艺术而朴素诚实的人,谁能说他们的生命没有意义,是空虚的外壳呢? 你我皆凡人,但我们的生命仍然可以”加密“。当我们最大限度地投入我们的智慧和热情,让我们的身体和灵魂都像果实饱满的庄稼;当我们积极地面对人生种种不测,执著于信仰;我们又何尝要担忧岁月的转瞬即逝,又何尝不可能骄傲地说,我爱过,梦想过,生活过呢? 珍惜生命,死而无憾。 4、残酷的现实 一位父亲去拜访他在一家公司的好朋友。下面是他们之间的对话。 ”你还是这家公司的副总裁吗?“ ”是啊,怎么了?“ ”我儿子刚刚毕业,我希望让他接受点锻炼,丰富一下人生经历,同时开始赚点小钱。“ 如果你需要,我可以帮忙。” 当然。我希望他能从点点滴滴做起,对劳动和金钱形成正确的看法。“ ”那好……我想可以让他去当总经理。总经理不需要做任何具体的事情,我让他来的时候他来一下,随便说些无关痛痒的废话。工资每月8万比索,有奖金,公司还负责报销一些日常花销。可以吗?“ ”嗯,不好,那可是一大笔钱啊,而且职位太高了。还有别的吗?“ ”那就项目主管吧。工作就是批示一下下级交上来的汇报书以及做一些别的琐事,工资每月5万比索,有奖金,还有餐饮和差旅补贴。“ ”也不好,要知道他刚参加工作,还有低些的职位吗?“ ”那……部门经理吧。每天给员工下达些指令,训训话什么的,每月工资3.8万比索,有奖金和差旅费,还有带薪休假。“ ”嗯……还有更低层些的吗?“ ”项目负责人或是主管分析师、财务执行官也可以。工资每月3.2万比索,还有奖金。做的事情也很简单:打几个电话,时不时地同来访的客户聊聊天。“ ”不,我想让他多学点东西,珍惜劳动。还有别的吗?“ ”哦,这样吧,我让他去当办公室副主任,帮助办公室主任管理下面的分析员,监督他们工作。每月工资2.2万比索,工作时间朝九晚五。你觉得呢?“ ”算了。还有更基层的工作吗?“ ” 那就只剩工程人员和会计了。这两个职位需要掌握很多金融和规划方面的知识,整天同经理、项目主管和客户打交道。加班是家常便饭,没有加班费,成绩还往往是别人的。工资是最低的8500比索,每天辛苦工作12到13个小时,只有半小时的时间可以用来吃饭,而且每天都要拿工作回家干。“ ”噢……这些活真是费力不讨好,不过,的确可以让我儿子从中学点东西。能让我儿子干这活吗?“ ”不可能!做这件事的人,他必须最起码是硕士,会讲流利的英语和法语,还要有足够的相关工作经验才行!“ 5、宽窄都是路 无论处于任何时间、法象里面,生命都是独一无二的。这颗葡萄和昨天吃的那颗葡萄并不一样,这杯酸梅汤和我15岁去台北在中华路喝的那一杯也有所不同,因此不必刻意用过去的经验与眼前做比较。 一般人都喜欢拿过去和现在相比较,连吃一盘蛋炒饭也会认为昨天那一家炒的好吃些。禅宗注重”异“,人们都用过去的经验在生活,他们最无法开悟的一点就是”同“。不能开悟,许多痛苦就此产生。 若能了解自己的每一分每一秒都是不同的,不需要拿任何一秒钟做标准,你就会生活得很好。无论你是独自处于非洲大沙漠的烈日之下,或者和朋友一起待在舒适的冷气房里,都没有什么差别,每一个点都是生命的一部分,加起来才等于你整个的生命。 有一年我获得了”杰出青年奖“,香港《东方日报》的总编希望我写一篇文章。 ”我写什么呢?“我问。 ”写崎岖的道路。“ ”那是什么?“ ”你的成功史。写你如何达到今日的成功之境。“ ”我不能写。因为我的人生中没有崎岖的道路,对我而言,无论什么情况都是很好的。“ 如果我走在崎岖的小径上,我就用崎岖小径的心去欣赏它;如果走在林荫大道上,我就从林荫大道的角度去品尝。我不认为林荫大道就优于崎岖小径,一旦真正了解生命的意义,事物就没有好坏之别。 不论剩下多少水,我只想”我还有水“,而不去在意水的多少。我画过一幅漫画:黄河的源头是生,出海口是死,它整个生命的过程当然有时细水长流,有时波涛澎湃,有时顺畅,有时受阻;有时宽,有时窄;我在宽时品尝宽,在窄时品尝窄;在逆时面对逆,在顺时享受顺。我不愿自己的生命从头到尾一样宽畅、平凡。 6、年轻时你想砍哪棵树? 上大学时,有一次我们去一位老教授家做客,那时正年轻,豪情无限高谈阔论,仿佛世间之事无所不能。老教授一直微笑着倾听,不参与我们的种种话题。 待大家热情一过,老教授提出要做个测试,我们顿时都来了兴致。老教授问:”如果你去山上砍树,正好面前有两棵树,一棵粗,另一棵较细,你会砍哪一棵?“ 问题一出,大家都说:”当然砍那棵粗的了!“老教授一笑,说:”那棵粗的不过是一棵普通的杨树,而那棵细的却是红松,现在你们会砍哪一棵“我们一想,红松比较珍贵,就说:”当然砍红松了,杨树也不值钱!“ 老教授带着不变的微笑看着我们,问”那如果杨树是笔直的,而红松却七歪八扭,你们会砍哪一棵“我们觉得有些疑惑,就说:”如果这样的话,还是砍杨树,红松弯弯曲曲的,什么都做不了!“老教授目光闪烁着,我们猜想他又要加条件了,果然,他说:”杨树虽然笔直,可由于年头太多,中间大多空了,这时,你们会砍哪一棵?“ 虽然搞不懂老教授的葫芦里卖的什么药,我们还是从他所给的条件出发,说:”那还是砍红松,杨树都中空了,更没有用!“老教授紧接着问:”可是红松虽然不是中空的,但它扭曲得太厉害,砍起来非常困难,你们会砍哪一棵?“我们索性也不去考虑他到底想得出什么结论,就说:”那就砍杨树,同样没啥大用,当然挑容易砍的砍了!“老教授不容喘息地又问:”可是杨树之上有个鸟巢,几只幼鸟正躲在巢中,你会砍哪一棵?“ 终于,有人问:”教授,您问来问去的,导致我们一会儿砍杨树,一会儿砍红松,选择总是随着您的条件增多而变化,您到底想告诉我们什么、测试些什么呢?“老教授收起笑容,说:”你们怎么就没人问问自己,到底为什么砍树呢?虽然我的条件不断变化,可是最终结果取决于你们最初的动机。如果想要取柴,你就砍杨树,想做工艺品,就砍红松。你们当然不会无缘无故提着斧头上山砍树了!“ 听了这番话,我们心中似都有所感悟,可一时又抓不住什么。老教授看着我们说:”刚才听你们纵论天下之事,似乎无所不在话下。可是,当你们踏上社会之后,当许多事摆在眼前,你们便只顾着去做那些事,往往于各种变数中淡忘了初衷,所以也就常常会做些没有意义的事。一个人,只有在心中先有了目标,先有了目的,做事的时候才不会被各种条件和现象所迷惑,才不会偏离正轨。这就是我的测试,也是我想要告诉你们的!“ 7、给别人留有余地 韩国北部的乡村公路边有很多柿子园,金秋时节正是采摘柿子的季节,当地的农民常常会留一些成熟的柿子在树上,他们说,这是留给喜鹊的食物。 经过这里的游客都会觉得不可思议,这时,导游就会给大家讲一个故事:这里是喜鹊的栖息地,每到冬天,喜鹊们都在果树上筑巢过冬。有一年冬天特别冷,下了很大的雪,几百只找不到食物的喜鹊一夜之间都被冻死了。第二年,一种不知名的毛毛虫突然泛滥成灾,那年秋天,果园没有收获到一个柿子。直到这时,人们才想起了那些喜鹊,如果有喜鹊在,就不会发生虫灾了。从那以后,每年秋天收获柿子时,人们都会留下一些柿子,作为喜鹊过冬的食物…… 给别人留有余地,往往就是给自己留下生机和希望啊! 8、没有一种给予是理所应当的 老人是菲律宾华侨,在海外跋涉半生。几经浮沉,衣锦还乡的他萌生了济世助人,造福相邻的念头。 于是,老人分别给家乡几所学校的校长写了信,希望每个校长能提供十来个学生名单,他从中选定人选,作为他资助的对象。 家人真怪他的愚昧,既是捐赠,何必把程序搞得这样复杂?不如来个快捷方式,譬如通过”希望工程“或者”春蕾计划“,干净利落地了却一桩心愿,岂不是更好? 老人摇摇头说:”我的血汗钱只给与那些配得到他的孩子。“哪些孩子才有资格得到资助。是那些家庭贫困的孩子,还是优秀生抑或是特长生,谁也不知道老人心里的答案。 名单很快就到了老人手里。老人让家人买来了许多书,分门别类地包装好,准备寄给名单上的孩子,家人面面相觑,这样微薄的赠与是不是太寒碜了。大家断定书中自有黄金屋,可翻来覆去也没有找到夹在书中的纸钞。只是,在书的第一页看到了老人的亲笔,赠给品学兼优的学生,落款处是老人的地址,姓名,电话和电子信箱。 家人大惑不解,却也不愿悖逆老人的旨意,只好替他一一寄出那些书。 夕晖来去匆匆,老人常常对着电话发呆,有莫名奇妙的唉声叹气。从黄叶凋零到瑞雪飘飞,谁也猜不透老人所为何事。 终于读懂老人的心,源于新年的一张贺卡,很普通。上面写着:感谢您给我寄来的书,虽然我不认识您,但我会记着您。祝您新年快乐!没想到老人竟然兴奋地大呼小叫:有回音了,有回音了,终于找到一个可资助的孩子。 家人恍然大悟,终于明白老人这些日子郁郁寡欢的原因,他寄出去的书原来是块儿试金石,只有心存感激的人才会有资格得到他的资助。 老人说:土地失去水分滋润会变成沙漠,人心没有感激滋养会变的荒芜,不知感恩的人,注定是个冷漠自私的人,不是关爱别人,纵使给他阳光,日后也不会放射出自身的温暖,且也不配得到别人的爱。的确,没有一种给予是理所应当的,没有什么是必须应该的,所以,没有一种领受可以使无动于衷心安理得的,都应心存感激。一朵花会为一滴雨露鲜艳妩媚,一株草会因一缕春风摇曳多姿,一湖水也会因一片落叶荡漾清波,一颗心更应对另一颗关爱的心静静的绽放感情的笑脸。 9、有理更需宽容 有一个朋友和老板去餐厅吃饭。服务小姐的态度非常恶劣,脸上没有一点笑容。朋友很生气,要投诉她,却被老板制止了。老板说:”也许她失恋了,也许她刚刚被上司指责过,总之,我们应当原谅她。“ ”不管什么理由,也不应该影响工作,这是她的错。“ ”是的,“老板意味深长地说,”正是因为她全错,而你全对,才需要你的宽容。“ 朋友说了一句让老板喷饭的话:”没想到您还有傻根精神。“ ”所以,我是头儿,“老板笑着说,”你是我的员工“。 在我们感到不痛快的时候,感到人生无望的时候,我们能不能走到窗口,去看看行色匆匆的人们,去想一想别人的痛苦。在理解与宽容的世界里,有更轻松的呼吸和更新鲜的空气。 10、需要奋斗是幸福的 试想一种如此美好的生活: 出生了,父母都在家中全心全意地照顾你,你的母亲在产假里照领全薪。而你的父亲也因妻子生育而享受9个月的”产假“。 在你16周岁前,你的父母可获得生活津贴。你绝不会”穷人的孩子早当家“。 16周岁以后,你完成了9年义务教育,想继续深造?没问题,国家给你学习津贴。 病了?不用慌,你可享受病假补助,其数额视病假长短而定,相当于工资的75%至100%,医疗费用和经医生之手的药品,大部分由国家负担。 失业了?领救济金去吧。每月1.3万克朗,约相当于1.3万元人民币一个月,比北京、上海的普通白领还要高。如果你再打一份不用交税的零工,日子过得就更红火了。 不想工作,无所事事?念大学去呀--反正也是免费。 老了?国家养着你。 这就是瑞典人民的美好生活。富裕的国家为人民制定了从摇篮到坟墓的福利保护。它的公民不愁吃不愁穿不怕病,失业了也很快乐,老了也生活得很体面。生活环境优美,担心的只是全球变暖之类的问题。 这样的生活,天上人间,不是神仙赛神仙啊。 且慢,来看看这样的数据吧:每年有2000个瑞典人自杀,是世上自杀率最高的国家之一。不久前,瑞典摔跤世界冠军米歇尔·永贝里自杀身亡,年仅34岁。 在瑞典的负面新闻里,”年轻人的恶作剧“、”自杀"这样的字眼司空见惯。前不久,芬兰发生校园枪击案,8人死亡,两个瑞典小青年觉着好玩,于是在网络上发布告示,说也要在瑞典制造一起类似事件,警方闻讯连忙将两人捉拿。 他们自杀的原因之一就是:生活太好。他们无需奋斗,没有压力,无所事事,生活无忧之余就想:上帝要我来干什么?上帝要我来到底要干什么?找不到生活的意义,想呀想,想不通,就去自杀。 想想我们的生活。我们要制定年长远目标。每天勤奋地工作,可怜的一点薪水要孝顺父母、养孩子、养车子,一不小心成了房奴,又得养房子,还务必要养好身子,病了,昂贵的医药费让你吃不了兜着走。自杀,哪里敢,养育之恩还待报,培养孩子的责任压在肩头,生命可不是我们自己的。我们失眠、抱怨,发梦也想中 500万。可不曾想,奋斗令我们的生活充满生机,责任让我们的生命充满意义,压力让我们不断成长,成就让我们充满自豪。不要再抱怨生活的艰辛,原来,需要奋斗也是幸福的一种。不是吗?第五篇:人生哲理小品十篇精妙语句