练习sql知识.docx
《练习sql知识.docx》由会员分享,可在线阅读,更多相关《练习sql知识.docx(12页珍藏版)》请在冰豆网上搜索。
练习sql知识
select*fromSur_BaseInfo_T
select*
fromSur_BaseInfo_T
whereSurType='CAG'
select*
from表
where字段='条件'
and和or使用
select*
fromSur_BaseInfo_T
whereSurType='急诊PCI手术'orSur_OperaterName='王东'
select*
from表
where字段='条件'and字段='条件'
select*
fromSur_BaseInfo_T
whereSurType='急诊PCI手术'andSur_OperaterName='王东'
select*
fromSur_BaseInfo_T
whereSurName='冠脉手术'andSur_AssistName='刘国勇'andSur_NurseName='李琦'
排序
selectsurcode,surtype
fromSur_BaseInfo_T
orderbySurTypedesc
select字段,字段
from表
orderby字段desc
INSERTINTO语句用于向表格中插入新的行。
INSERTINTO表VALUES('Gates','Bill','Xuanwumen10','Beijing')
INSERTINTOTev_ObrVALUES('ORID0000000000000829','1','造影检查','冠脉造影','2015-07-03','20150515123325','20150515123325','2','2','2','2','2','2','2','王振星','2','2','2','2','2','2','2','2','未到检','2','1','2','2','2','2','2','2','2','2','20150515123326','2','2','2','2','2','2','2','PVID0000000000001073','2','2')
select*fromTev_Obr
Update语句
Update语句用于修改表中的数据。
updateTev_Obr
setPlacer_Order_Number='ORID0000000000000829'
wherePlacer_Order_Number='1'
update表
set字段='条件'
where字段='条件'
select*fromTev_Pid
wherePATIENT_NAME='孙延仁'
select*fromTev_Pid
wherePATIENT_NAME='周树云'
select*fromTev_Pid
wherePATIENT_NAME='李登荣'
select*fromTev_Pid
wherePATIENT_NAMElike'成%'
updateTev_Pid
setPATIENT_IDENTIFIER_LIST='00738343'
wherePATIENT_NAME='蒲慧莲'
select*fromTev_Pid
updateTev_Pid
setPATIENT_IDENTIFIER_LIST='00'+PATIENT_IDENTIFIER_LIST
wherePATIENT_IDENTIFIER_LISTin('668504','667504','668514')
Update表
Set字段=’要添加的条件’+字段
Where字段=(原始条件)
Update表
Set字段=’要添加的条件’+字段
Where字段in(‘条件’,’条件’,’条件’,......)
select*fromTev_Pid
wherePATIENT_IDENTIFIER_LIST=('00668504')
updateSur_BaseInfo_T
setVisitNumber=(selectVISIT_NUMBERfromTev_Pv1wherePATIENT_IDENTIFIER_LIST='00738274')
wherePatientID='00738274'
select*fromSur_BaseInfo_TwherePatientID='错误的患者编号'
updateSur_BaseInfo_TsetPatientID='正确的患者编号'wherePatientID='错误的患者编号'
selectPATIENT_IDENTIFIER_LIST,VISIT_NUMBER
fromTev_Pv1
wherePATIENT_IDENTIFIER_LIST='00738274'
updateSur_BaseInfo_T
setVisitNumber=(selectVISIT_NUMBERfromTev_Pv1wherePATIENT_IDENTIFIER_LIST='00738274')
wherePatientID='00738274'
deletefromTev_Obr
wherePlacer_Order_Number='ORID0000000000000829'
deletefrom表
where字段='条件'
INSERTINTOTev_ObrVALUES('ORID0000000000000829','1','造影检查','冠脉造影','2015-07-03','20150515123325','20150515123325','2','2','2','2','2','2','2','王振星','2','2','2','2','2','2','2','2','未到检','2','1','2','2','2','2','2','2','2','2','20150515123326','2','2','2','2','2','2','2','PVID0000000000001073','2','2')
TOP子句用于规定要返回的记录的数目。
SELECTTOP2*FROMTev_Obr
SELECTTOP2*FROM表
LIKE操作符用于在WHERE子句中搜索列中的指定模式。
select*fromSur_BaseInfo_T
select*fromSur_BaseInfo_T
whereSur_OperaterNamelike'%雪'
select*from表
where字段like'%条件'
select*fromSur_BaseInfo_T
whereSurNamelike'_AG'
IN操作符实例
现在,我们希望从上表中选取姓氏为'条件'和'条件'的人:
SELECT*FROMSur_BaseInfo_T
WHERESur_OperaterNameIN('药素毓','白明')
SELECT*FROM表
WHERE字段IN('条件','条件')
BETWEEN操作符在WHERE子句中使用,作用是选取介于两个值之间的数据范围。
BETWEEN操作符
操作符BETWEEN...AND会选取介于两个值之间的数据范围。
这些值可以是数值、文本或者日期。
如需以字母顺序显示介于"Adams"(包括)和"Carter"(不包括)之间的人,请使用下面的SQL:
BETWEEN操作符在WHERE子句中使用,作用是选取介于两个值之间的数据范围。
SELECT*FROMSur_BaseInfo_T
WHERESurCode
BETWEEN'SGCD0000000000001779'AND'SGCD0000000000001804'
orderbySurCodedesc
SELECT*FROM表
WHERE字段
BETWEEN'条件'AND'条件'
select*fromSur_VitalSigns_T
COUNT()函数返回匹配指定条件的行数。
SELECTCOUNT(recordcode)AStttFROMSur_VitalSigns_T
SELECTCOUNT(字段)AS总字段FROM表
SELECTCOUNT(DISTINCTPATIENT_NAME)AS'总人数'FROMTev_Pid
selectCOUNT(PATIENT_NAME)as'总人数'fromTev_Pid
嵌套使用
selectReportCode
fromSur_SurgReport_T
whereIDin
(selectID
fromSur_SurgReport_T
whereID='85')
GROUPBY语句
GROUPBY语句用于结合合计函数,根据一个或多个列对结果集进行分组。
SELECT字段,SUM(字段)FROM表
GROUPBY字段
select*fromStk_CodeRule_T
selectCodeFieldName,SUM(BaseIndex)
fromStk_CodeRule_T
groupbyCodeFieldName
selectSur_OperaterName,surtype,count(SurType)as'总计'
fromSur_BaseInfo_T
groupbySur_OperaterName,SurType
orderbySur_OperaterName
--select字段,字段,count(字段)as’列名‘
--from表
--groupby字段,字段
--orderby字段
SQLCREATEVIEW视图语法
CREATEVIEW视图名字AS
SELECT字段
FROM表名字
WHERE条件
CREATEVIEWTest_oAS
SELECTTableName
FROMStk_CodeRule_T
WHERECodeFieldName='UnitCode'
SQLCREATEORREPLACEVIEWSyntax
CREATEORREPLACEVIEWview_nameAS
SELECTcolumn_name(s)
FROMtable_name
WHEREcondition
select*fromSur_VitalSigns_T
SELECT*FROMSur_VitalSigns_TWHERERecordTime='2015-04-2711:
02:
52.000'
SQLISNOTNULL
我们如何选取在"Address"列中不带有NULL值的记录呢?
我们必须使用ISNOTNULL操作符:
SELECT字段,字段,字段FROM表
WHERE字段ISNOTNULL
select字段1,字段2from表
where字段2isnotnull
selectPATIENT_NAME,DATE_TIME_OF_BIRTH
fromTev_Pid,Tev_Pv1
whereTev_Pid.PATIENT_IDENTIFIER_LIST=Tev_Pv1.PATIENT_IDENTIFIER_LIST
andsex='男'
selectPATIENT_NAME,DATE_TIME_OF_BIRTH
fromTev_Pid
wheresex='男'
selectTev_Pid.PATIENT_NAME,DATE_TIME_OF_BIRTH,Tev_Pv1.VISIT_NUMBER
fromTev_Pid,Tev_Pv1
whereTev_Pid.PATIENT_IDENTIFIER_LIST=Tev_Pv1.PATIENT_IDENTIFIER_LIST
截取数据库10条记录
selecttop10*fromTev_Pid
orderbynewid()
获取sql所有数据库名称
SelectNameFromMaster..SysDatabasesorderByName
获取数据库
SelectNameFromSysObjectsWhereXType='U'orderByName
获取系统数据库
SelectNameFromSysObjectsWhereXType='S'orderByName
--获取数据库所有字段名
SelectNameFromSysColumnsWhereid=Object_Id('Tev_Pid')
select*fromTev_Pv1
select*fromTev_Pid
--(cast(substring([EvtSysData].[dbo].[Tev_Pv1].[ADMIT_DATE_TIME],1,4)asint)-cast(substring([EvtSysData].[dbo].[Tev_Pid].[DATE_TIME_OF_BIRTH],1,4)asint))between'24'and'70')
SELECT*FROMTev_PidWHEREDATEDIFF(year,19390210,GETDATE())>29
左连接
SELECT表1。
字段,表2。
字段
FROM表1
LEFTJOIN表2
ON表1。
字段_ID=表2。
字段_ID
selectTev_Pid.PATIENT_IDENTIFIER_LIST,PATIENT_NAME,Sur_BaseInfo_T.SurName
fromTev_Pid
leftjoinSur_BaseInfo_T
onTev_Pid.PATIENT_IDENTIFIER_LIST=Sur_BaseInfo_T.PatientID
leftjoin(左联接):
返回包括左表中的所有记录和右表中联结字段相等的记录。
3
rightjoin(右联接):
返回包括右表中的所有记录和左表中联结字段相等的记录。
4
innerjoin(等值连接):
只返回两个表中联结字段相等的行。
--在SQL中增加HAVING子句原因是,WHERE关键字无法与合计函数一起使用。
Count函数
--COUNT返回指定列不同值的记录数
Distinct函数
--distinct返回唯一不同的值
--EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
--EXISTS指定一个子查询,检测行的存在。
----分析器会先看语句的第一个词,当它发现第一个词是SELECT关键字的时候,它会跳到FROM关键字,然后通过FROM关键字找到表名并把表装入内存。
--接着是找WHERE关键字,如果找不到则返回到SELECT找字段解析,如果找到WHERE,则分析其中的条件,完成后再回到SELECT分析字段。
最后形成一张我们要的虚表。
----WHERE关键字后面的是条件表达式。
条件表达式计算完成后,
--会有一个返回值,即非或,非即为真(true),即为假(false)。
--同理WHERE后面的条件也有一个返回值,真或假,来确定接下来执不执行SELECT。
----分析器先找到关键字SELECT,然后跳到FROM关键字将STUDENT表导入内存,并通过指针找到第一条记录,
--接着找到WHERE关键字计算它的条件表达式,如果为真那么把这条记录装到一个虚表当中,指针再指向下一条记录。
--如果为假那么指针直接指向下一条记录,而不进行其它操作。
一直检索完整个表,并把检索出来的虚拟表返回给用户。
--EXISTS是条件表达式的一部分,它也有一个返回值(true或false)。