sql入门新手教程是什么?

嘿,我给你讲讲我从事数据库工作的经历。

我今年刚刚接手了一个项目。
该客户是一家小型企业,使用Access2 003 处理采购、销售和库存。
您之前已经自己创建了一个 Excel 电子表格。
订单号、客户名称和数量等一团糟,而且数据常常不匹配。
老板让我建立一个正式的数据库。

第一步是开发关系模型并定义表结构。
我刚刚看了《Access数据库应用技术教程》。
首先,考虑需要哪些表以及每个表有哪些字段。

例如,我创建了一个 Customer 表,其中包含以下内容:
1 客户ID:文本类型,长度1 0,不能为空,用作主键。
这必须是列级约束并且必须存在。
2 、客户姓名:文本类型,长度5 0,这里可以为空,毕竟有些客户可能没有名字或者是临时工。
3 、联系电话:文本类型,长度2 0,不能为空。
是的,这是另一个等级限制。
4 、地址:文本类型,长度1 00,可以为空。

然后是订单表:
1 .订单ID:文本类型,长度1 5 ,不能为空,主键。
2 、客户ID:文本类型,长度1 0,不能为空。
应特别注意这一点,因为这些是外键。
单个字段不能为空,但作为外键不能随意填写。
必须是客户表中实际的客户ID。
我想了很久这个关系,觉得放在桌面层面会更合适。
我们将其称为“外部代码定义”,就像它的名字一样。
如果客户表中没有客户ID,则该订单不能存在。
这是表级完整性约束。
3 . 订单日期:日期/时间类型。
4 . 金额:货币类型。

完成后我会用SQL语句写下来。
我记得当时 CREATE TABLE 关键字使用得非常频繁。
SQL 创建表客户表( CustomerID TEXT(1 0) NOT NULL 主键, 客户名称 TEXT(5 0) NULL, 联系电话 TEXT(2 0) NOT NULL, 地址 TEXT(1 00) NULL );
创建TABLE订单表( OrderID TEXT(1 5 ) NOT NULL PRIMARY KEY, 客户 ID TEXT(1 0) NOT NULL, 订单日期DATETIME, 金额金钱, -
假设外键约束已写入 SQL Server。
访问方式可能略有不同。
CONSTRAINT fk_Customer ID FOREIGN KEY(客户 ID) REFERENCES 客户表(客户 ID) );
您会看到,客户姓名和地址可以为空。
这是列级别限制。
orders表中的客户ID不能为空,必须引用customers表的客户ID。
这是表级外键约束。

我坐在电脑屏幕前,逐个字段输入数据类型、长度以及是否允许 NULL/NOT NULL。
我花了将近两天的时间。
中间存在错误,例如忘记添加主键或编写错误的外键映射。
调试花了很长时间。

完成这一步后,表结构就完成了。
接下来就是数据的录入、查询和修改。
INSERT 插入新订单,UPDATE 更改订单金额,DELETE 删除无效订单,SELECT 查询客户购买的商品。

但是,我对您提到的术语感到困惑,例如列级完整性、表级完整性、数据操作语言等都是靠这个教程和盲测慢慢理解的。
我没有看到什么高级的东西,只是这些基本的操作。
您问这个是因为您想自己创建数据库吗?

sql server怎么用sql语句创建表

嘿,你对创建 SQL Server 表的总结非常全面。
当我第一次拿起一个旧项目时,我几乎感到困惑。
让我向您介绍一下我目前的运作方式:
1 最麻烦的是命名
像上次2 02 3 年为电商项目建表,客户端坚持用“products”作为表名,SQL Server直接报错。
后来我知道我必须使用钩子,[产品]。
所以你说的“避免使用SQL关键字”就显得尤为重要。
由于懒惰,我差点陷入其中。
列名称也是如此。
例如,“order_date”使用方括号更安全。

2 数据类型选择
我以为VARCHAR(5 0)和CHAR(5 0)没有什么区别,直到2 02 2 年在北京调试系统时发现性能问题。
CHAR(5 0)是固定长度的,无论你存储多少个字符,都会占用5 0个字节,而VARCHAR(5 0)是根据实际长度计算的。
如果存储的记录有很多空格,CHAR(5 0) 会浪费空间。
在这一点上你是对的。
您应该根据实际存储需求进行选择。

