--不足:23山东和16山东重复
--创建DBPromary数据库
create database DBPromary
use DBPromary
go
--创建promary表
create table promary
(
proID int primary key,
proName varchar(50) not null
)
----------------------------------------------------------------------------------------------------------------------------------------
--中国34个省级行政单位 23个省 5个自治区 4个直辖市 2特别行政区
insert into promary values(1,'北京市')
insert into promary values(2,'天津市')
insert into promary values(3,'上海市')
insert into promary values(4,'重庆市')
insert into promary values(5,'河北省')
insert into promary values(6,'山西省')
insert into promary values(7,'台湾省')
insert into promary values(8,'辽宁省')
insert into promary values(9,'吉林省')
insert into promary values(10,'黑龙江省')
insert into promary values(11,'江苏省')
insert into promary values(12,'浙江省')
insert into promary values(13,'安徽省')
......
根据给定的信息,本文将对传智播客省市选择数据中的关键知识点进行详细的解析与说明。主要内容包括数据库的创建、表结构的设计以及数据插入的过程。
### 数据库创建
根据给定信息,可以看到创建了一个名为`DBPromary`的数据库:
```sql
create database DBPromary
use DBPromary
go
```
这里通过`create database`语句创建了名为`DBPromary`的数据库,并通过`use DBPromary`切换到该数据库下进行后续操作。`go`关键字是SQL Server中用于分隔批处理的命令,以便在执行多个命令时可以更好地控制执行流程。
### 表的创建与设计
接下来,创建了一个名为`promary`的表来存储省级行政区的数据:
```sql
create table promary
(
proID int primary key,
proName varchar(50) not null
)
```
#### promary表设计解析
- `proID`字段作为主键,类型为`int`,用于唯一标识每个省份。
- `proName`字段类型为`varchar(50)`,用于存储省份名称,且不能为空(`not null`)。
#### 数据插入
接着,通过一系列`insert into`语句向`promary`表中插入了中国34个省级行政区的数据:
```sql
insert into promary values(1,'北京市')
insert into promary values(2,'天津市')
insert into promary values(3,'上海市')
insert into promary values(4,'重庆市')
insert into promary values(5,'河北省')
...
```
### 注意事项
在数据插入过程中,出现了“23山东和16山东重复”的问题。这表明在插入数据时没有仔细检查省份是否已经存在。例如,在原始脚本中,第16条记录和第23条记录都是山东省:
```sql
insert into promary values(16,'山东省')
...
insert into promary values(23,'山东省')
```
这种重复会导致数据不准确,甚至可能会引发主键冲突错误,因为`proID`是`promary`表的主键,不允许有重复值。解决方法是在插入之前检查数据的完整性和唯一性。
### 城市表的创建
除了省级行政区信息外,还创建了一个名为`city`的表来存储城市信息:
```sql
create table city
(
cityID int not null,
cityName varchar(50) primary key,
proID int foreign key references promary(proID)
)
```
#### city表设计解析
- `cityID`字段为整型,不为空,用于唯一标识每个城市。
- `cityName`字段为主键,类型为`varchar(50)`,用于存储城市名称。
- `proID`字段为外键,关联`promary`表中的`proID`字段,用于表示城市的所属省份。
### 数据插入示例
向`city`表中插入了一些示例数据:
```sql
insert into city values(1,'北京市',1)
insert into city values(1,'天津市',2)
insert into city values(1,'上海市',3)
insert into city values(1,'重庆市',4)
```
### 总结
通过对以上内容的分析,我们了解了如何使用SQL语句创建数据库和表,并向其中插入数据。特别是对于`promary`表和`city`表的设计,我们需要注意字段的选择、主键与外键的关系等细节。此外,数据的一致性和准确性也是非常重要的一环,需要在实际应用中加以注意。