IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL入门学习:创建和操纵表 -> 正文阅读

[大数据]MySQL入门学习:创建和操纵表

一、创建表

????????MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。

一般有两种创建表的方法:

  • 使用具有交互式创建和管理表的工具(如Navicat for MySql)
  • 表也可以直接用MySQL语句操纵

????????为了用程序创建表,可使用SQL的CREATE TABLE语句。为利用CREATE TABLE创建表,必须给出下列信息:

  • 新表的名字,在关键字CREATE TABLE之后给出
  • 表列的名字和定义,用逗号分隔。?
CREATE TABLE customers1(
	cust_id INT NOT NULL auto_increment,
	cust_name CHAR(50) NOT NULL,
	cust_address CHAR(50) NULL,
	cust_city CHAR(50) NULL,
	cust_state CHAR(5) NULL,
	cust_zip CHAR(10) NULL,
	cust_country CHAR(50) NULL,
	cust_contact CHAR(50) NULL,
	cust_email CHAR(255) NULL,
	PRIMARY KEY(cust_id)
) ENGINE = INNODB;

????????从上面的例子中可以看到,表名紧跟在CREATE TABLE关键字后面。实际的表定义(所有列)括在圆括号之中。各列之间用逗号分隔。这个表由9列组成。每列的定义以列名(它在表中必须是唯一的)开始,后跟列的数据类型。表的主键可以在创建表时用PRIMARY KEY关键字指定。这里,列cust_id指定作为主键列。

1. 使用NULL值

????????NULL值就是没有值或缺值。允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值。

????????每个表列或者是NULL列,或者是NOT NULL列这种状态在创建时由表的定义规定。如上例中创建customers1表所示。

2.?使用AUTO_INCREMENT

????????AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。每次执行一个INSERT操作时,MySQL自动对该列增量(从而才有这个关键字AUTO_INCREMENT),给该列赋予下一个可用的值。这样给每个行分配一个唯一的cust_id,从而可以用作主键值。

????????每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如,通过使它成为主键)。?

3. 指定默认值

????????如果在插入行时没有给出值,MySQL允许指定此时使用的默认值默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。?

CREATE TABLE orderitems1(
	order_num INT NOT NULL,
	order_item INT NOT NULL,
	prod_id CHAR(10) NOT NULL,
	quantity int NOT NULL DEFAULT 1,
	item_price DECIMAL(8,2) NOT NULL,
  PRIMARY KEY(order_num,order_item)
) ENGINE = INNODB;

????????这条语句创建包含组成订单的各物品的orderitems表(订单本身存储在orders表中)。quantity列包含订单中每项物品的数量。在此例子中,给该列的描述添加文本DEFAULT 1指示MySQL,在未给出数量的情况下使用数量1。?

二、更新表

????????为更新表定义,可使用ALTER TABLE语句但是,理想状态下,当表中存储数据以后,该表就不应该再被更新。为了使用ALTER TABLE更改表结构,必须给出下面的信息:

  • 在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错);?
  • 所做更改的列表。?

示例:

ALTER TABLE vendors
ADD vend_phron CHAR(20)

? ? ? ? 以上语句给vendors表增加一个名为vend_phone的列,必须明确其数据类型

ALTER TABLE vendors
DROP COLUMN vend_phron;

????????以上语句删除vendors表中名为vend_phone的列。

????????ALTER TABLE的一种常见用途是定义外键,如下是其具体操作代码:

ALTER TABLE orderitems 
ADD CONSTRAINT fk_orderitems_orders 
FOREIGN KEY (order_num) REFERENCES orders(order_num);

ALTER TABLE orderitems 
ADD CONSTRAINT fk_orderitems_products 
FOREIGN KEY (prod_id) REFERENCES products(prod_id);

ALTER TABLE orders 
ADD CONSTRAINT fk_orders_customers 
FOREIGN KEY (cust_id) REFERENCES customers(cust_id);

ALTER TABLE products 
ADD CONSTRAINT fk_products_vendors 
FOREIGN KEY (vend_id) REFERENCES vendors(vend_id);

复杂的表结构更改一般需要手动删除过程,它涉及以下步骤:

  • 用新的列布局创建一个新表;
  • 使用INSERT SELECT语句从旧表复制数据到新表。如果有必要,可使用转换函数和计算字段;?
  • 检验包含所需数据的新表;
  • 重命名旧表(如果确定,可以删除它);
  • 用旧表原来的名字重命名新表;?
  • 根据需要,重新创建触发器、存储过程、索引和外键。

三、删除表

????????删除表(删除整个表而不是其内容)非常简单,使用DROP TABLE语句即可:?

DROP TABLE customers1

四、重命名表

????????使用RENAME TABLE语句可以重命名一个表:?

RENAME TABLE custnew TO customers2;

五、结束

????????本文主要介绍了对数据表的操作。包括CREATE TABLE用来创建新表,ALTER?TABLE用来更改表列(或其他诸如约束或索引等对象),DROP TABLE用来完整地删除一个表这些语句必须小心使用,并且应在做了备份后使用。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:53:32  更:2022-02-06 13:55:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:08:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码