问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

最基础的sql知识

发布网友 发布时间:2022-04-07 18:09

我来回答

6个回答

懂视网 时间:2022-04-07 22:30


           (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

                          (4)更新主键记录时,同样有级联更新和拒绝执行的选择。

exp:

CREATE TABLE student_course1(
    sno char (7) not null foreign key(sno)  references
                           student(sno) on delete  cascade,//这个就是级联删除
    cno char (5) not null foreign key(cno)  references
                           course(cno) on delete no action,//这个就是拒绝删除
    grade decimal(5,0) null check(grade>=0 and
                           grade<=100))//这里我介绍一下check,作用是用来限制你列的范围。

 

5.修改表的内容(这里不是指对表中的数据进行操作,而是表的属性):

添加或删除列(前提不是主键):

ALTER TABLE 表名 ADD 列名 类型 [NULL][,列名 类型 [NULL]…];//添加
ALTER TABLE 表名 DROP COLUMN列名;//删除

修改列的属性(前提不是主键):

ALTER TABLE表名 ALTER COLUMN 列名 类型 [NULL | NOT NULL] [,列名 类型 [NULL | NOT NULL]]…);

注意:一个列要改变成非空值(NOT NULL),要求该列当前不含有空值,如果不选择该项,其默认的值保持原有的值;若一个列要改变数据类型,则该列数据必须全为空值,否则不能改变。

增加主键:

alter TABLE  表名 add constraint pk_表名 primary key(这里是列的名字)

删除主键:

这个比较麻烦,先要把约束删掉,然后在删。

select * from sysobjects where xtype=‘PK‘这个是查当前的主键。

alter table 表名 drop constraint 主键的约束名就可以了。

删除表:

drop table 表名.

6.建立索引

索引好处是为了加快对数据的读取的,坏处是会增加额外的物理空间,数据改变的时候还要话时间对索引进行修改要花很多的时间。

添加索引:

CREATE [UNIQUE] {CLUSTERED|NONCLUSTERED} INDEX <索引名> ON <表名>(<列名1>[,<列名2>···])

删除索引:

DROP INDEX <表名>.<索引名1> [,<表名>.<索引名2>···]

exp:Create unique clustered index kh_ind on  course(cno);

Drop index course.kh_ind;

7.对sql表中的数据进行更新

 7.1数据的插入

 first:   INSERT [INTO] <表名>[(<列名1>,…,<列名n>)]  VALUES (<常量1>,…,<常量n>)

second:INSERT INTO <表名>[(<列名1>,…,<列名n>)]  子查询

7.2数据更新

UPDATE <表名>SET <列名1>=<表达式l> [,<列名2>=<表达式2>,…] [FROM <表名1>[,<表名2>,…]] [WHERE <条件>]

exp:  UPDATE student_courseSET  grade = 0 FROM  studentWHERE  dept =‘计算机系‘  and student.sno=student_course.sno

7.3数据删除

DELETE FROM <表名> [FROM <表名1>[,<表名2>,…]][WHERE 条件]

exp:  DELETE FROM student_courseWHERE grade is null


7.4数据查询
 SELECT <投影的字段列表>
        FROM <参与查询的表列表>
        [WHERE <查询选择的条件> ]
        [GROUP BY <分组表达式>]
                                 [HAVING<分组查询条件>]
        [ORDER BY <排序表达式> [ASC∣DESC ]]

exp:SELECT DISTINCT sname as 姓名,dept as 系名,
              year(getdate())-year(birthday) as 年龄
FROM student


7.5其他

介绍一下distinct这个是为了去重的。还有:SQL Server的通配符有以下几个:%代表任意多个字符。(下划线)代表单个字符。[ ]代表指定范围内的单个字符,[ ]中可以是单符,也可以是字符范围。[ ^]代表不在指定范围内的单个字符,[^ ]中可以是单个字符,也可以是字符范围。

这里有一篇将通配符很好的可以看一下:

点击打开链接


7.6集合

IN <值表>,  NOT IN <值表>使用这两个谓词

exp:SELECT Sname,Ssex
    FROM  Student
    WHERE Sdept IN ( ‘IS‘,‘MA‘,‘CS‘ );


