平常开发常用mysql原生操作

常用的SQL例句全部懂了,你的数据库开发所需知识就够用了

..--查看学生表的全部数据

select*fromstudio

--插入一个新的学生信息

insertintostudio(st_name,st_sex,st_age,st_add,st_tel)values("黄兰淇",0,36,'南充','13943943334')

--查看class全部数据

select*fromclass

--向class表增加两条条数据

insertintoclass(cl_class,cl_coding,cl_o_time,cl_remark)values('新电实训班','GXA-ncs-001','2008-03-11','都是很优秀的朋友')

insertintoclass(cl_class,cl_coding,cl_o_time)values('阿坝师专实训班','GXA-ABSZ-001','2008-03-11')

--更新一条的数据条件的重要性

updateclasssetcl_remark='真的是不错'wherecl_id=5

--删除一条数据条件的重要性

deletefromclasswherecl_id=7

--修改列标题

selectcl_idas'班级主键',cl_classas'班级名称'fromclass

select名字=st_namefromstudio

--使用文字串

select'名字是:',st_namefromstudio

--=============条件稍微复杂点的查增删改==============

--主要涉及到orandnotbetweeninlike><=!>!()<=>=isnullisnotnull

--查询cl_id大于1的所有信息

select*fromclasswherecl_id>1

--使用or

select*fromclasswherecl_id<>10orcl_class='百杰一班'

--使用and

select*fromclasswherecl_id<>10andcl_class='百杰一班'

--使用like和%

select*fromclasswherecl_class like'百杰%'

select*fromclasswherecl_remark like'%上午%'

--使用between

select*fromclasswherecl_id between3and5

--使用between配合上not

select*fromclasswherecl_idnotbetween3and5

--使用isnotnull

select*fromclasswherecl_remarkisnotnull

--使用in

select*fromclasswherecl_classin('千星一班','百杰二班')

--=================使用数学运算符======================

--主要涉及到+=*\

--查询Java相关课程分别要上多少周按照每周5天,每天6节课来计算

select'结果'=co_num/5/6fromcoursewhereco_namein('Java基础','Java项目入门')

--==================使用汇总函数========================

--涉及到COUNT SUM AVG MAX MIN

--查询课时数小于50的课程一共有多少门

selectcount(*)fromcoursewhereco_num<50

--查询所有课程一共多少课时

selectsum(co_num)fromcourse

--计算全部课时费,假设每节课50块钱

selectsum(co_num)*50fromcourse

--查询课时最少的课程

selectmin(co_num)fromcourse

--查询课时最多的课程

selectmax(co_num)fromcourse

--查询平均每门课多少课时

selectavg(co_num)fromcourse

--=================使用数学函数=============================

--包括求绝对值函数ABS函数、求圆周率函数PI()、求正玄值SIN()函数、求指数函数EXP()等。

--查询每门课的正弦值

selectsin(co_num)fromcourse

--查询每门课的绝对值

selectabs(co_num)fromcourse

--查询每门课课时数乘以圆周率,具体有什么用我也不知道,反正这好像绝对是8.5杆子都打不到的

selectpi()*co_numfromcourse

--查询每门课的指数

selectexp(co_num)fromcourse

--随机返回5个随机生成的数(返回的是0~1之间的随机float值)

declare@itinyint

set@i=1

while@i<=5

begin

selectrand(@i)as'随机生成的数',@ias'当前值'

set@i=@i+1

end

--返回数字表达式并四舍五入为指定的长度或精度-ROUND

selectround(345.456,-1)as'参数为-1'

,round(345.456,-2,1)as'参数为-2'

,round(345.456,0)as'参数为0'

,round(345.456,1)as'参数为1'

,round(345.456,2)as'参数为2'

--================使用日期函数======================

--DAY()、MONTH()、YEAR()——返回指定日期的天数、月数、年数;

selectday(cl_s_time)as'日'fromclass--返回天

select'月'=month(cl_s_time)fromclass--返回月

select'年'=year(cl_s_time)fromclass--返回年

--DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量;

selectdateadd(yyyy,4,cl_s_time)as'增加4年后'fromclass--datepart-年份

