轻松掌握SQL:5节课带你从零开始搭建数据库和建表

发表时间: 2022-11-27 12:16

一、前言

大家好,上节课我们对数据库的基本概念 库表行列键有了一个较为详细的了解,为我们接下来的学习打下了一个很好的基础。那么本节课我们将学习,如何搭建数据库以及如何建表

大家知道,在信息化时代,几乎每家公司都需要自己的软件系统。那么假如某天你被要求去负责公司软件系统的数据库开发这项工作,就需要对数据库有一个较为专业的了解。

经过了上节课的学习我们知道,数据库是由若干个表组成的,那么由此我们得出结论:数据库的开发和使用是从创建数据库和创建表开始的。

在这里我们划个重点:数据库的开发从搭建数据库和建表开始

二、搭建数据库

1、 查看数据库

那么下面我们来看如何搭建数据库,提到数据库我们往往会想到,假如我们的数据库系统已经装好,那么我们想知道我们的系统中已经存在哪些数据库,那么在MySql中我们可以用以下代码来查询系统中已经存在的数据库列表。

SHOW DATABASES;   -- MySql中查看数据库

那么同样的功能我们在SQL Server中可以用这条语句来实现。

SELECT name FROM sysdatabases   -- SQL Server中查看数据库

2、 创建数据库

2.1 语法结构

在MySql中,我们用这样的语法结构来创建数据库,CREATE DATABASE `数据库名称` [建库选项],其中建库选项常用的包括 设置字符集 和 设置校验规则。

在语法当中,数据库名称可以放在一对反单引号的中间,这主要是为了避免数据库名、表名、字段名 和SQL中的关键字冲突,但是也可以不加。

2.2 语法详解

CREATE DATABASE `数据库名称` 放在语句的最前面,表示要创建一个指定名称的数据库。

CHARACTER SET ‘字符集值’ 则表示要设置指定值的字符集,例如我们可以设置为’gbk’。

COLLATE ‘校验规则值’ 则表示设置指定值的校验规则,例如可以设置为’gbk_bin’表示字符的大小写敏感。

那么最后呢,我们还要注意下语法顺序,如果顺序不对那么执行的时候也是会报错。

2.3 更加完善的语法

除了上面最基础,最简单的创建方法之外我们还有更为完善的创建方法,比如以下一组语句。

第一步,我们在创建之前先去断该数据库是否已经存在,只有在不存在的情况下再去创建,这样就避免了执行出错

第二步,当数据库创建成功以后我们再去修改他的字符集设置。

第三步,同样的当数据库创建成功以后我们再去修改他的校验规则设置。

当然了最后我们还是要注意下执行语句的顺序以避免出错。

2.4 手工创建数据库

除了用代码的方式创建数据库我们还可以在数据库管理工具中手动的去创建数据库,例如我们可以在navicat中使用内置的管理工具手动的去创建数据库。

那么有兴趣的同学可以去试一下。

2.5 删除数据库

同时也可以删除我们认为不需要的数据库。我们可以用语句DROP DATABASE `数据库名称`来删除指定名称的数据库。

DROP DATABASE `testdb` ;   -- MySql中删除数据库

同样也可以在管理工具中手动的去删除数据库。

那么当然了删除数据库是相当危险的操作行为,所以我们在操作时要非常小心以避免造成不必要的数据损失。


三、创建表

1、 查看表

好接下来我们来看下如何建表。在建表之前我们会想知道数据库中有哪些已经存在的表。我们可以用SHOW TABLES 语句来显示数据库中已经存在的表清单。

SHOW TABLES;   -- MySql中查看表

2、 建表

2.1 语法结构

在MySql数据库中,我们用以下语法来实现建表,

CREATE TABLE <表名> ([表定义选项]) [表选项] [分区选项];

开头的Create Table 关键字跟上表名,主体部分我们称之为表定义选项,后面我们可以跟上表选项以及分区选项。