3 使用IDENTITY
2 02 1 年做会员系统的时候,一开始没有关注IDENTITY(1 ,1 )这个参数,直接使用了IDENTITY。
因此,识别间隔很大,随后只能手动调整起始值和增量。
除非有特殊要求,现在使用默认值 1 .1 您的客户 ID 示例非常标准。

4 复合主键
我在做上海2 02 3 订单表的时候,发现用订单ID+商品ID作为复合主键比较合适。
您的“订单详细信息”示例完美地展示了如何编写它。
我还在纠结是否使用 UNIQUE 约束而不是 PRIMARY KEY,最终发现 PRIMARY KEY 效果更好。

5 约束优先级
我遇到的一个陷阱是约束检查。
2 02 2 年创建表的时候忘记了CHECK约束应该放在列定义后面,导致创建失败。
所以当你写“CHECK(age>=1 8 )”时,首先要确定列名和类型。
最好这样写: SQL 用户创建表( 年龄 INT NOT NULL, 约束 CHK_AGE 检查(年龄 >= 1 8 ) );
6 验证方法
您提到的INFORMATION_SCHEMA.TABLES查询非常实用。
我曾经使用 sp_help 表名,但输出太长。
后来我发现这个方法比较有效。
不过,2 02 3 年使用PowerShell脚本管理表时,我更喜欢使用系统视图: 电源外壳 从 sys.tables 中选择 WHERE name = 'Customer';
总的来说,您总结的步骤非常全面。
我建议您添加一个常见错误的示例,例如忘记写入 PRIMARY KEY 或使用错误的数据类型(例如将日期存储在 INT 列中)。
这种类型的细节错误很容易被忽视。
例如,我在2 02 2 年调试系统时,花了整整3 个小时才发现DATETIME类型存储不正确导致的数据异常问题。

什么无论如何,在创建表时,谨慎是最重要的。
你的步骤足够参考了。
只是实现时多注意数据类型的顺序和约束即可。

定义关系模式时可随意指定属性的排列顺序

嘿嘿,这一堆文字看起来让人不知所措……你是想知道如何构建关系数据库还是只是死记硬背概念?让我向你解释一下。

你想建立一个关系数据库吗?好吧,第一步实际上是制定规则,也就是建立关系模型。
说白了,这只是一张你的手表应该是什么样子的图。
例如,如果有一个学生表,则必须显式指定列名(如学号、姓名、专业)、每列的数据类型(学号必须为数字、姓名必须为文本)以及是否可以为空(学号不能为空)。
这些都必须确定。

怎么写?您必须在 SQL 语句中使用 CREATE TABLE。
例如:
sql 创建学生表( 学生 ID 号 INT NOT NULL, 名称 VARCHAR(5 0), 专业VARCHAR(1 00) );
你看,student是一个名字,必须写。
然后将列定义写在括号中,每行一列(或用逗号分隔)。
每列都有列名、数据类型,还可能有约束,例如 NOT NULL,必须填写且不能留空。

完整性约束,这个很重要。
有两种类型: 1 、列级别约束:只控制这一列。
例如:age INT CHECK (age > 0) 表示age必须大于0。
2 .表级约束:管理多个列甚至整个表。
例如:PRIMARY KEY(学生代码,专业)表示学生代码和专业必须唯一。
它必须放在 CREATE TABLE 语句的末尾。

这些约束条件记录在数据库的系统目录(也称为数据字典)中,只是为了保证数据库中的数据可靠,不会造成麻烦。

所以,仅仅制作一个表是不够的,你还需要能够操作数据。
这就是数据操纵。
SQL中有两种主要类型: 1 、查询:使用SELECT。
如果您想查找一些数据,请使用此功能。
例如:从学生中选择,其中专业=“计算机科学”。
2 .修改:插入、删除、更新。
使用插入、删除、更新。
如果要添加学生,请使用 INSERT,使用 DELETE 删除学生,并使用 UPDATE 更改学生的专业。

什么是最重要的?必须遵守这些限制!如果你执行了违反规则的操作,比如在学生表的学生ID列中插入空值,数据库会直接骂你:不允许!这就是为什么有限制来确保数据不会变得混乱。

所以你看,构建关系型数据库时,首先要定义表结构(构建schema),然后按照规则添加、删除、编辑、查询数据。
听起来很简单,但其中有很多细节。
您具体想从事哪一部分的工作?我可以解释更多。