当前位置:首页 » 编程语言 » sql基础笔记
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql基础笔记

发布时间: 2023-04-23 09:47:16

㈠ PLsql数据库权限基础笔记(GRANT,REVOKE)

权限包括:

SELECT 

INSERT

UPDATE[(col1,col2)]; 可以加括号表示只赋予特定列的权限

DELETE

ALTER

ALL PRIVILEGES

...

CREATE INDEX

CREATE TABLE

ALL PRIVILEGES

...

PUBLIC 关键字可以替换用户名 代表全体用户

ALL 关键字替代权限 代表所有权限

WITH GRANT OPTION 表示 赋予用户权限的权限

GRANT OPTION FOR表示撤销赋予用户权限的权限

我们可以把权限赋予角色 然后将角色赋予用户 简化操作。

创建角色

CREATE ROLE ROLENAME;

GRANT 权限 ON 表名 TO 角色;

将角色赋予用户

GRANT ROLENAME TO USERNAME;

GRANT CONNECT TO laurent IDENTIFIED BY motDePasse

㈡ doselectpageinfo查不出数据

笔记

1. 首先,检查SQL语句是否正确,检查是否有语法错误;

2. 检查表中是否有对应的衫清猛数据,如果没有,则查不出数据;

3. 检查查询条件是否正确,是否与表中的字段匹配;

4. 检查查询语句中的参数是否正确,是否与表中的字段匹配;

5. 检查查询语句中的参数是否正确,是否与表中的字段匹配;

6. 检查是否使用了正确的索引,以及索引是否正确;

7. 检查SQL语句中的排序条件是否正或桥确;

8. 检查是否有其他程正蠢序在操作数据库,导致查询速度变慢;

9. 检查数据库服务器是否正常工作,是否有其他性能问题;

10. 检查数据库连接是否正常,是否可以正常连接数据库。

㈢ sql优化及原理详解,五分钟读懂sql优化

在我而言这算是一个复习,然后总结出来给大家当个教材吧。
我也是看视频总结出来的笔记,所以说的都很简单和浅薄。有不全面或者偏颇的地方欢迎指出,共同交流进步哈。(因为我当时是看视频总结的笔记,所以可能说的比较杂乱,我尽量写的分明一点,在最后会附上笔记,忽略我字丑)

索引是什么呢?它相当于字典的目录。
索引:index是帮助mysql高效获取数据的数据结构,索引是数据结构(树,默认是B树),hash等。
索引的弊端: 事物都是两面的,有利必然有弊。

索引的优势: 索引有这么多弊端我们还使用的原因是因为优大于劣。

索引的分类:

举个小例子让大家更理解复合索引:如果我把一个表中name,age这两个列做成复合索引(注意顺序很重要)。那么我们形成的目录一级目录是name,二级目录是age。在name相同时才会age再形成目录。因为它本身的排序不是像目录一样一行一行列出来的,所以我们尽量用目录来想象它比较好理解。下面是图解:

有几点注意的事项:

这里说一下,上面说的方法都是原生的sql,比如我现在习惯使用navicat,所以可以直接操作。。爽的不行。

然后删除查询也都是直接可视的,方便的不得了。就不多说了。

mysql做例子,还有个引擎是可以优化的。mysql中引擎分两种:

sql优化等级:

上面说的这些等级在explain中可以看到。

单表优化常用方法:

多表优化常用方法:

因为上面也提到了b树,所以还是单独聊聊吧。其实我也不是很理解。只能说一个浅显的认识而已。这里也就是简单的说一下。
首先,B树不仅可以二叉,还可以三叉,多叉。而只要大于二叉的都叫做BTree。
据说三层BTree可以存放上百万数据。
BTree一般都指B+树,数据全部存放在叶节点中。(这里简单的一个三叉树图)

好了,就写到这里吧,希望日后算法的知识会的更多以后能把B树这个坑填完~~~然后有不同意见或者自己理解的可以留言或者私聊。
全文手打,如果你觉得对你有帮助麻烦点个赞点个关注啥的~~

㈣ 数据库笔记-SQL过滤(LIKE&正则表达式)

查询语句:

结果:

查询语句:

结果:

查询语句:

结果:

查询语句:

正则表达式 [32]1,[32]定义一组字符,它的意思是匹配 3 或匹配 2,也就是“31”或者 “21”都算是匹配的。

结果:

查询语句:

结果:

如果要匹配特殊字符的,需要加上前导“”,“-”表示查找“-”,“.”表示查找“.”
这种就是 “转义(escaping)” ,在正则表达式里,本身有意义的字符,比如“.”是匹配任意字符的意思。那如果要匹配它,需要转义。
注意:在 MySQL 里,是比其他的正则表达式多一个“”的,就是“”。

趣味提问:

如何匹配“”?
答案:“\”

\([0-9] sticks?\) 匹配的是(NUM stick)或者(NUM sticks)。s后的 ? 使得s可选。

重复元字符

* 是 0 个或多个匹配
? 是 1 个或多个匹配
{n} 是指定n个匹配
{n,} 是 不少于 n 个匹配
{n,m} 是 指定匹配的范围,m不超过 255

查询语句:

^值的是字符串的开始,$是字符串的结尾。