yy、yyyy

selectdateadd(q,2,cl_s_time)as'增加2季度后'fromclass

--datepart-季度

qq、q

selectdateadd(mm,3,cl_s_time)as'增加3月度后'fromclass

--datepart-月份

mm、m

--datepart-每年的某一日

dy、y

--datepart-日期

dd、d

--datepart-星期

wk、ww

--datepart-小时

hh

--datepart-分钟

mi、n

--datepart-秒

ss、s

--datepart-毫秒

ms

--DATEDIFF(datepart,date1,date2)——获取两个日期之间给定的日期类型的数量差(整个函数结果是date2-date1);

selectdatediff(mm,cl_s_time,cl_o_time)as'共持续月'fromclass

--datepart(datepart,date)——在给定日期基础上返回指定日期类型的值(整数);

--其实这个等同于DAY、MONTH、和YEAR函数

selectdatepart(dd,cl_s_time)as'日期'fromclass

--GETDATE()——返回当前日期和时间。我们在设计数据库的时候,通常也可能把他作为默认值

updateclasssetcl_s_time=getdate()wherecl_id=6

select*fromclass

SelectCONVERT(varchar(100),GETDATE(),0):0516200610:57AM

SelectCONVERT(varchar(100),GETDATE(),1):05/16/06

SelectCONVERT(varchar(100),GETDATE(),2):06.05.16

SelectCONVERT(varchar(100),GETDATE(),3):16/05/06

SelectCONVERT(varchar(100),GETDATE(),4):16.05.06

SelectCONVERT(varchar(100),GETDATE(),5):16-05-06

SelectCONVERT(varchar(100),GETDATE(),6):160506

SelectCONVERT(varchar(100),GETDATE(),7):0516,06

SelectCONVERT(varchar(100),GETDATE(),8):10:57:46

SelectCONVERT(varchar(100),GETDATE(),9):0516200610:57:46:827AM

SelectCONVERT(varchar(100),GETDATE(),10):05-16-06

SelectCONVERT(varchar(100),GETDATE(),11):06/05/16

SelectCONVERT(varchar(100),GETDATE(),12):060516

SelectCONVERT(varchar(100),GETDATE(),13):1605200610:57:46:937

SelectCONVERT(varchar(100),GETDATE(),14):10:57:46:967

SelectCONVERT(varchar(100),GETDATE(),20):2006-05-1610:57:47

SelectCONVERT(varchar(100),GETDATE(),21):2006-05-1610:57:47.157

SelectCONVERT(varchar(100),GETDATE(),22):05/16/0610:57:47AM

SelectCONVERT(varchar(100),GETDATE(),23):2006-05-16

SelectCONVERT(varchar(100),GETDATE(),24):10:57:47

SelectCONVERT(varchar(100),GETDATE(),25):2006-05-1610:57:47.250

SelectCONVERT(varchar(100),GETDATE(),100):0516200610:57AM

SelectCONVERT(varchar(100),GETDATE(),101):05/16/2006

SelectCONVERT(varchar(100),GETDATE(),102):2006.05.16

SelectCONVERT(varchar(100),GETDATE(),103):16/05/2006

SelectCONVERT(varchar(100),GETDATE(),104):16.05.2006

SelectCONVERT(varchar(100),GETDATE(),105):16-05-2006

SelectCONVERT(varchar(100),GETDATE(),106):16052006

SelectCONVERT(varchar(100),GETDATE(),107):0516,2006

SelectCONVERT(varchar(100),GETDATE(),108):10:57:49

SelectCONVERT(varchar(100),GETDATE(),109):0516200610:57:49:437AM

SelectCONVERT(varchar(100),GETDATE(),110):05-16-2006

SelectCONVERT(varchar(100),GETDATE(),111):2006/05/16

SelectCONVERT(varchar(100),GETDATE(),112):20060516

SelectCONVERT(varchar(100),GETDATE(),113):1605200610:57:49:513

SelectCONVERT(varchar(100),GETDATE(),114):10:57:49:547

SelectCONVERT(varchar(100),GETDATE(),120):2006-05-1610:57:49

