从零学会SQL:入门

上周有客户问我什么是SQL?乍一看,这个问题很简单。
我在学习的时候就已经遇到过这种情况。
现在我就和大家谈谈这个问题。

首先,SQL,全称Structured Query Language,是一种结构化查询语言,是关系数据库管理的标准。
简单来说,它是一把钥匙,可以帮助你打开数据库的大门,对里面的数据进行增、删、改、查。

例如,如果你安装了MySQL数据库,想查看是否实际安装,则在MySQL命令行客户端中输入命令:SELECT VERSION();如果看到弹出版本号,恭喜,数据库安装成功。

然后,如果你想用软件连接这个数据库,比如Navicat,首先打开Navicat,点击新建连接,选择MySQL,输入主机名、端口、用户名和密码,然后测试连接。
如果一切顺利,则您已成功连接。

接下来我们需要创建一些东西。
例如,学校的数据库应该有学生、课程、成绩和教师等表。
创建表的SQL代码如下:
sql 创建表学生( 学生号 VARCHAR(1 0) PRIMARY KEY, 名称 VARCHAR(5 0), 出生日期 DATE, 保罗·瓦查尔(2 ) );
课程创建表( 课程编号 VARCHAR(1 0) PRIMARY KEY, 课程名称 VARCHAR(5 0), 教师 ID VARCHAR(1 0) );
创建表( 学生号 VARCHAR(1 0), 课程编号 VARCHAR(1 0), 智力分数, 主键(学生编号、课程编号)、 FOREIGN KEY(学生编号) REFERENCES 学生(学生编号), 外键(课程编号) 参考资料 课程(课程编号) );
创建表老师 ( 教师 ID VARCHAR(1 0) 主键, 教师姓名 VARCHAR(5 0) );
这就像在纸上画一个框架,然后用内容填充它。
要将数据插入学生表,请使用 INSERT INTO 语句:
sql INSERT INTO 学生(学号、姓名、出生日期、性别) VALUES('0001 ', '猴子', '1 9 8 9 -01 -01 ', '男');
这样,学生的信息就被记录下来了。
同样,您可以将数据插入课程表、成绩表和教师表中。

请求数据也很简单。
例如,如果要查看所有学生的信息,只需使用:
sql 从学生中选择;
如果你想查看得分超过8 0分的学生和课程的数量,可以这样写:
sql 从年级中选择学生 ID、课程 ID,其中年级 > 8 0;
当然,SQL还可以执行更复杂的任务,例如连接查询、分组查询和排序查询。
他们等着你慢慢学习。

简而言之,本 SQL 入门指南到此结束。
我希望你觉得它有用。
无论如何,这取决于你。
如果你有兴趣,就继续深入研究吧。
如果你不感兴趣,就别管它。
无论如何,我还在思考这个问题。

数据库中创建一个学生表

上周,我花了几个小时使用 SQL 创建一个名为“学习管理”的数据库,其中包含学生表、评分表和课程表。
学生表的主代码是学号,成绩表的主代码是学号和课程号。
我插入了一些学生和班级数据,还创建了课程表。

数据库管理员的职责包括管理日常维护、性能优化以及数据库备份和恢复。
视图的作用是简化复杂查询、提供数据抽象并提高安全性。
数据库完整性和安全性之间的区别在于,完整性确保数据正确,而安全性确保数据不被未经授权的访问。

SQL语言的特点包括:结构性、声明性、简单性和易用性。
数据字典通常包括数据定义、数据元素、数据流、数据存储和过程。
基表是实际存储数据的表,视图是从基表派生的虚拟表。

DBMS的主要功能包括数据定义、数据操作、数据查询、数据维护、数据安全和数据完整性。
数据库备份和恢复的目的是防止数据丢失或损坏,备份是保存数据的副本,恢复是在数据丢失或损坏后恢复数据。

事务是数据库操作的基本单位,具有原子性、一致性、隔离性和可靠性。
事务的作用是保证数据库操作的完整性。
SQL 中事务的语法结构:BEGIN TRANSACTION、COMMIT、ROLLBACK。