这就是 REGEXP 与 LIKE 类似,但是它独特的好处:可以通过“定位符”只匹配“子字符串”。

结果:

㈤ 计算机三级数据库技术笔记

网络数据库技术
一、单项选择题
1. 存储在计算机内有结构的数据的集合,称为数据库。
2. 以二维表格的形式组织数据库中的数据,这种数据模型是关系模型
3. 下面哪个数据库属于中小规模数据库管理系统Access。
4. SQL Server 2000有两类数据库,分别是用户数据库和系统数据库。
5. 两个实体:学院和学生之间的联系应为一对多联系。
6. 错误的对象部分限定名是服务器名.对象名。
7. SQL Server字符型包括char和varchar。
8. 下列SQL语句中,修改表结构的是ALTER TABLE。
9. 下列SQL语句中,向表中插入数据的是INSERT。
10. 关系运算的特点是运算的对象和结果都是表。
11. 两个表连接最常用的条件是两个表的某些列值相等,这样的连接称为等值连接。
12. 在数据库查询语句SELECT中,指定分组表达式的子句是GROUP BY子句。
13. 用以限制查询结果集中的行数过多,仅指定部分结果所采用的关键字是TOP。
14. 能够在LIKE子句中匹配多个字符的通配符是%。
15. 统计组中满足条件的行数或总行数的聚合函数是COUNT。
第16到第19题基于这样的三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:
S(S#, SN, SEX, AGE, DEPT)
C(C#, CN)
SC(S#, C#, GRADE)
其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。
16. 检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是SELECT SN, AGE, SEX FROM S WHERE AGE>(SELECT AGE FROM S WHERE SN=‘王华’)
17. 检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SELECT语句是SELECT S# FROM SC WHERE C#=‘C2’ AND GRADE>= ALL (SELECT GRADE FROM SC WHERE C#=‘C2’)
18. 检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是SELECT S.SN, SC.C#, SC.GRADE FROM S, SC WHERE S.S#=SC.S#
19. 检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。正确的SELECT语句是SELECT S#, SUM(GRADE) FROM SC WHERE GRADE>=60 GROUP BY S# HAVING COUNT(*)>=4 ORDER BY 2 DESC
20. 创建视图的SQL命令是CREATE VIEW
22. 打开游标所使用的SQL命令是OPEN。
23. 请选出不属于T-SQL语言组成部分的是数据转换语言。
24. 声明变量所使用的关键字为DECLARE。
25. 按照索引的组织方式,可以将索引分为聚集索引和非聚集索引。
26. 又称为列完整性,指给定列输入的有效性的是域完整性。
27. 创建存储过程的SQL命令是CREATE PROCEDURE。
28. 不属于维护数据的触发器的是SELECT。
29. 只备份自上次备份以来发生过变化的数据库的数据,也称增量备份的是差异备份。
30. 数据库系统与外部进行数据交换的操作是导入/导出。
31. 具有数据表达方式简洁、直观,插入、删除、修改操作方便等特点的数据模型是关系模型.
32. 按一定的数据模型组织数据,对数据库进行管理的是数据库管理系统.
33. 对于这样一个关系:学生(学号、姓名、专业名、性别、出生日期、总学分),请选出关系的码(关键字)为学号
34. 两个实体:学院和学生之间的联系应为一对多联系.
35. 数据库对象的名称中各部分使用何种符号隔开“.”。
36. 每个表可以有多少个列设置为标识属性identity1。
37. 下列SQL语句中,创建表结构的是CREATE TABLE。
38. 下列SQL语句中,删除表中的指定数据的是DELETE。
39. 关系运算的特点是运算的对象和结果都是表。
40. 从表中选出指定的属性值(列名)组成一个新表,这样的关系运算是投影。
41. 在数据库查询语句SELECT中,指定表或视图的子句是FROM子句。
42. 在数据库查询语句中,为使用自己选择的列标题而更改查询结果的列标题名,所使用的关键字是AS。
43. 在WHERE子句中,可以使用通配符来对字符串进行模糊匹配的关键字是LIKE。
44. 在学生表XS表中查询总学分尚未定的学生情况,正确的查询语句是SELECT * FROM XS WHERE 总学分 IS NULL。
45. 在查询语句中对查询的结果进行排序,用于升序排序的关键字是ASC。
第16到第19题基于这样的三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:
S(S#, SN, SEX, AGE, DEPT)
C(C#, CN)
SC(S#, C#, GRADE)
其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。
46. 检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是;SELECT SN, AGE, SEX FROM S WHERE AGE>(SELECT AGE FROM S WHERE SN=‘王华’)
47. 检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SELECT语句是;SELECT S# FROM SC WHERE C#=‘C2’ AND GRADE>= ALL (SELECT GRADE FROM SC WHERE C#=‘C2’)
48. 检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是;SELECT S.SN, SC.C#, SC.GRADE FROM S, SC WHERE S.S#=SC.S#
49. 检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。正确的SELECT语句是;SELECT S#, SUM(GRADE) FROM SC WHERE GRADE>=60 GROUP BY S# HAVING COUNT(*)>=4 ORDER BY 2 DESC
50. 修改视图的SQL命令是ALTER VIEW。
51. 若用如下的SQL语句创建一个student表:(‘1031’, ‘曾华’, NULL, NULL)
52. 在使用游标时首先要执行的是声明游标。
53. SQL语言是一种用于数据库查询的结构化语言。
54. 请选出不属于T-SQL语言组成部分的是数据转换语言。
55. T-SQL中局部变量用哪种符号进行标识@。
56. 请选择不是索引的作用的是使表中数据排列更为美观。
57. 如果一个表中的一个字段或若干个字段的组合是另一个表的码,则称该字段或字段组合为该表的外码。
58. 执行存储过程的SQL命令是EXEC 。
59. SQL Server 2000中不允许使用的备份介质是只读光盘。
60. 从外部数据源中检索数据,并将数据插入到SQL Server表的过程,称为导入数据。
61、表格中的一行称为一个记录,一列称为一个字段,每列的标题称为字段名。
62、SQL Server 2000有两类数据库:系统数据库和用户数据库。
63、在设计表时列的identity属性:实现的是自动增长的功能。
64、创建数据库的SQL命令:CREATE DATABASE。
65、删除数据库的SQL命令:DROP DATABASE。
66、创建表的SQL命令:CREATE TABLE。
67、删除表的SQL命令:DROP TABLE。
68插入表数据的SQL 命令:INSERT。
69、删除表数据的SQL命令:DELETE和TRUNCATE TABLE,了解二者的区别。
70、修改表数据的SQL命令:UPDATE。
71、使用SQL命令创建视图:CREATE VIEW。
72、使用SQL命令修改视图:ALTER VIEW。
73、当视图所依赖的基本表有多个时,不提倡向该视图插入数据,因为这会影响多个基本表。
74、使用SQL命令删除视图:DROP VIEW。
75、使用SQL命令声明游标:DECLARE。
76、声明游标时SCROLL的用法:可以使游标向前、向后滚动。
77、使用SQL命令打开游标:OPEN。
78、使用SQL命令利用游标读取数据:FETCH。
79、控制游标的关键字:NEXT| PRIOR| FIRST | LAST| ABSOLUTE n| RELATIVE n。
80、使用SQL命令关闭游标:CLOSE。
81、使用SQL命令删除游标:DEALLOCATE。
82、 SQL语言是用于数据库查询的结构化语言。
83、T-SQL语言的组成部分:数据定义语言、数据操纵语言和数据控制语言。
84、变量的命名:以字母、_、@或#开头,后接多个字母、数字、_、@或#构成。
85、运算符与表达式:AND和OR
86、按照索引的组织方式,可将索引分为聚集索引和非聚集索引。
87、惟一索引:不会有两行记录相同的索引键值。
88、使用SQL命令删除索引:DROP INDEX。
89、使用SQL命令创建带参数的存储过程的格式:
CREATE PROCEDURE procere_name @variable_name datatype
AS
<sql_statement>
90、使用SQL命令执行带参数的存储过程:EXEC procere_name value。
91、使用SQL命令修改存储过程的格式:
ALTER PROCEDURE procere_name
AS
<sql_statement>
92、使用SQL命令删除存储过程:DROP PROCEDURE。
93、设计备份策略的指导思想是:以最小的代价恢复数据。
94. 假定学生关系是S(S#, SNAME, SEX, AGE),课程关系是C(C#, CNAME, TEACHER),学生选课关系是SC(S#, C#, GRADE)。要查找选修课程名“COMPUTER”的性别为“女”的学生姓名,将涉及到的关系是:S, C, SC。
95. 数据库对象的名称中各部分使用何种符号隔开“.”。
96. 在SQL Server 2000中,精确整数型包括decimal和numeric。
97. 下列SQL语句中,实现删除数据库的语句是DROP DATABASE。
98. 下列SQL语句中,向表中插入数据的是INSERT。
99. 把两个表中的行按照给定的条件进行拼接而形成新表,这样的关系运算是连接。
100. 在数据库查询语句SELECT中,指定表或视图的子句是FROM子句。
101. 在数据库查询中,消除结果集中的重复行所使用的关键字是DISTINCT。
102. 能够在LIKE子句中匹配单个字符的通配符是“_”。
103. 在查询语句中对查询的结果进行排序,用于降序排序的关键字是。DESC
104. 若用如下的SQL语句创建一个student表:
CREATE TABLE student(NO C(4) NOT NULL,
NAME C(8) NOT NULL,
SEX C(2),
AGE N(2))
可以插入到student表中的是(‘1031’, ‘曾华’, NULL, NULL)
第16到第19题基于这样的三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:
S(S#, SN, SEX, AGE, DEPT)
C(C#, CN)
SC(S#, C#, GRADE)
其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。
105. 检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是
SELECT SN, AGE, SEX FROM S
WHERE AGE>(SELECT AGE FROM S
WHERE SN=‘王华’)
106. 检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SELECT语句是
SELECT S# FROM SC
WHERE C#=‘C2’ AND GRADE>= ALL
(SELECT GRADE FROM SC
WHERE C#=‘C2’)
107. 检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是
SELECT S.SN, SC.C#, SC.GRADE
FROM S, SC
WHERE S.S#=SC.S#
108. 检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。正确的SELECT语句是
SELECT S#, SUM(GRADE) FROM SC
WHERE GRADE>=60
GROUP BY S#
HAVING COUNT(*)>=4
ORDER BY 2 DESC
109. 创建视图的SQL命令是
CREATE VIEW
110、局部变量在声明后初始化为NULL。

二、多项选择题
1. 关系数据库模型的优势在于;数据表达方式简洁、直观;插入、删除、修改操作方便。
2. 请选出SQL Server 2000的两种常用工具;企业管理器;查询分析器。
3. 设计表时空值的作用;表示不需要添加的数据;表示将在以后添加的数据。
4. 数据库的查询语句SELECT的语法格式中不包含以下哪些内容;DROP子句;UPDATE子句。
5. 在比较子查询可以使用的比较关键字包括;ALL ; ANY。
6. 在使用游标读取数据时,可用来滚动记录的关键字是;NEXT;LAST;PRIOR;FIRST。
7. 索引的功能包括;快速存取数据;保证数据记录的惟一性;实现表与表之间的参照完整性;利用索引可减少排序和分组的时间。
8. 数据库中的数据丢失或被破坏的原因是;计算机软、硬件故障;误操作;自然灾害;盗窃。
9. 确定备份频率主要考虑的是;系统恢复的工作量;系统执行的事务量。
10. 导入/导出操作包括数据传输;数据转换。
11. 目前,大型的数据库管理系统主要包括;Oracle;SQL Server;DB2。
12. SQL Server 2000的数据库可以分为;系统数据库;用户数据库。
13. 数据库对象包括;表;视图;索引;存储过程;触发器。
14. 设计表时空值的作用;表示不需要添加的数据;表示将在以后添加的数据。
15. 数据库的查询语句SELECT的语法格式中包括以下哪些内容;FROM子句;WHERE子句;GROUP BY子句;HAVING子句;ORDER BY子句。
16. 可以用于SELECT语句的聚合函数包括;SUM和AVG;MAX和MIN;COUNT。
17. T-SQL语言包含以下哪些重要部分;数据定义语言 ;数据操纵语言;数据控制语言。
18. 数据完整性包括;域完整性;实体完整性;参照完整性。
19. 数据库中的数据丢失或被破坏的原因是;计算机软、硬件故障;误操作;自然灾害;盗窃。
20. 对导入/导出操作描述正确的是;导入/导出是数据库系统与外部进行数据交换的操作;导入数据是把其他系统的数据引入到SQL Server的数据库中;导出数据是把数据库从SQL Server数据库中引导其他字段。
21、流行的中小型数据库包括Access和Visual Foxpro。大型数据库管理系统包括Oracle,Microsoft的SQL Server,Sybase和IBM的DB2。
22、数据模型分为关系模型、层次模型、网状模型。所划分原则是数据之间的联系。关系模型优势:数据表达方式简洁、直观,插入、删除、修改操作方便。
23、实体之间的联系有如下几种:一对一的联系(1: 1)、一对多的联系(1: n)、多对多的联系(m: n)。
24、 SQL Server 2000的两种常用工具:企业管理器,查询分析器。
25、SQL Server 2000的数据库对象包括:表、视图、索引、存储过程、触发器和约束。
26、数据库对象的完全限定名包括:服务器名、数据库名、所有者名和对象名。其中前三个可以省略,掌握省略的格式。
27、常用的关系运算包括:连接、选择和投影。关系运算的特点是运算的对象和结果都是表。
28、SQL Server对游标的使用要遵循的步骤:声明游标;打开游标;读取数据;关闭游标;删除游标。
29、全局变量和局部变量分别用@@和@进行标识。
30、数据完整性的分类:域完整性、实体完整性和参照完整性。
31. 数据库管理系统采用的数据模型有;层次模型;网状模型;关系模型。
32. SQL Server 2000的数据库可以分为;系统数据库;用户数据库。
33. 数据库对象包括;表;视图;索引;;存储过程;触发器。
34. 常见的连接操作包括;等值连接;自然连接。
35. 数据库的查询语句SELECT的语法格式中不包含以下哪些内容;DROP子句;UPDATE子句。
36. 请从下面的关键字中选出能够用于WHERE子句中进行范围比较的是;IN;BETWEEN。
37. 请选出对视图描述正确的项;数据库中只存储视图的定义;对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
38. 按照索引的组织方式,可将索引分为;聚集索引;非聚集索引。
39. 存储过程包括以下哪些类型;系统存储过程;本地存储过程;临时存储过程;远程存储过程;扩展存储过程。
40.SQL Server 2000中,允许使用的备份介质包括;硬盘;磁带;命名管道。

三、名词解释
1、码:在关系表中,如果一个字段或几个字段组合的值可惟一标识其对应记录,则称该字段或字段组合为码。
2、记录:每个表包含了若干行数据,它们是表的“值”,表中的一行称为一个记录。
3. 投影:投影运算从表中选出指定的属性值(列名)组成一个新表,记为:∏A(R)。
4. 索引: 根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。
5. 参照完整性: 又称为引用完整性。参照完整性保证主表中的数据与从表中数据的一致性。
6. 数据库:是存放数据及相关信息的仓库。
7. 字段:每个记录由若干个数据项构成,将构成记录的每个数据项称为字段。
8. 连接:连接运算把两个表中的行按照给定的条件进行拼接而形成新表,记为: 。
9. 数据的完整性:是指数据库中的数据在逻辑上的一致性和准确性。
10. 数据库恢复:就是当数据库出现故障时,将备份的数据库加载到系统,从而使数据库恢复到备份时的正确状态。
11、数据库(DB):数据库是存放数据及相关信息的仓库。
12、数据库管理系统(DBMS):数据库管理系统是管理数据库的系统,它按一定的数据模型组织数据。
13、实体和实体集:每一类数据对象的个体称为实体,而每一类对象个体的集合称为实体集。
14、记录:每个表包含了若干行数据,它们是表的“值”,表中的一行称为一个记录。
15、字段:每个记录由若干个数据项构成,将构成记录的每个数据项称为字段。
16、选择运算:选择运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果,选择运算的记号为σF(R)。
17、投影运算:投影运算从表中选出指定的属性值(列名)组成一个新表,记为:∏A(R)。
18、连接运算:连接运算把两个表中的行按照给定的条件进行拼接而形成新表,记为: 。
19、等值连接:两个表的某些列值相等,这样的连接称为等值连接。
20、自然连接:自然连接运算要求两个表有共同属性,自然连接运算的结果表是在参与操作两个表的共同属性上进行等值连接后再去除重复的属性后所得的新表,自然连接运算记为: 。
21、局部变量:DECLARE @local_variable data_type,所有局部变量在声明后均初始化为NULL。
22、域完整性:域完整性又称为列完整性,指给定列输入的有效性。
23、实体完整性:实体完整性又称为行的完整性,要求表中有一个主键,其值不能为空且能惟一地标识对应的记录。
24、参照完整性:参照完整性又称为引用完整性。参照完整性保证主表中的数据与从表中数据的一致性。
25、外码:如果一个表中的一个字段或若干个字段的组合是另一个表的码则称该字段或字段组合为该表的外码。
26、存储过程:在SQL Server中,可以定义子程序存放在数据库中,这样的子程序称为存储过程。
27、触发器:触发器是一类特殊的存储过程。触发器与表的关系密切,用于保护表中的数据。当有操作影响到触发器保护的数据时,触发器自动执行。
28、导入/导出:导入/导出是数据库系统与外部进行数据交换的操作。
导入数据是从外部数据源中检索数据,并将数据插入到SQL Server表的过程,即把其他系统的数据引入到SQL Server的数据库中。
导出数据是将SQL Server数据库中的数据转换为某些用户指定格式的过程,即把数据库从SQL Server数据库中引到其他系统。

四、简答题
1. 请列举SQL Server 2000的数据库对象。
表、视图、索引、存储过程、触发器和约束。
2. 简述存储过程的优点。
(1)存储过程在服务器端运行,执行速度快。
(2)存储过程执行一次后,其执行规划就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。
(3)确保数据库的安全。
(4)自动完成需要预先执行的任务。
3. 请根据以下表的定义写出创建表的语句。
表名:Student
列名 数据类型 长度 是否允许为空
学号 定长字符型(char) 6 否
姓名 定长字符型(char) 8 否
专业名 定长字符型(char) 10 允许
性别 位型(bit) 1(系统默认值) 否
出生时间 日期时间类型(smalldatetime) 4(系统默认值) 否
总学分 整数型(tinyint) 1(系统默认值) 允许
备注 文本型(text) 16(系统默认值) 允许
CREATE TABLE student(
学号 char(6) NOT NULL,
姓名 char(8) NOT NULL,
专业名 char(10) NULL,
性别 bit NOT NULL,
出生日期 smalldatetime NOT NULL,
总学分 tinyint NULL,
备注 text NULL)
4. 根据以下要求写出实现表操作的SQL语句。
假设数据库中已经建立好以下表结构。
表名:Student
列名 数据类型 长度 是否允许为空
学号 定长字符型(char) 6 否
姓名 定长字符型(char) 8 否
专业名 定长字符型(char) 10 允许
性别 位型(bit) 1(系统默认值) 否
出生时间 日期时间类型(smalldatetime) 4(系统默认值) 否
总学分 整数型(tinyint) 1(系统默认值) 允许
备注 文本型(text) 16(系统默认值) 允许
请分别写出如下操作的SQL语句:
(1) 增加新列 “奖学金等级”,数据类型为tinyint,允许为空;
(2) 删除“备注”列;
(3) 将“出生日期”列的数据类型由原来的smalldatetime修改为datetime。
(1)ALTER TABLE Student ADD 奖学金等级 tinyint NULL
(2)ALTER TABLE Student DROP COLUMN 备注
(3)ALTER TABLE Student ALTER COLUMN 出生日期 datetime
5. 数据库中已经存在下表。
表名:Student
列名 数据类型 长度 是否允许为空
学号 定长字符型(char) 6 否
姓名 定长字符型(char) 8 否
专业名 定长字符型(char) 10 允许
总学分 整数型(tinyint) 1(系统默认值) 允许
备注 文本型(text) 16(系统默认值) 允许
请写出如下对表中数据进行操作的SQL语句:
(1)插入一条学生信息,学号为“532241”,姓名为“张鑫”,专业名为“计算机”;
(2)从表中删除学号为“532240”的学生记录;
(3)将表中所有记录的专业名由“计算机”改为“计算机应用技术”。
(1)INSERT INTO Student(学号, 姓名, 专业名) VALUES(‘532241’, ‘张鑫’, ‘计算机’)
或 INSERT INTO Student VALUES(‘532241’, ‘张鑫’, ‘计算机’, NULL, NULL)
(2)DELETE FROM Student WHERE 学号=‘532240’
(3)UPDATE Student SET 专业名=‘计算机应用技术’ WHERE 专业名=‘计算机’
6. 请列举设计表时包括的内容。
确定表的名字、所包含的列名、列的数据类型、长度、是否可为空值、默认值情况、是否要使用以及何时使用约束、默认设置或规则以及所需索引、哪些列是主键、哪些列是外键。
7. 简述索引的作用。
(1)快速存取数据。
(2)保证数据记录的惟一性。
(3)实现表与表之间的参照完整性。
(4)在使用ORDER BY, GROUP BY子句进行数据检索时,利用索引可减少排序和分组的时间。

8. 请根据以下表的定义写出创建表的语句。
表名:Course
列名 数据类型 长度 是否允许为空
课程号 定长字符型(char) 3 否
课程名 定长字符型(char) 16 否
开课学期 整数型(tinyint) 1(系统默认值) 否
学时 整数型(tinyint) 1(系统默认值) 否
学分 整数型(tinyint) 4(系统默认值) 允许
CREATE TABLE course(
课程号 char(3) NOT NULL,
课程名 char(16) NOT NULL,
开课日期 tinyint NOT NULL,
学时 tinyint NOT NULL,
学分 tinyint NULL)
9. 根据以下要求写出实现表操作的SQL语句。
假设数据库中已经建立好以下表结构。
表名:Course
列名 数据类型 长度 是否允许为空
课程号 定长字符型(char) 3 否
课程名 定长字符型(char) 16 否
开课学期 整数型(tinyint) 1(系统默认值) 否
学时 整数型(tinyint) 1(系统默认值) 否
学分 整数型(tinyint) 4(系统默认值) 允许
请分别写出如下操作的SQL语句:
(1) 增加新列“授课教师”,数据类型为char,长度为10,不允许为空;
(2) 删除“学时”列;
(3) 将“课程名”列的长度由原来16改为20。
(1)ALTER TABLE Course ADD 授课教师 char(10) NOT NULL
(2)ALTER TABLE Course DROP COLUMN 学时
(3)ALTER TABLE Course ALTER COLUMN 课程名 char(20)
10. 数据库中已经存在下表。
表名:Course
列名 数据类型 长度 是否允许为空
课程号 定长字符型(char) 3 否
课程名 定长字符型(char) 16 否
开课学期 整数型(tinyint) 1(系统默认值) 否
学时 整数型(tinyint) 1(系统默认值) 否
学分 整数型(tinyint) 4(系统默认值) 允许
继续需要请留邮箱&上我空间留邮箱

㈥ 死磕:SQL行转列汇总(全网最全最详细)

阅读目录

PIVOT 用于将列值旋转为列名(即行转列),在 SQL Server 2000可以用聚合函数配合CASE语句实现

PIVOT 的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P

注意:PIVOT、UNPIVOT是SQL Server 2005 的语法,使用需修改数据库兼容级别(在数据库属性->选项->兼容级别改为 90 )

SQL2008 中可以直接使用

完整语法:

View Code

UNPIVOT 用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现

姓名 课程 分数

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

张三 语文 74

张三 数学 83

张三 物理 93

李四 语文 74

李四 数学 84

李四 物理 94

姓名 语文 数学 物理

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

李四 74 84 94

张三 74 83 93

姓名 语文 数学 物理 总分 平均分

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

李四 74 84 94 252 84.00

张三 74 83 93 250 83.33

姓名 语文 数学 物理

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

张三 74 83 93

李四 74 84 94

姓名 课程 分数

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

李四 语文 74

李四 数学 84

李四 物理 94

张三 语文 74

张三 数学 83

张三 物理 93

最后给大家分享Spring系列的学习笔记和面试题,包含spring面试题、spring cloud面试题、spring boot面试题、spring教程笔记、spring boot教程笔记、最新阿里巴巴开发手册(63页PDF总结)、2022年Java面试手册。一共整理了1184页PDF文档。私信博主(777)领取,祝大家更上一层楼!!!

原文作者:王思明

原文出处:http://www.cnblogs.com/maanshancss/

㈦ MySQL笔记1select基础

查询语句:select 语句
三种能力:投影、选择、连接
投影:在一张二维表中根据所需要的条件选出所需要的列

选择:在二维表中根据所需的条件选择合适的行

连接:从一张或者多张表中获取所需要的行,并且把这个行结合在一起的查询

SQL语句大小写不敏感。

select语句是可以计算的
算术表达式和运算符优先级

举例:select ename,sal 12*sal+100 from emp

计算出年薪+100块

NULL值是不可用,且未分配的,未知并且不适用的值,可以当成是保留值

AS其实可以省略

例如:select ename as name,sal salary from emp;

查询出的字段会自动换成别名
例子:select ename "Name",sal*12 "Annual Salary" from emp;

级联操作是将列或字符串和其他列串联,由两条竖线(||)表示
select ename,job,ename || job as "Employees" from emp;

可以看出Employees就将ENAME和JOB进行结合的一个操作

在select句子中适用DISTINCT 关键字消除重复行
select distinct deptnp from emp;

限制选择的行:
where关键字
如果where后面查的数据是字符串类型或者日期类型的要加''号
#######比较条件

举几个例子:
select ename,job,sal,deptno from emp where sal between 5000 and 10000;

这个是包含了5000和10000的

in的表达:
select empno,ename,mgr,deptno from emp where mgr in (7788,7782,7000);

只要mgr有括号里面的值都显示出来。

通配符:%通配的是多个字符,_通配的是一个字符

IS NULL是查询某个字段为空的显示出来

and、or、not
例子:

查询sal>=2000和job的内容是包括MAN字符串的,当同时满足两个条件时候才返回结果。

and就是两边同时为真,or的话是有一边为真就行,not就是不等于

ASC 升序,默认升序
DESC 降序
例子:

将deptno中进行升序排列,排列出来后,在将sal进行降序排列。

单行函数:就是对单行数据进行处理的函数,只针对这一条数据得出一个结果
函数工作的过程

ROUND(45.926,2)是将45.926这个数字的小数点后两位进行四舍五入操作得到45.93
TRUNC(45.926,2) 是将45.926这个数字的小数点后两位后面的进行丢掉。

返回当前系统日期

经常是不同类型之间的转换

TO_CHAR就是将日期型数字型转换成字符型
例子:

数字型的转换

把字符转换成数字:

把字符转换成日期:

什么是分组函数?
另外的名字叫多行函数,针对于多行数据进行一个汇总处理的一类函数,最后会得到一个汇总的结果。
例子:

其实就是对一系列数据找最大值

基本格式:select group_function(column),... from table [where condition];

首先对一个数据进行分类汇总把每一组的数据单独的拿出来。就是对每一列数据的相同数据进行一个分组,然后在将分组后的结果再去执行select后面跟的一个分组函数的操作。
例子:

那下面这样的怎么操作呢?

其实就是对分组以后的结果再次进行一个限制筛选

where和Having的区别?
where是针对于整体的一个查询结果
Having是针对于分组后的查询结果的一个条件限制,它是不能单独存在的,它只能够在group by后面
下面是它的表达式:

显示部门的最大平均薪水是多少
select max(avg(sal))
是这样的一个嵌套

当我们查的数据存在于多个表的时候就需要多表查询

下面是用到的表

一个是EMP的职员表、一个是DEPT的部分表

表连接的三种方式:
从总类上来看:自连接、等值连接、外连接(又可以分为三类:左连接、右连接、全连接)

自连接:一个表自己与自己建立连接成为自连接或自身连接。
在查询的时候多表,这两张表是同一张表,所以在查询前我们需要对这个表进行一个别名的重命名。
举例:查询出员工编号、名字及其经理名字

MGR对应的是经理的ID号,这个对应的就是另一张经理表中的名字

表示比较连接列的值显示出最终的一个结果,其查询结果中列出被连接表中的所有列,包括其中的重复列。
查询员工的姓名 工作 部门号 部门名称

左连接就是返回左边的匹配行,不考虑右边的表是否有相应的行

(+)的意思就是dept是个匹配表,左边是一个基础表,基础表优先,如果右边这个表找不到对应的值去匹配,会自动填空

右连接就是返回右边的匹配行,不考虑左边的表是否有相应的行,如果没有会自动填空

左表右表都不做限制,所有的记录都显示,不足的地方用null填充

FULL JOIN表示emp和dept做一个全连接
ON表示触发条件 。

㈧ SQL笔记-03

2017-03-09

1.查询三要素:

1)查那张表的数据?class

2)查那些列?sname,salary,company

3)要查哪一行?where条件

mysql>select sname,salary,company fromclass where id=1

2.暴力查询,利用*代表所有列:

3.取出class中所有人的姓名和工资;

mysql>select sname,salary from class;

3.查id大于1的所有搏渣蠢列

mysql>select * from class where id>1;

4.取部分行部分列:取id小于等于2的姓名和饭补

mysql>select sname,fanbu from classwhere id<=2;

5.建表的过程就是一个声明字段(声明列)的过程,列类型的存储范围和占据字节的关系

1)数值型

 梁烂  整型:一般而言,占N字节则:0-2^8N-1或2^(8N-1)~+2^(8N-1)-1

tinyint:1个字节 -128~+127 或0~255;

smallint:2个字节 -32768~+32767或0-65535

mediumint:3个字节

int:4个字节

bigint:8个字节

声明tinyint怎么样让他0-255怎么样让他-128~=127:

整型声明的时候的参数问题:

<1>建表:

mysql>create table class1(

    ->sname varchar(10) notnull default ‘’,

    ->age tinyint not nulldefault 0

    ->)engine myisamcharset utf8;

<2>查看表结构

mysql>desc class1;

<3>插入数据,age到底是-128~+127还是0-255:

mysql>insert into class1

    ->(sname,age)

    ->values

    ->(‘刘备’,128);

报错:超出范围所以说明范围不是0-255,再测试127成功

经过测试,默认范围是-128~+127;

故:int系列不加说明默认有符号

<4>通过声明int类型的符号,来走无符号的0-255范围,给class1加一个列

mysql>alert table class1 add chengji tinyint unsigned not nulldefault 0;

插入数据范围测试,故再列类型后加unsigned可以范围切换成基陪正数范围

<5>分析列类型的m参数,m参数必须和zerofill配合才有意义,给class1增加一个学号列(学号一般不为负,而且位数相同如000013,012345不够位数也会用0填充;

mysql>alter table class1 add xuehao smallint(5) zerofill not nulldefault 0;

查看表结构

往表中插入学号数字

插入的是345 但是会自动补齐0,这就是先用m规定了学号列的长度,然后不足长度部分用0不足是zerofill的定义实现的。

查看表结构发现,只要声明了是zerofill那么就属于unsigned类型了

㈨ SQL中left join on 、right join on、inner join on之间的区别

最近在入门SQL,记录下自己学习的一些笔记。

left join(左联接) 返回包括以左表主表,左表中的所有记录和右表中联结字段相等(左表中匹配不到的字段对应的值为null)即:左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

       inner join(等值连接) 只返回两个表中联结字段相等的行,即通过相应条件交集后展示的所有字段的大表

举例如下: 

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

表A记录如下:

aIDaNum

1a20050111

2a20050112

3a20050113

4a20050114

5a20050115

表槐散B记录如下:

bIDbName

12006032401

22006032402

32006032403

42006032404

82006032408

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

1.left join

sql语句如下: 

select * from A

left join B 

on A.aID = B.bID

结果如下:

aIDaNumbIDbName

1a2005011112006032401

2a2005011222006032402

3a2005011332006032403

4a2005011442006032404

5a20050115NULLNULL

(所影响的行数为 5 行)

结果说明:

left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.

换句话说,左表(A)的记录将会瞎明物全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).B表记录不足的地方均为NULL.

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

2.right join

sql语句如下: 

select * from A

right join B 

on A.aID = B.bID

结果如下:

aIDaNum磨液bIDbName

1a2005011112006032401

2a2005011222006032402

3a2005011332006032403

4a2005011442006032404

NULLNULL  82006032408

(所影响的行数为 5 行)

结果说明:

仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

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

3.inner join

sql语句如下: 

select * from A

innerjoin B 

on A.aID = B.bID

结果如下:

aIDaNumbIDbName

1a2005011112006032401

2a2005011222006032402

3a2005011332006032403

4a2005011442006032404

结果说明:

很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

从SQL开始入门,其他的语言继续学习。生命不停,学习不止!

㈩ oracle笔记-动态SQL

第 章 动态SQL

为何使用动态SQL

实现动态SQL有两种方式 DBMS_SQL和本地动态SQL(EXECUTE IMMEIDATE)

主要从以下方面考虑使用哪种方式

是否知道涉及的列数和类型

DBMS_SQL包括了一个可以 描述 结果集的存储过程(DBMS_SQL DESCRIBE_COLUMNS) 而本地动态SQL没有

是否知道可能涉及的绑定变量数和类型

DBMS_SQL允许过程化的绑定语句的输入 而本地动态SQL需要在编译时确定

是否使用 数组化 操作(Array Processing)

DBMS_SQL允许 而本地动态SQL基本不可以 但可以用其他方式实现(对查询可用FETCH BULK COLLECT INTO 对INSERT等 可用一个BEGIN … END块中加循环实现)

是否在同一个会话中多次执行同一语句

DBMS_SQL可以分析一次执行多次 而本地动态SQL会在每次执行时进行软分析

是否需要用REF CURSOR返回结果集

仅本地动态SQL可用REF CURSOR返回结果集

如何使用动态SQL

DBMS_SQL

调用OPEN_CURSOR获得一个游标句柄

调用PARSE分析语句 一个游标句柄可以用于多条不同的已分析语句 但一个时间点仅一条有效

调用BIND_VARIABLE或BIND_ARRAY来提供语句的任何输入

若是一个查询(SELECT语句) 调用DIFINE_COLUMN或DEFINE_ARRAY来告知Oracle如何返回结果

调用EXECUTE执行语句

若是一个查询 调用FETCH_ROWS来读取数据 可以使用COLUMN_VALUE从SELECT列表根据位置获得这些值

否则 若是一个PL/SQL块或带有RETURN子句的DML语句 可以调用VARIABLE_VALUE从块中根据变量名获得OUT值

调用CLOSE_CURSOR

注意这里对任何异常都应该处理 以关闭游标 防止泄露资源

本地动态SQL

EXECUTE IMMEDIATE 语句

[INTO {变量 变量 … 变量N | 记录体}]

[USING [IN | OUT | IN OUT] 绑定变量 … 绑定变量N]

[{RETURNING | RETURN} INTO 输出 [ … 输出N]…]

注意本地动态SQL仅支持弱类型REF CURSOR 即对于REF CURSOR 不支持BULK COLLECT

最后说明

lishixin/Article/program/Oracle/201311/18948