SelectCONVERT(varchar(100),GETDATE(),121):2006-05-1610:57:49.700

SelectCONVERT(varchar(100),GETDATE(),126):2006-05-16T10:57:49.827

SelectCONVERT(varchar(100),GETDATE(),130):18??????????142710:57:49:907AM

SelectCONVERT(varchar(100),GETDATE(),131):18/04/142710:57:49:920AM

--=============使用字符串函数=====================

--字符串链接运算符

select'结果显示'='班级名称是:'+cl_class+',班级编号是:'+cl_codingfromclass

--使用SUBSTRING函数截取字符串

selectsubstring(cl_class,1,4)fromclass

--从字符串的左边开始返回3个字符

selectleft(cl_class,3)fromclass

--同理,返回右边的

selectright(cl_class,3)fromclass

--返回值的字符数

selectlen(cl_class)fromclass

--替换

selectreplace(cl_class,'实训','强化')fromclass

--==============使用系统函数====================

selecthost_id()

--返回工作站标识号

selecthost_name()

--返回工作站所运行的计算机名称

selectdb_id()

selectdb_name()

selectobject_id('Stu_course_ADD')

--通过名称得到这个服务器对象的服务器ID

selectobject_name(151671588)

--同上相反

--=======学云网-天轰穿-www.ixueyun.co m===使用其他子句====学云网-天轰穿-www.ixueyun.com=========

--首先是orderby功能-排序

select*fromstudio orderbyst_name

--多排序条件

select*fromstudio orderbyst_name DESC,st_age DESC,st_sex DESC

--有条件,主要是看下条件和子句的位置

select*fromstudiowherecl_id=1orderbyst_name

--GROUP BY子句功能-分组统计

selectcl_idas'班级编号',count(*)as'人数'fromstudiogroupbycl_id

--按宿舍统计年龄平均值

selectho_idas'宿舍编号',avg(st_age)as'平均年龄'fromstudiogroupbyho_id

--多分组

selectho_idas'宿舍编号',cl_idas'班级编号',avg(st_age)as'平均年龄'fromstudiogroupbyho_id,cl_id

--有条件,主要是看下条件和子句的位置

selectho_idas'宿舍编号',avg(st_age)as'平均年龄'fromstudiowherecl_id=1groupbyho_id

--使用having子句功能-指定组或者聚合的搜索条件,通常与groupby子句一起使用,完成分组查询后再进步筛选

selectho_idas'宿舍编号',avg(st_age)as'平均年龄'fromstudiogroupbyho_id having avg(st_age)>35

--多条件

selectho_idas'宿舍编号',avg(st_age)as'平均年龄'fromstudiogroupbyho_id having avg(st_age)>35andho_id>2

--===========联合查询=======学云网-天轰穿-www.ixueyun.com======

--使用union子句的查询称为联合查询,功能:将两个以上的查询结果集组合为一个单个结果集,该集中包括所有集中的全部行数据

--下面我们尝试将多个查询联合起来

select*fromstudiowherecl_id=1

union

select*fromstudiowhereho_id=1

union

select*fromstudiowherest_age>=30

--下面我们继续利用上面的例题,增加上All看下效果

select*fromstudiowherecl_id=1

unionall

select*fromstudiowhereho_id=1

unionall

select*fromstudiowherest_age>=30

--再继续利用,给他加上排序

select*fromstudiowherecl_id=1

unionall

select*fromstudiowhereho_id=1

unionall

select*fromstudiowherest_age>=30

orderbyst_id

--===========连接查询==================

--连接查询,功能-将多个表中的数据查询出来放在一起

--内连接:使用比较运算符=><....等进行表间某些数据库的比较操作,并列出这些表中与连接条件相匹配的数据行

--等值连接,当然就是用等号了,毛病,这也要问

select*fromstudio inner joinclasson studio.cl_id=class.cl_id

--指明要查询的列(江湖上又称自然连接),并排序

selectst_idas'编号',st_nameas'学生姓名',cl_classas'班级名称'fromstudio inner joinclasson studio.cl_id=class.cl_id orderbyst_id