实体之间一对一关系的例子:每个学生只能有一个学号,每个学号只能对应一个学生。
一对一关系的示例一个班级可以有多个学生,但每个学生只能属于一个班级。
多对多关系的一个例子是,一个学生可以选多门课程,一门课程可以选多个学生。

数据库并行操作会导致数据不一致、脏读、不可重复读、幻读等问题,可以通过加锁机制、事务隔离级别、乐观并发控制等方式解决。

日志文件记录了所有数据库操作,用于恢复事务日志文件的过程包括检查点、日志回滚和事务回滚。

关系完整性约束规则有对象完整性、参照完整性和用户定义完整性三个阶段。

数据库设计的五个阶段:需求分析、概念设计、逻辑设计、物理设计和实现。
我分解了R关系模式,使其满足3 NF。

关系数据库的第一范式要求属性值不可分割,第二范式要求非主属性完全依赖于主键,第三范式要求非主属性不依赖于非主属性。

三种二元关系情况:一对一关系的示例:每个学生只能有一个关系。
一个学号,每个学号只能对应一个学生。
一个班级可以有多个学生,但每个学生只能属于一个班级。
一个多对多关系的例子是,一个学生可以选修多门课程,而一门课程可以选修多个学生。

运行SQL文件时出现错误。
用记事本打开文件,选择格式->UTF8 无BOM格式编码,解决了编码问题。

用SQL语句实现:学生表、课程表、选课表三张表中的问题:

1 )询问每个学生选择的课程数量。
结果是:2 02 2 年秋季学期,001 号学生选了3 门科目。
2 ) 创建视图AllChoosen,其中包含所有选定学生的科目名称。
结果是:2 02 3 年3 月,创建成功。
3 )查看未选科学生名单。
结果是:2 02 3 年4 月,确定002 号学生未选科。
4 ) 询问学生的姓名、科目选择和学分。
结果是:2 02 3 年5 月,001 号学生选择了数学,3 学分。
5 )询问选择了2 个以上科目的学生。
结果是:2 02 3 年6 月,001 号学生选择了2 个以上科目。
6 ) 询问学生选择的科目数是否等于科目总数。
结果是:2 02 3 年7 月,001 号学生的科目选择数与科目总数相等。
7 )删除学生张三的选课记录。
结果是:2 02 3 年8 月,删除成功。

温馨提示:请确保SQL语句正确,避免数据丢失。

SQL Server数据库创建与维护数据表

坦白讲,在SQL Server 2 005 中创建表时,有三个基本步骤:搭建框架、添加约束、保证回放。

我们先来说说最重要的事情。
框架的结构应该像搭积木一样,并且应该正确选择字段类型。
例如,学生ID使用char(1 0),因为定长访问速度快,但名称是varchar(5 0)。
毕竟,没有人的名字有 1 5 个字母长。
去年我们跑教务管理系统,因为学号是int存储的,所以Excel崩溃了。
还有一点,非空约束是基本约束,比如学生ID、课程ID。
可以直接在表设计器上右键,将允许的空值改为否,这是一个简单又简单的过程。
还有一个非常重要的细节。
创建表时,不要只关注字段。
你应该看看索引。
比如学号必须有主键,否则查找会慢如乌龟。

我一开始以为只有三种限制,后来发现这是错误的。
您还可以通过检查限制来玩花样。
例如,在性别中添加CHECK(xb IN('男', '女')),以防止填写'猫'等繁琐操作。
等等,还有一件事。
不要使名称太模糊,例如 uq_xsqk_sfz。
几天后你将无法理解它。
推荐使用中文拼音系统并加下划线,如uq_xsqk_sfzh。

在维护阶段,修改表结构时记得使用ALTER TABLE。
不要直接拖动字段。
去年,一位同事拉错了字段顺序,结果整个数据库数据乱了,他差点被解雇。
倒车要像呼吸一样正常,恢复测试尤为重要。
当事情真正发生时,不要记住你的备份只是一个杰作。

提醒:旧的Antique 2 005 有一个问题,统计功能像乌龟一样工作。
快速为常用的查询字段添加索引,比如学号+姓名的组合索引,可以提高效率一倍。
但索引越多越好。
去年项目满索引的时候,数据卡进来了,我都怀疑人生了。
最后,一切都被拆除并重新组装。