-- 建表的示例代码CREATE TABLE Memb_User(UserID INT NOT NULL PRIMARY KEY COMMENT '用户ID',Mobile VARCHAR(32) NOT NULL COMMENT '手机号码',Birthday DATE NULL COMMENT '生日',CreateTime DATETIME NOT NULL DEFAULT NOW() COMMENT '创建时间',CONSTRAINT UNIQUE_UserMobile UNIQUE(Mobile) COMMENT '手机号不能重复')DEFAULT CHARSET=gbk COLLATE=gbk_bin;

2.2 表定义选项

表定义选项作为建表语句的主体部分,它其实是由一条条列的定义构成的。那么这是列的定义格式:

列名称 数据类型 [非空约束] [唯一约束] [主键约束] [默认值选项] [注释选项]

-- 表定义选项示例:CREATE TABLE Memb_User(UserID INT NOT NULL PRIMARY KEY COMMENT '用户ID’,CreateTime DATETIME NOT NULL DEFAULT NOW() COMMENT '创建时间',CONSTRAINT UNIQUE_UserMobile UNIQUE(Mobile) COMMENT '手机号不能重复')

2.3 表定义选项语句解析

下面我们对表定义选项的语法做详细的解析。

1. 整个语法结构中,除了列名称和数据类型为必选项之外其它均为可选项。每个列的语法中均可以包括列名称、数据类型、约束以及选项。

2. 非空约束包括不可为空(NOT NULL)和可为空(NULL)两种取值,例如用户表中的用户ID是绝对不能出现空值的,所以必须设为NOT NULL。

3. 唯一约束(UNIQUE)规定了该列不能出现重复值,例如用户表中的手机号码,理论上每个用户的手机号码都是不相同的。

4. 主键约束(PRIMARY KEY)将会把该列设为该表的唯一主键,一张表只能有一个主键,所以主键约束在表定义中只能出现一次。

5. 默认值选项(DEFAULT) 为该列设置了缺省值,当我们在该表中插入记录时如果不指定插入该列,那么系统将自动给出该列的默认值。

6. 注释选项(COMMENT) 则为该列设置了描述信息,一般是用来标识该列的用途,以方便后续修改表结构时知道该列的功能以及用途。

2.4 表级约束定义

创建表时用到的约束总共分5种,那么其中的唯一约束、主键约束和外键约束也可以针对表进行设置,而不仅仅只可以针对某一列进行设置。

2.5 表选项语法详解

我们上面说在建表语句中还有[表选项]部分,那么表选项包括存储引擎、自动初始值以及注释功能。

1、 存储引擎,是决定了数据如何存储以及如何访问,还有事务如何处理,这个选项一般我们使用默认值而不去设置它。

2、 自动初始值,决定了当向表中插入第一行时,自增列得到的第一个值是多少。

3、 注释选项则给该表添加注释,一般描述了该表的功能及用途。

4、 在字符集设置选项中,我们可以对该表的存储字符进行设置,例如可以设置为gbk或者utf-8,如果设置为gbk则表示该表可以存储中文字符。

5、 校验规则设置确定了对该表中的数据进行比较时采用哪种规则,例如设置为gbk_bin(二进制)则表示该表的字段名和存储内容须区分大小写。

3、 删除表

好,下面我说下删除表。在MySql数据库中,我们用语句DROP TABLE `表名称` 或者更为完善的DROP TABLE IF EXISTS `表名称` 来完成对数据表的删除操作。

DROP TABLE `testdb`;   -- MySql中删除表

我们也可以在数据库管理工具中通过右击弹出菜单的方式来手动删除数据表。

当然了,无论用哪种方法删除表,我们在删除操作时都要十分小心,因为删错了就会造成不可估量的数据损失!


四、本讲总结

那么通过以上的学习,我们就可以试着去搭建数据库和建表了。

通过本节课的学习,我们掌握如何去搭建数据库以及如何建表,为后续SQL的深入学习打下了坚实的基础。

好了,本节课就先到这里,谢谢大家!