SQL数据库常用功能

合集下载

sql数据库应用场景

sql数据库应用场景

sql数据库应用场景SQL数据库应用场景随着信息技术的快速发展,各行各业都在不断积累和处理大量的数据。

而SQL数据库作为一种常用的数据库管理系统,广泛应用于各种应用场景中。

本文将从几个典型的应用场景出发,介绍SQL数据库在不同领域的应用。

1. 电子商务在电子商务领域,SQL数据库被广泛应用于商品管理、订单管理、用户管理等方面。

通过SQL数据库,可以高效地存储和管理大量的商品信息和用户数据。

例如,可以使用SQL数据库来存储商品的基本信息(如名称、价格、库存等),通过SQL查询语句可以方便地实现商品的搜索、排序等功能。

同时,通过SQL数据库的事务管理机制,可以确保订单的一致性和完整性,避免出现库存错误或重复下单等问题。

2. 社交媒体在社交媒体领域,SQL数据库常被用于用户关系管理、消息管理等方面。

例如,在一个社交媒体平台上,可以使用SQL数据库存储用户的基本信息(如用户名、密码、个人资料等),并通过SQL查询语句实现好友关系的管理和查找。

同时,通过SQL数据库的索引功能,可以高效地查询某个用户的消息记录或实现消息推送功能。

3. 物流管理在物流管理领域,SQL数据库被广泛应用于订单管理、配送管理等方面。

例如,在一个物流系统中,可以使用SQL数据库存储订单的相关信息(如订单号、收货地址、配送状态等),并通过SQL查询语句实现订单的跟踪和查询。

同时,通过SQL数据库的事务管理机制,可以确保订单的准确性和时效性,避免出现漏发货或多次配送等问题。

4. 医疗健康在医疗健康领域,SQL数据库常被用于患者管理、病例管理等方面。

例如,在一个医院信息系统中,可以使用SQL数据库存储患者的基本信息(如姓名、年龄、病历号等),并通过SQL查询语句实现患者的就诊记录和诊断结果的管理。

同时,通过SQL数据库的安全机制,可以对患者的隐私信息进行保护,确保医疗数据的安全性和机密性。

5. 金融服务在金融服务领域,SQL数据库被广泛应用于客户管理、交易管理等方面。

SQL数据库快捷键大全

SQL数据库快捷键大全

快捷键·F5这个恐怕是最常用的快捷键了,用来代替那个“!执行”按钮,写完SQL语句后手不用离开键盘。

虽然没什么技术含量,但不会用的人八成是菜鸟。

快捷键·CTRL+C/V复制/粘贴。

COPY流程序员神器,安全环保无污染。

不多说,只会右键的同学直接定性为菜鸟。

MS所有文本编辑器通用。

快捷键·↑↓←→上下左右。

功能全人类都知道.另外据验证,在SSMS启动时快速输入↑↑↓↓←→←→BABA 没有加30条命效果。

MS所有文本编辑器通用。

快捷键·SHIFT+↑↓←→移动的同时选中移动范围内的代码,配合F5和其它命令用。

MS所有文本编辑器通用。

快捷键·CTRL+↑↓不移动光标,上下滑动查询窗口。

效果等同按竖行滑动条拖。

全键盘流同学和装B流同学可用。

快捷键·CTRL+←→行内跳词移动光标。

自己写个SELECT *FROM TB再试试这个就知道了。

MS所有文本编辑器通用.快捷键·CTRL+A全选所有文本。

用来清空编辑界面,或复制本界面全部语句时常用。

MS所有文本编辑器通用。

快捷键·HOME/END光标移动至本行首/尾。

使用以下连招可选中本行文字:HOME —— SHIFT+END 或END -- SHIFT+HOME.MS所有文本编辑器通用。

快捷键·CTRL+HOME/END光标移动至全文首/尾。

按住CTRL加上面那个连招能选中所有文字,效果同CTRL+A。

另外在浏览超长SQL时,用滚轮会慢,用CTRL+END看最后一行的内容比较快。

MS所有文本编辑器通用。

快捷键·TAB不选中文本或选中部分文本时是添加一个制表符,选中整行或多行代码时按下是全部增加缩进。

