要掌握的要点:

  1. 表通过CREATE TABLE语句创建而成。
  2. 表和列的命名要使用有意义的文字。
  3. 指定列的数据类型(整数型、字符型和日期型等)。
  4. 可以在表中设置约束(主键约束和NOT NULL约束等)。

数 据 库 的 创 建(CREATE DATABASE语句)

在创建表之前,一定要先创建用来存储表的数据库。运行CREATE DATABASE语句就可以在RDBMS上创建数据库了。CREATE DATABASE语句的语法如下所示A。

语法1-1 创建数据库的CREATE DATABASE语句

CREATE DATABASE <数据库名称>;

这里我们将数据库命名为shop, 创建数据库shop的CREATEDATABASE语句CREATE DATABASE shop;此外,数据库名称、表名以及列名都要使用半角字符(英文字母、数字、符号),具体内容随后会进行介绍。

表的创建(CREATE TABLE语句)创建好数据库之后,接下来我们使用CREATE TABLE语句在其中创建表。CREATE TABLE语句的语法如下所示

创建表的CREATETABLE语句

CREATE TABLE <表名>
(<列名1> <数据类型> <该列所需约束>,<列名2> <数据类型> <该列所需约束>, <列名3> <数据类型> <该列所需约束>, <列名4> <数据类型> <该列所需约束>, .       .      .
<该表的约束1>, <该表的约束2>,... ... );

创建Product表的CREATETABLE语句

CREATE TABLE  Product
(product_id      CHAR(4)      NOT NULL,product_name    VARCHAR(100)  NOT NULL,
product_type    VARCHAR(32)  NOT NULL,
sale_price      INTEGER      ,purchase_price  INTEGER      ,
regist_date     DATE         , PRIMARY KEY (product_id));

命名规则

我们只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称。

数据类型的指定

Product表所包含的列,定义在CREATETABLEProduct( )的括号中。列名右边的INTEGER或者CHAR等关键字,是用来声明该列的数据类型的,所有的列都必须指定数据类型。

数据类型表示数据的种类,包括数字型、字符型和日期型等。每一列都不能存储与该列数据类型不符的数据。声明为整数型的列中不能存储'abc'这样的字符串,声明为字符型的列中也不能存储1234这样的数字。

数据类型的种类很多,各个RDBMS之间也存在很大差异。根据业务需要实际创建数据库时,一定要根据不同的RDBMS选用最恰当的数据类型。在学习SQL的时候,使用最基本的数据类型就足够了。下面我们就来介绍四种基本的数据类型。

●INTEGER型用来指定存储整数的列的数据类型(数字型),不能存储小数。

●CHAR型CHAR是CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符型)。可以像CHAR(10)或者CHAR(200)这样,在括号中指定该列可以存储的字符串的长度(最大长度)。字符串超出最大长度的部分是无法输入到该列中的。RDBMS不同,长度单位也不一样,既存在使用字符个数的情况,也存在使用字节长度A的情况。

字符串以定长 字 符 串的形式存储在被指定为CHAR型的列中。所谓定长字符串,就是当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足。例如,我们向CHAR(8)类型的列中输入'abc'的时候,会以'abc'(abc后面有5个半角空格)的形式保存起来。另外,虽然之前我们说过SQL不区分英文字母的大小写,但是表中存储的字符串却是区分大小写的。也就是说,'ABC'和'abc'代表了两个不同意义的字符串。

●VARCHAR型同CHAR类型一样,VARCHAR型也是用来指定存储字符串的列的数据类型(字符串类型),也可以通过括号内的数字来指定字符串的长度(最大长度)。但该类型的列是以可 变长 字 符 串的形式来保存字符串的B。定长字符串在字符数未达到最大长度时会用半角空格补足,但可变长字符串不同,即使字符数未达到最大长度,也不会用半角空格补足。例如,我们向VARCHAR(8)类型的列中输入字符串'abc'的时候,保存的就是字符串'abc'。该类型的列中存储的字符串也和CHAR类型一样,是区分大小写的

约束的设置约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。Product表中设置了两种约束。

Product表的product_id列、product_name列和product_type列的定义如下所示。product_id CHAR(4) NOT NULL,product_name VARCHAR(100) NOT NULL,product_type VARCHAR(32) NOT NULL,数据类型的右侧设置了NOT NULL约束。NULL是代表空白(无记录)的关键字A。在NULL之前加上了表示否定的NOT,就是给该列设置了不能输入空白,也就是必须输入数据的约束(如果什么都不输入就 会 出 错 )。这样一来,Product表的product_id(商品编号)列、product_name(商品名称)列和product_type(商品种类)列就都成了必须输入的项目。另外,在创建Product表的CREATETABLE语句的后面,还有下面这样的记述。PRIMARY KEY (product_id)这是用来给product_id列设置主键约束的。所谓键,就是在指定特定数据时使用的列的组合。键种类多样,主键(primary key)就是可以特定一行数据的列B。也就是说,如果把product_id列指定为主键,就可以通过该列取出特定的商品数据了。反之,如果向product_id列中输入了重复数据,就无法取出唯一的特定数据了(因为无法确定唯一的一行数据)。这样就可以为某一列设置主键约束了。

