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

我想学SQL数据库的知识!

发布网友 发布时间:2022-04-25 23:36

我来回答

11个回答

懂视网 时间:2022-04-29 23:28


           (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-29 20:36

《东南大学SQL数据库基础资料》百度网盘资源免费下载

链接: https://pan.baidu.com/s/1X0OqhxxjegbZ4oYD-GNWRw

?pwd=d7k3 提取码: d7k3

东南大学 SQL数据库基础 全39讲 主讲-幸研 附复习课|各学科 学习视频目录|复习课|数据库基础003.csf|数据库基础002.csf|数据库基础001.csf|数据库基础(复习)042.csf|数据库基础(复习)041.csf|数据库基础(复习)040.csf|*目录.txt|哲学目录.txt|语言目录.txt|艺术目录.txt|医学目录.txt|心理目录.txt

热心网友 时间:2022-04-29 21:54

SQL是操作数据库的一种语言,依照我的经验,先了解一个比较用得多的关系数据库,比如Microsoft SQL Server 2005或者oracle,但是oracle我觉得比较有难度,不是一两个月所能掌握的,你先定位在了解上面,然后仔细研究一下sql语言,这个很重要,不会sql就无所谓操作数据库,就像不认识英语单词去看英语文章一样,无非就是select,delete,update,alter之类的用法,其中最重要的就是你select的用法,当然其功能也最强大,也是最难的。有sql语言用法之类的书籍的,你可以借鉴。 另外,一楼说的PL/SQL其实针对oracle数据库的自己的sql语言,它有自己的一些特点。针对Microsoft SQL Server 相应的是T-SQL,大体相差不多。

热心网友 时间:2022-04-29 23:28

基础操作很简单,主要学T-SQL的三大语句:
SELECT查询
UPDATE更新
DELETE删除
结构都差不多,SELECT,UPDATE,DELETE顶多算个修饰符,后面的内容差不多。
看例子
查询QQ为4540520用户的昵称和最后登陆时间
SELECT 用户昵称,最后登陆 FROM QQ用户表 WHERE QQ号=4540520
而删除QQ为4540520
复制SELECT 用户昵称,最后登陆 FROM QQ用户表 WHERE QQ号=4540520
改为:
1.改修饰符为DELETE
DELETE 用户昵称,最后登陆 FROM QQ用户表 WHERE QQ号=4540520
2.最后改DELETE相应的格式就行了,这条才是最终结果
DELETE FROM QQ用户表 WHERE QQ号=4540520

不知你发现没有,WHERE条件是一样的,格式也差不多,学的快,一个星期基本的操作是完全没有问题

参考资料:原创:小鱼

热心网友 时间:2022-04-30 01:20

目前的主流数据库 基本全部都是 T-SQL语句

所以你首先需要掌握最基本的 以下四种语句。
增加 语法:
Insert into 表名(列名1,列名2,...)
values(值,值......)

删除 语句:
delete 表名
where 条件列名=值

修改 语句:
Update 表名
set 需要更新的列名 = 值
where 条件列名 = 值

查询 语句:

select * from 表名 //这个是查询所有

select * from 表名
where 条件列名 = 值 //根据条件查询

还有什么不了解的直接百度HI我

热心网友 时间:2022-04-30 03:28

学视频入门吧

东南大学SQL数据库基础视频教学全42讲
http://www.verycd.com/topics/57507/

SQL Server 2005视频教程
http://bbs.365master.com/viewthread.php?tid=101677

热心网友 时间:2022-04-30 05:52

1.SQL语言
2.存储过程
3.建库,备份,恢复备份,附件数据库,远程注册服务器,优化,数据维护。

上面这些是经常用过的东西,你可以参考下。

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

先看看 数据库系统概论 这本书,然后重点学习sql语言,学习sql语言的时候,重在操作,可以自己在电脑上安装sql server 来进行实践

热心网友 时间:2022-04-30 11:32

先学 SQL 的语法
http://www.w3school.com.cn/sql/index.asp

热心网友 时间:2022-04-30 14:46

数据库原理-->SQL-->PL/SQL

热心网友 时间:2022-04-30 18:18

最好看操作实例
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人类如何才能悬浮在空中? - 知乎 人体悬浮术是真的存在吗 人体怎样才能真正的在空中悬浮 小孩c蛋白反应高是什么原因 (2014?南海区二模)如图所示,物重G为2000N,小红用800N的拉力花2s的时间... 苹果13系列升级iOS15.5好吗? 出生2o12年11月20日2点姓石光字辈取名 求龙凤胎名字:2012年6月21日(农历5月初3)凌晨0点40分出生,大的为龙,小... by和take有什么区别 takeby后面跟交通工具的区别 SQL 数据库 要掌握 那些基本啊 支气管肺炎症状消失后还需要再做x光胸片复查吗 肺炎治疗后怎样复查比较合适? 肺炎治疗后 肺炎病变治疗后复查是什么意思 肺炎需要多久做一次CT 患肺炎支原体感染,现在全好了,请问还要不要再去复查 孩子支气管肺炎好后要复查吗 肺炎复查结果 肺炎治疗完恢复后需要再拍片复查吗? 除了喜马拉雅听书,还有别的小说阅读器吗 一般肺炎治疗2周后,要复查胸片或CT。一定是必要吗?如果发热、咳嗽等都没了呢,可以不复查吗? 12岁的儿童支原体肺炎,过了将近两个月需要复查吗 喜马拉雅听书为什么看不到小说有多少章 肺炎支原体感染到呼吸道,治疗停药后多久去医院化验复查? 【电商基础】电商运营是做什么的? 学习电子商务需要哪些基础知识? 电子商务的基础是什么?? 做电商你必须知道的基础电商运营知识! 做电子商务最基础的是什么?? SQL数据库的体系 一个电脑新手如何学习SQL server数据库基本操作? SQL数据库 基本的操作语句(增、删、改、查) sql数据库认识 我是菜鸟 求SQL数据库最基本原理 sql数据库入门需要学习那些 数据库sql基本问题 阴阳师红叶的羁绊苦恋怎么打 红叶的羁绊第9关怎么打 阴阳师红叶竞速阵容怎么搭配 红叶竞速副本1 阴阳师河畔童谣副本第九层怎么打 阴阳师红叶的羁绊怎么进?进入方法和要求是什么? 网易阴阳师秘闻副本黑蛋层都过不去(除了妖刀、红叶) 数学三到六年级的所有公式 小学三至六年级的数学公式 北师大版小学三年级到六年级所有数学公式 小学一到六年级的数学公式 要简练的 请将小学一到六年级所有的数学公式列出来。 谁有小学四至六年级数学公式?? 从小学一年级到六年级的所有数学公式都有哪些? 4至6年级的数学公式