快捷键·SHIFT+TAB不选中整行时无效果,选中整行或多行代码时是全部减少缩进.和上面那个功能一起练熟多用能让代码更有层次感.快捷键·CTRL+TAB多个查询窗口之间切换,这个功能应该知道的人少一些,实际用的也不多,远不如ALT+TAB 多,因为大多数人不会开太多查询窗口,多是在同一个窗口下做操作的.全键盘流同学和装B流同学必备,其它同学可以无视。

SQL2000数据库常用语句

SQL2000数据库常用语句
显示结果:
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
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
三、技巧
1、1=1,1=2的使用,在SQL语句组合时用的较多
“where 1=1” 是表示选择全部 “where 1=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 )
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

数据库常用sql语句有哪些

数据库常用sql语句有哪些

数据库常用sql语句有哪些数据库常用sql语句有哪些结构化查询语言简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

下面是店铺整理的数据库常用sql语句有哪些,欢迎大家分享。

数据库常用sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2<score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC whereS.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名 ,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[<60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩 > T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩 desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) asagefrom studentwhere CONVERT(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的`学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score<60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e<60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B whereA.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。

数据库常用SQL语句(二):多表连接查询

数据库常用SQL语句(二):多表连接查询

数据库常⽤SQL语句(⼆):多表连接查询前⾯主要介绍了单表操作时的相关查询语句,接下来介绍⼀下多表之间的关系,这⾥主要是多表数据记录的查询,也就是如何在⼀个查询语句中显⽰多张表的数据,这也叫多表数据记录的连接查询。

在实现连接查询时,⾸先是将两个或两个以上的表按照某种关系连接起来(连接后形成⼀个新的关系表),然后再查询到所要求的的数据记录。

连接查询分为外连接查询和内连接查询。

⼀、表和表之间的关系并(UNION):并操作是把具有相同字段数⽬和字段类型的两个或多个表合并到⼀起。

2.笛卡尔积:两个表之间进⾏笛卡尔积后形成新的关系中字段两个表中的会合并在⼀起,数据记录会进⾏组合,⽐如第⼀个表中有3条记录,第⼆个表中有5条记录,两个表经过笛卡尔积操作后将⼀共会产⽣3*5=15 种数据记录。

3.连接操作(JOIN):在表关系的笛卡尔积数据记录中,按照两个表中相应字段值的⽐较条件进⾏选择⽣成⼀个新的关系。

其实就是将笛卡尔积后的数据记录进⾏筛选得到相应的数据,根据筛选⽅式不同,分为内连接(INNER JOIN),外连接 (OUTER JOIN),交叉连接(CROSS JOIN)。

这些连接的基础都是笛卡尔积。

⼆、查询操作1. 内连接查询:保留表关系中所有匹配的数据记录,舍弃不匹配的记录,注意,是只会保留符合匹配条件的记录,根据匹配条件分为:⾃然连接(NATURAL JOIN)、等值连接、不等连接。

⾃然连接:在笛卡尔积的数据记录中,⾸先⾃动根据表关系中相同名称的字段进⾏记录匹配(即只保留两个同名的字段下值相同的这条记录),然后去除重复字段(重复的字段保留⼀个),使⽤关键字 NATURAL JOIN来进⾏⾃连接查询操作,⾃连接⾃动完成,⽆法指定连接条件。

查询举例:等值连接:内连接查询中的等值连接,使⽤INNER JOIN...ON...的⽅式来实现,就是在关键字ON后⾯使⽤关系运算符“=”来指定等值条件,顾名思义,就是两个字段的值相等的条件,举例如下:如图中结果,等值连接相⽐⾃然连接,只是没有去掉重复的字段deptno。

数据库第4章 SQL语言基础及数据定义功能

数据库第4章 SQL语言基础及数据定义功能

第4章SQL语言基础及数据定义功能用户使用数据库时需要对数据库进行各种各样的操作,如查询数据,添加、删除和修改数据,定义、修改数据模式等。

DBMS必须为用户提供相应的命令或语言,这就构成了用户和数据库的接口。

接口的好坏会直接影响用户对数据库的接受程度。

数据库所提供的语言一般局限于对数据库的操作,它不是完备的程序设计语言,也不能独立地用来编写应用程序。

SQL(Structured Query Language,结构化查询语言)是用户操作关系数据库的通用语言。

虽然叫结构化查询语言,而且查询操作确实是数据库中的主要操作,但并不是说SQL只支持查询操作,它实际上包含数据定义、数据查询、数据操作和数据控制等与数据库有关的全部功能。

SQL已经成为关系数据库的标准语言,所以现在所有的关系数据库管理系统都支持SQL。

本章将主要介绍SQL语言支持的数据类型以及定义基本表和索引的功能。

4.1 SQL语言概述SQL语言是操作关系数据库的标准语言,本节介绍SQL语言的发展过程、特点以及主要功能。

4.1.1 SQL语言的发展最早的SQL原型是IBM的研究人员在20世纪70年代开发的,该原型被命名为SEQUEL (Structured English QUEry Language)。

现在许多人仍将在这个原型之后推出的SQL语言发音为“sequel”,但根据ANSI SQL委员会的规定,其正式发音应该是“ess cue ell”。

随着SQL语言的颁布,各数据库厂商纷纷在其产品中引入并支持SQL语言,尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间还是存在一定的差异,这些差异不利于初学者的学习。

因此,我们在本章介绍SQL时主要介绍标准的SQL语言,我们将其称为基本SQL。

从20世纪80年代以来,SQL就一直是关系数据库管理系统(RDBMS)的标准语言。

最早的SQL标准是1986年10月由美国ANSI(American National Standards Institute)颁布的。

(完整word版)SQL常用的增删改查语句、视屏笔记

(完整word版)SQL常用的增删改查语句、视屏笔记

SQL:结构化查询语言,是国际化标准组织采纳的标准数据库语言作用:数据库管理员可以用利用次语言操作数据库系统,即:SQL是一种能够被数据库系统读懂的操作语言。

T—SQL是微软公司针对SQL Server这种关系数据库所定义的一种SQL语言,用户可以完成Server数据库中的所有操作。

SQL的分类:(1):数据定义语言,DDL用来创建数据库和数据库中的各种对象数据库中的对象包括:表、视图、索引、存储过程、触发器DDL常用的命令包括:create、alter、drop(2):数据操纵语言,DML可以完成对数据库中数据的查询、更新、删除、插入的功能DML常用的命令包括:select、update、delete、insert(3)数据控制语言,DCLDCL常用的命令包括:grant、revoke、deny(4)数据类型1、数字数据类型a、整型数据类型:bigint、int、smallint、tinyintb、浮点数据类型:float、realc、固定精度数据类型:decimal、numericd、货币数据类型:money、smallmoney将数据格式转换成字符串方法:STR(ID);---ID为数据类型,STR(ID)为字符串2、字符数据类型:varchar、char、text、nchar、nvarchar、ntext区别char和varchar数据类型:char数据类型是存放固定长度的字符Varchar数据类型是存放动态长度的字符char(14),实际放入到数据库的字符长度为14个字符,如果实际存储的长度小于定义的长度,那么数据库会在次字符串后面加上3个空格1、insert语句:insert语句是属于SQL语言中的DML作用:为表插入数据你向一个表中插入一条新记录,但有一个字段没有提供数据。

在这种情况下,有下面的四种可能:1、如果该字段有一个缺省值(默认值),该值会被使用。

2、如果该字段可以接受空值,而且没有缺省值,则会被插入空值。

sql常用需记忆

sql常用需记忆

应用程序作用:响应操作并显示结果、向数据库请求数据要求:美观、操作简单方便数据库作用:存储数据、检索数据、生成新的数据要求:统一、安全、性能等数据库能够做什么存储大量数据,方便检索和访问保持数据信息的一致、完整共享和安全通过组合分析,产生新的有用信息关系数据库关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

关系模块中常用的操作包括:数据查询,选择,投影,连接,并、交、差、除数据操作,增加,删除,修改,更新。

完整性约束包括:实体完整性,参照完整性,用户定义完整性。

创建数据库表—通过SQL创建基本语法:create table table_name(column_name1 data_type,column_name2 data_type,……)表命名规范:1.表名对大小写不敏感,为多个单词组合时每个单词间用’_’分割。

2.首字母必须是A~Z之一,其余的字符可以是字母、_、#、$和@等符号。

实例:创建一个student表,包括学号(sno)、姓名(sname)、性别(sex)、出生年月(birthday)、系号(dno)use studycreate table student(sno int ,sname varchar(50),sex tinyint,birthday datetime,dno int)表的删除语法格式:drop table table_name注意:这里表的删除不仅删除表内存储的数据,而是整个表结构都被删除了,即该表不存在了。

查看表中的数据use my_studygoselect * from student增加新列语法格式:alter table table_nameadd column_name data_type注意事项:也可以对列设置非空约束和缺省值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL数据库常用功能
(11)
一、SQL启动自动备份服务.............................................................
(11)
二、设置自动备份计划....................................................................
(55)
三、手动备份数据库........................................................................
(77)
四、手动还原备份的数据................................................................
(88)
五、手动删除日志............................................................................
16
(16)
六、手动更新数据库表..................................................................
※所有准备使用以下功能的朋友注意,请你先备份数据库,以防操作失误!
一、SQL启动自动备份服务
1、运行“服务器管理”;
2、打开“SQL Server服务管理器”对话框;
3、在服务栏选择“SQL Server Agent”服务;
4、勾选“当启动OS时自动启动服务”,即,然后点击启动按
钮启动服务;
注意:如果有手动停止过SQL服务,则在操作系统未重启的情况下,需要手动启动“SQL Server Agent”服务。

二、设置自动备份计划
5、打开“企业管理器”;
6、打开数据库下面的“管理”;
SQL Server2005\2008在如下图位置:
7、在“数据库维护管理”上点右键,选择“新建维护计划”即会弹出“数据维护计划
向导”对话框;
8、点击“下一步”,进行维护数据库选择;
9、根据需要选择备份的数据库,通常备份我们附加的数据库即可;
10、“下一步”到“更新数据优化信息”对话框,可以选择优化,也可以不用做任何选
择,直接点“下一步”;
11、在“检查数据库完整性”对话框中选择需要的策略,可以不做任何选择,直接点“下
一步”;
12、在“指定数据库备份计划”中,选择指定存储介质的类型,通常为默认的“磁盘”,
然后选择“更改”,对备份时间进行计划;
13、在“编辑反复出现的作业调度”对话框中,设置备份频率,具体备份频率视项目情
况而定;
14、设置完调度时间表后点“下一步”,进行指定备份磁盘目录,选择“使用此目录”
后点击即可在磁盘上自定义保存路径。

此处建议选上“为每个数据库创建子目录”,这样在数据库误操作后若已自动备份,还可以找到更早的数据库进行还原,以确保数据安全。

若磁盘空间有限,则可以选上“删除早于此时间的文件”,视磁盘空间大小选择保存时间。

15、设置完存储路径后点“下一步”,对“指定事务日志备份计划”进行设置,该日志
主要为备份日志,可以不用设置;
16、设置完备份日志后点“下一步”进入到“要生成的报表”对话框中,该报表为备份
报表,可以不用设置;
17、设置完报表后点“下一步”,进入到“维护计划历史记录”设置,该设置可以不用
修改;
18、“下一步”后点“完成”即完成了维护计划的设置,此时自动备份开始生效。

设置完成后我们可以在“数据库维护计划”中看到所有的计划任务,双击该计划,即可以看到详细的设置参数,也可以进行参数修改。

三、手动备份数据库
1、进入“企业管理器”,在“数据库”上点右键,选择“所有任务”中的“备份数据库”;
SQL Server2005\2008在如下图位置:
2、在弹出的“SQL Server备份”对话框中的“数据库”后面选择监控系统所附加的数据库,点击“添加”,在“选择备份目的”对话框中的“文件名”后点“”选路径:
3、在“备份设备位置”下的“文件名”后填写所备份库的名字,如“数据库备份”,然后点确定;
4、选择“数据库—完全”及“重写现在媒体”点确定,备份完成后会有备份成功提示。

四、手动还原备份的数据
1、进入“企业管理器”,在“数据库”上点右键,选择“所有任务”中的“还原数据库”;
2、在弹出的“还原数据库”对话框中的“还原为数据库”后面选择监控系统所附加的数据库,选择“从设备”:
SQL Server2005\2008在如下图位置:
3、点“选择设备”即弹出“选择还原设备”对话框,点击“添加”在“选择还原目的”文件名后面点“”,选择保存的备份文件,点“确定”即可,还原完成后会有还原成功提示。

五、手动删除日志
1、进入“企业管理器”,在数据库下面选择监控用附加数据库,在表下面找到TTLog 表,然后点右键选择---所有任务---生成SQL脚本---弹出“生成SQL脚本”对话框
SQL Server2005\2008在如下图位置:
2、在“生成SQL脚本”对话框点击“选项”---勾选“编写主键、外键、默认值和检查约束角本”---点击“确定”---弹出保存路径对讲话框
3、在弹出的路径对讲话框中选择保存路径,并将保存文件名后的“*”号改为你的文件保存名称---点击保存
4、弹出成功编写角本对话框即保存完成;
5、在工具中打开“SQL查询分析器”
SQL Server2005\2008在如下图位置:
6、注意将数据库选择为监控系统所附加的数据库,如下图中的“CCTV”
SQL Server2005\2008在如下图位置(注意如下图的CCTV_new的数据库选择):
7、用记事本打开刚保存的文本文件,如本例中的“TTLog.sql”---“Ctrl+A”全选文件中的命令行---“Ctrl+C”复制全部命令行---“Ctrl+V”将如下命令行全文粘贴到空白对话框中---点击“执行查询”---显示“命令已成功完成”即表示执行完成,此时TTLog表中应该变为空表;
8、选择监控系统附加的数据库(本例中为“CCTV”)---右键选择“所有任务”---选择“分离数据库”;
9、打开原附加数据库(本例中为“CCTV”)所在目录,删除“CCTV_log.LDF”文件;
10、选择企业管理器中的“数据库”---选择“所有任务”---选择“附加数据库”,将刚才分离的数据库重新附加上来
11、选择上一步中附加的数据库---右键选择“所有任务”---选择“收缩数据库”:
SQL Server2005\2008在如下图位置:
12、在弹出的“收缩数据库”对话框中,直接点确定即可。

弹出“数据库已顺利收缩”即表示操作完成(如果数据库总量过大,则请勾上“在收缩前将页移到文件起始位置”,该功能不要经常用):
SQL Server2005\2008在如下图位置:
六、手动更新数据库表
1、打开企业管理器,找到原使用数据库如图中“CCTV-2”,另将最新的数据库附加到SQL中,如图中的“CCTV_new”:
2、在数据库原库(CCTV-2)中选择表,然后再右侧删除需要更新的表,通常需要更新的表有:TTCheckHost、TTObjectGroup、TTObjType,具体实情况:
3、在数据库最新库(CCTV-new)中,选择“所有任务”中的“导出数据”;如果是SQL 2008则在数据库最新库(CCTV-new)中点右键----任务---导出数据:
SQL Server2000如下图:
4、正确选择数据源、身份验证方式,并真写正确的用户名和密码,选择数据库为新数据库(CCTV_new):
SQL Server2000如下图:
需要注意的是,SQL Server2005数据库的数据源应选择为“SQL Native client”,SQL Server2008数据库的数据源应选择为“SQL Server Native client10.0”服务器名称应为“计算机名\数据库实例名”,如上图的“TYL-JSBSERVER\SQL2008”
5、正确选择目的库、身份验证方式,并真写正确的用户名和密码,选择数据库为原数据库(CCTV-2):
SQL Server2000如下图:
SQL Server2005/2008如下图:
需要注意的是,SQL Server2005数据库的数据源应选择为“SQL Native client”,SQL Server2008数据库的数据源应选择为“SQL Server Native client10.0”
服务器名称应为“计算机名\数据库实例名”,如上图的“TYL-JSBSERVER\SQL2008”
6、选择“从源数据库复制表和视图”:
SQL Server2000如下图:
SQL Server2005/2008如下图:
7、勾选原数据库中已经删的表:SQL Server2000如下图:
SQL Server2005/2008如下图:
8、选中“立即运行”,点下一步:SQL Server2000如下图:
SQL Server2005/2008如下图:
9、点击“完成”:
10、弹出如下提示则说明复制数据完成:
11、在“正在执行包”对话框界面,可以查看复制情况,所有信息前面都打勾且状态显示完成表示复制正常,否则复制不成功。

相关文档
最新文档