7.7空值

is null , is not null不能用=取代is


7.8 order by

我的话就是用来给选定的集合排序的

exp:SELECT  *
        FROM  Student
        ORDER BY Sdept,Sage DESC;

聚集函数 :

计数
COUNT([DISTINCT|ALL] *)
COUNT([DISTINCT|ALL] <列名>)
计算总和
SUM([DISTINCT|ALL] <列名>)    
 计算平均值
AVG([DISTINCT|ALL] <列名>)
最大最小值
      MAX([DISTINCT|ALL] <列名>)
     MIN([DISTINCT|ALL] <列名>)

7.9 group by

我的话就是用来分组的

exp:SELECT s#, AVG(score)
    FROM SC
    GROUP BY s#

having的作用是为了对聚集函数得到的进行筛选

exp:select sno
     from sc
    group by sno
    having count(*)>3

8.一些谓词

any,some,all

any的意思只要存在一个就可以满足,some和any差不多满足就行,all是全部满足

exp: SELECT Sname,Sage
    FROM    Student
    WHERE Sage < ANY (SELECT  Sage
                                         FROM    Student
                                         WHERE Sdept= ‘ CS ‘)
           AND Sdept <> ‘CS ‘ ; //这个符号是不等于的意思

9.连接

9.1内连接(也就是自然连接)

first:SELECT <投影的字段列表>
          FROM  <表1>  [INNER]  JOIN <表2>
          ON  <表1.列1> = <表2.列2>

second:SELECT <投影的字段列表>
           FROM  <表1> ,<表2>
           WHERE <表1.列1> =<表2.列2>

这是两种语法但是效果是一样的

exp:SELECT s.*
FROM  student s , student_course sc , course c
WHERE    s.sno=sc.sno
                  and sc.cno=c.cno
                  and c.cname=‘数据库原理及应用‘

9.2外连接(本质上还是用到了自然连接)

分为三种左外连接,右外连接,全外连接。

左外连接是对连接条件中左边的表不加限制,在右边增加万能行(全由空值组成);
右外连接是对连接条件中右边的表不加限制,在左边增加万能行(全由空值组成) ;
全外连接是对连接条件中的两个表都不加限制,在两边增加万能行(全由空值组成),所有两个表中的行都会包括在结果集中。

左外连接的语法为:
 SELECT <投影的字段列表>
 FROM  <表1>  LEFT  JOIN <表2>
                              ON  <表1.列1> = <表2.列2>
右外连接的语法为:
 SELECT <投影的字段列表>
 FROM  <表1>  RIGHT  JOIN <表2>
                              ON  <表1.列1> = <表2.列2>
全外连接的语法为:
 SELECT <投影的字段列表>
 FROM  <表1>  FULL  JOIN <表2>
                            ON  <表1.列1> = <表2.列2>

exp(右外连接):SELECT sno, student_course.cno,cname,grade
FROM  student_course  RIGHT JOIN course ON  student_course.cno=course.cno


9.3自连接(就是自己和自己连接)

exp:SELECT s1.sno, s1.sname,s2.sno,s2.sname
FROM  student  s1  JOIN student  s2  ON
              s1.sname=s2.sname
WHERE  s1.sno<s2.sno

9.4交叉连接(就是笛卡尔积的运算)

first :SELECT <投影的字段列表>
FROM  <表1>  CROSS  JOIN <表2>

second:SELECT <投影的字段列表>
FROM  <表1>, <表2>

10 exist量词

 使用存在量词EXISTS或NOT EXISTS后,若内层查询结果非空或空,则外层的WHERE子句返回真值,否则返回假值。

exp:SELECT DISTINCT sname
FROM  student
WHERE EXISTS
      ( SELECT * FROM student_course
        WHERE sno=student.sno and cno=‘10101‘ )

这里讲一下exist和in的区别,好像是exist的效率大于in的,相同的地方我感觉是差不多的使用起来(原谅我语文不好)

11合并结果集

 SELECT 语句1UNION  [ALL]SELECT 语句2