--使用表别名

selectst.st_nameas'学生姓名',st.cl_idas'班级编号',cl.cl_classas'班级名称'fromstudioasst inner joinclassascl on st.cl_id=cl.cl_id

--不等连接,这个问题很好笑,既然使用等号的是等值连接,那么不等值你说是不是应该是非等于以外的呢?

--下面我们再连接第三个表,看下是怎么搞滴

selectst.st_nameas'学生姓名',st.cl_idas'班级编号',cl.cl_classas'班级名称',ho.ho_codingas'所在宿舍编号'

fromstudioasst inner joinclassascl

on st.cl_id=cl.cl_id

inner join hostelasho

on st.ho_id=ho.ho_id

--我们再给他加个条件看下

--wherest.cl_id>2

--再给他个排序

--orderbyst.st_id

--外连接:

--与内连接不同的是,内连接至少要有一个同属于两个表的行符合连接条件时才会返回行,外连接会返回符合任意条件的行

--他的表有主从之分,他用主表中的每行去匹配从表中的,与内连不同的是,他不会丢弃没有匹配的行,而是填充null给从结果集

--左外连接

selectst.st_idas'学生编号',st.st_nameas'学生姓名',cl.cl_idas'班级编号',cl_classas'班级名称'

fromstudioasst left outer joinclassascl

on st.cl_id=cl.cl_id

wherecl.cl_id>2

--多表

selecttka.te_co_idas'课程安排编号'

,cl.cl_idas'班级编号',cl.cl_classas'班级名称'

,co.co_idas'课程ID',co.co_nameas'课程名称',co.co_numas'课时数'

,te.te_nameas'老师姓名'

fromte_kc_apastka left outer joinclassascl

on tka.cl_id=cl.cl_id

left outer join

courseasco

on tka.co_id=co.co_id

left outer join

teacheraste

on tka.te_id=te.te_id

--====================右外连结=======================

selectst.st_idas'学生编号',st.st_nameas'学生姓名',cl.cl_idas'班级编号',cl_classas'班级名称'

fromstudioasst right outer joinclassascl

on st.cl_id=cl.cl_id

wherecl.cl_id>2

--多表

selecttka.te_co_idas'课程安排编号'

,cl.cl_idas'班级编号',cl.cl_classas'班级名称'

,co.co_idas'课程ID',co.co_nameas'课程名称',co.co_numas'课时数'

,te.te_nameas'老师姓名'

fromte_kc_apastka

right outer joinclassascl

on

tka.cl_id=cl.cl_id

right outer join teacher te

on

tka.te_id=te.te_id

right outer join course co

on

tka.co_id=co.co_id

--========完全连接==============

selectst.st_idas'学生编号',st.st_nameas'学生姓名',cl.cl_idas'班级编号',cl_classas'班级名称'

fromstudioasst full outer joinclassascl

on st.cl_id=cl.cl_id

orderbyst.st_id

--多表

selecttka.te_co_idas'课程安排编号'

,cl.cl_idas'班级编号',cl.cl_classas'班级名称'

,co.co_idas'课程ID',co.co_nameas'课程名称',co.co_numas'课时数'

,te.te_nameas'老师姓名'

fromte_kc_apastka

full outer joinclassascl

on

tka.cl_id=cl.cl_id

full outer join teacher te

on

tka.te_id=te.te_id

full outer join course co

on

tka.co_id=co.co_id

--==========交叉连接================

--该方式在不带where子句时,返回的是两个表中所有数据行的笛卡尔积(第一个表中的行乘以第二个表中的行)

--用学生和班级表做交叉查询

selectst_name,cl_classfromstudio cross joinclass

selectst_name,cl_classfromstudio,class

selectst_name,cl_classfromstudio cross joinclass

--=========自连接===

-----------------先临时创建一个表-------------

create table zone(

idintprimary key identity(1,1)notnull,

z_zone varchar(30),

z_idintreferences zone(id))

--大家试下,这里是否可以给个默认值

select*fromzone

insertintozone(z_zone)values('北京')

insertintozone(z_zone,z_id)values('北京',4)