mysql 创建表_每天10分钟带你学会MySQL(三)表的创建相关推荐

  1. mysql书写规则_每天10分钟带你学会MySQL(二)SQL语句的基本书写规则

    SQL语句时必须要遵守一些规则.这些规则都非常简单,接下来就让我们逐一认识一下吧. 1,SQL语句以分号(;)结尾. ■SQL语句要以分号(;)结 尾 一条SQL语句可以描述一个数据库操作.在RDBM ...

  2. sql 全角转半角_每天10分钟带你学会MySQL(二)SQL语句的基本书写规则

    SQL语句时必须要遵守一些规则.这些规则都非常简单,接下来就让我们逐一认识一下吧. 1,SQL语句以分号(;)结尾. ■SQL语句要以分号(;)结 尾 一条SQL语句可以描述一个数据库操作.在RDBM ...

  3. 10分钟带你学会微信小程序的反编译

    以xxxxx小程序为例10分钟带你学会微信小程序的反编译 2019-11-28 12:59:26 以一个简单的例子介绍下小程序反编译操作流程 实验环境 前置准备 模拟器内软件安装 获取小程序包 开始解 ...

  4. Azure IoT Hub 十分钟入门系列 (1)- 10分钟带你了解Azure IoT Hub 并创建IoT Hub

    建议您先对<Azure 上 IoT 整体解决方案概览 >进行了解. 本文主要分享一个案例: 10分钟-了解Azure IoT Hub并创建Azure IoT Hub 本文主要有如下内容: ...

  5. 文件上传很难搞?10分钟带你学会阿里云OSS对象存储

    一. 前言 最近有很多小伙伴问壹哥,如果我们要进行大规模的文件存储该怎么做? 其实实现文件存储的技术有很多,如果我们在网上搜索一下,你会发现实现的技术简直是五花八门,比如有一种技术叫FastDFS就可 ...

  6. 以中银E路通小程序为例10分钟带你学会微信小程序的反编译

    以一个简单的例子介绍下小程序反编译操作流程 实验环境 前置准备 模拟器内软件安装 获取小程序包 开始解包 导入开发者工具 补充注意事项 技术交流群 有偿解包 uniapp 逆向服务 逆向教程小程序

  7. java编程石头剪刀布图片_石头、剪刀、布!10分钟带你打开深度学习大门,代码已开源...

    原标题:石头.剪刀.布!10分钟带你打开深度学习大门,代码已开源 沉沉 发自 宇宙中心 量子位 出品 | 公众号 QbitAI 深度学习技术的不断普及,越来越多的语言可以用来进行深度学习项目的开发,即 ...

  8. mysql和oracle冲突吗_三分钟带你分清MySQL 和Oracle之间的误区

    原标题:三分钟带你分清MySQL 和Oracle之间的误区 来自:华为云开发者社区 摘要:MySQL和Oracle,别再傻傻分不清. MySQL 和Oracle 在开发中的使用是随处可见的,那就简单去 ...

  9. 10分钟带你了解python_10分钟Python入门系列教程及学习资源分享

    本期分享笔记内容 归档此前入门教程文章,方便查看 10分钟带你Python入门的特点 简单谈下如何寻找Python学习资源 关于分享Python学习资源的分享问题 本人对于Python学习创建了一个小 ...

最新文章

  1. Android自定义泡泡效果 源码
  2. Retrofit2.0和Rxjava结合使用的简单记录
  3. java字符匹配,Java:匹配字符串中的短语
  4. Modbus协议栈应用实例之四:ModbusTCP服务器应用
  5. Windows10 部署 Sonarqube 代码质量管理平台
  6. vtkSuperquadricSource:创建以原点为中心的多边形超二次曲面
  7. listview的简单实现
  8. rmi反序列化导致rce漏洞修复_企业安全05-Fastjson =1.2.47反序列化RCE漏洞(CNVD-2019-22238)...
  9. Capital Asset Pricing Model (CAPM)
  10. SQL Server 字段类型Char Varchar 比较
  11. linux 自动开飞行模式,Android飞行模式灰显不能操作问题分解
  12. Android熟悉使用PackageManager,ActivityManager,MemoryInfo,引入布局文件Include的使用,values的管理
  13. Shallow Size 和 Retained Size
  14. body加背景图片没反应_body背景图片,给body加背景图片
  15. 对求一个数的各个位数的理解
  16. 面向对象程序设计c++版董正言张聪课本课后习题答案第二章
  17. 用更简单的方式画森林图
  18. EPICS -- base的自动化安装脚本
  19. 分享|雄安新区2021年大数据研究报告(附PDF)
  20. 我为什么选择超级IP名片

热门文章

  1. python做系统查人的信息_Python综合项目之员工信息查询
  2. mysql b 树 锁_mysql索引B+树、MVCC、锁一文搞懂
  3. oracle apex 发布应用,基于Oracle APEX的快速Web应用开发
  4. NLTK使用英文词性还原
  5. python函数注解
  6. elif else if oracle_shell中if做比较
  7. jquery 取值 数值_jQuery – 使用正则表达式获取数据值
  8. TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之三 Views
  9. 斯图加特大学GPU光线投射体渲染技术提携
  10. python3 pygame 坦克自动移动