注意:(1)UNION中的每一个查询所涉及到的列必须在列数、顺序和类型上保持一致。(2)最后结果集中的列名来自第一个查询语句。(3)若UNION中包含ORDER BY子句,则将对最后的结果集排序。(4)默认将在结果集中删除重复的行,除非使用ALL关键字。


12.查询的时候建立新表

SELECT <投影的字段列表>INTO <新表>FROM <参与查询的表列表> [ WHERE <查询选择的条件> ][ GROUP BY <分组表达式> ] [ HAVING <分组查询条件> ]
 [ ORDER BY <排序表达式> [ ASC∣DESC ] ]
由于新表的结构由<投影的字段列表>定义,所以<投影的字段列表>中的每一列必须有名称,如果是一个表达式,则应该为其指定别名。





关于sql的一部分知识

标签:

热心网友 时间:2022-04-07 19:38

企业管理器》》控制台跟目录》》加号一个一个点开》》找到数据库》》
新建一个数据库 》》加号点开》》新建表》》在右边选中你新建的表》》
右键》》设计表》》》》》》》》》》
你学过access以后的我就不说了
呵呵

ASP与SQL数据库连接:
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
%>

热心网友 时间:2022-04-07 20:56

太基础了 还是好好看文档吧 这里关于sql server 99%的问题文档里面都有

热心网友 时间:2022-04-07 22:31

查看企业管理器自带的帮组文档啊!至于怎么和ASP连接,你可以在百度里面随便搜索一下就好多,比方你搜索如何用ASP访问数据库?就有好多的例子!

热心网友 时间:2022-04-08 00:22

进企业管理器,按F1,里面基本都有

热心网友 时间:2022-04-08 02:30

选择数据库下的表项 右击 有菜单选的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 为什么要通过给排水科学与工程专业本科教育评估 一辆奔驰车(可能是北京奔驰),大灯是是圆形的,是六缸,是什么型号的呢? 妇女摘环手术费是多少钱?麻醉费是多少钱 哪些高校给水排水工程专业通过评估 前脸一边个一个圆灯的老款车是什么,车型方方正正的,不是宝马E系和桑塔纳 给排水专业考研差学科排名怎么查啊? 取环手术多少钱? 全新一代福特Bronco外观部件曝光 格栅形似F150/圆形复古大灯 请问取环要花多少钱? 外形时尚硬派!日前,福特全新Bronco渲染图曝光,新车整体造型非常的硬派,前脸使用圆形大灯非常的时尚! 不是玩笑,真的叫“哈弗大狗”!这辆哈弗全新SUV你会买吗? 五羊本田锋芒2.WH125,车大灯有圆款的吗?这个车那年停产的! 女生取环要多少钱? 取环多少钱? 懂车的进,这是劳斯莱斯幻影coupe还是魅影啊,魅影有没有老款是和图一样带圆灯的? 雪佛兰什么车头是圆灯 昨天晚上我在拼多多上买了一条裤子和一双鞋什么时间能给我送过来呀? 雪弗莱后面大灯是圆的是什么车 大灯是圆的大众车叫啥 哈弗全新越野车亮相保定街头,圆形大灯!比北京212精致多了 宾利圆的大灯有几款 东南大学给排水专业有没有通过评估 长江大学给排水科学与工程专业怎么样?好不好,就业前景及专业评价 我是学给排水专业的,这个专业需要考什么证书? 南华大学给排水工程专业怎么样,评价好不好 给排水专业的职称评定是怎么评 给排水设计要考什么证 给排水工程通过本专业教育评估的大学本科学历的学校有哪些 本科给排水研究生环境工程评哪个专业中级职称好 考给排水注册工程师需要哪些条件 给排水考哪些证??? 主机里的开关电源换一个多少钱?坏了就要换,不能修吗 电脑主机换个开关电源一般要多少钱? 弱弱的问下电脑开关电源的价格是多少 电脑开关电源大概多少钱 台式电脑启动电源多少钱 一个普通电脑开关电源值多少钱? 电脑显示屏开关电源修理费要多少 长硕电脑开关电源多少钱,ac输入200v 台式电脑换了个450开关电源花了150贵吗?