insertintozone(z_zone)values('四川')

insertintozone(z_zone,z_id)values('成都',6)

insertintozone(z_zone,z_id)values('绵阳',6)

insertintozone(z_zone)values('江苏')

insertintozone(z_zone,z_id)values('南京',10)

insertintozone(z_zone,z_id)values('苏州',10)

insertintozone(z_zone,z_id)values('无锡',10)

insertintozone(z_zone,z_id)values('常州',10)

----------------------------------------------

--看下自连接的一般用处

selecta.z_zone,b.z_zonefromzoneasa inner join zoneasb on a.z_id=b.id

--扩展应用下

selectb.z_zone,count(a.z_zone)as'辖区数'fromzoneasa inner join zoneasb on a.z_id=b.idgroupbyb.z_zone

--简单说就是自己连接自己,换言之对同一个表进行连接操作

selecta.st_name,a.st_add,b.st_name,b.st_addfromstudioasa inner join studioasb on a.st_add=b.st_add

--我们发现有人等于自己,那么增加一个条件

selecta.st_name,a.st_add,b.st_name,b.st_addfromstudioasa inner join studioasb on a.st_add=b.st_addanda.st_name!=b.st_name

--====学云网-天轰穿-www.ixueyun.com==子查询============

--在一个SQL语句中镶入另一个SQL语句教镶套查询,而被镶入的这个SQL语句就被江湖人称子查询。是处理多表操作的附加方法

--子查询也称内部查询,而包含子查询的Select语句被诚为外部查询,子查询自身可以包括一个或者多个子查询,也可以镶套任意数量的子查询

--使用in的子查询

select*fromstudiowherecl_idin(selectcl_idfromclasswherecl_id>2)

--使用notin

select*fromstudiowherecl_idnotin(selectcl_idfromclasswherecl_id>2)

--使用比较运算符的子查询--any表示子查询中任意的值all表示子查询中的每个值

--使用any

select*fromclasswherecl_id>any(selectcl_idfromstudiowherest_age>30)

--使用all

select*fromclasswherecl_id>all(selectcl_idfromstudiowherest_age>30)

--============一个分页的SQL语句========

selecttop3*fromstudio

wherest_id>all(selecttop3st_idfromstudio orderbyst_id)

orderbyst_id

--使用exists,该关键字引入一个子查询的时候基本上是对数据进行一次是否存在的测试

--我们查询那些人所在的班级是编号为1的

select*fromstudiowhereexists(selectcl_idfromclasswherestudio.cl_id=class.cl_idandclass.cl_id=1)

--使用notexists

select*fromstudiowherenotexists(select*fromclasswherestudio.cl_id=class.cl_idandclass.cl_id=1)orderbyst_id

--基于查询生成新的表

selectst_nameintoclass_3fromstudiowherecl_id=3

--将数据批量插入一个表中

insertintoclass_3selectst_namefromstudiowherecl_id=4

-----------------------sql编程--------------

declare@maxint;

--申明一个变量@max

set@max=1;

--为变量@max赋值

while@max<10

--如果@max小于10就进入循环

begin

set@max=@max+1;--每次循环就给@max加1

print@max;

--打印当前@max的值

end

print'终于循环完了';

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 一、字符转换函数 1、ASCII() 返回字符表达式最左端字符的ASCII码值。在ASCII()函数中,纯数字的字...
    辉格食品阅读 1,617评论 0 3
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,220评论 0 7
  • 人,很奇怪,有时候想说的不能说,想做的不能做。 在喜欢的人面前不敢说,不敢做。把自己最好的一面展现出来,但却不允...
    孤独的蛋阅读 164评论 0 0
  • 我的周末生活是:我周五回到家就在写作业,我快写完作业已经很晚了,我吃了点晚饭,然后,我又看了几十分钟的书,就上床睡...
    雁楠阅读 260评论 0 0
  • 过滤器也是一种结构型模式,它允许我们使用不同的规则过滤某一组对象。 首先我们来编写一个实体类,用作被过滤的对象。 ...
    乐百川阅读 4,510评论 0 3