当前位置: 首页 > article >正文

MySQL创建和操纵表

目录

1、创建表

(1)使用基础SQL语句创建表-简单的 CREATE TABLE

(2) 使用NULL值

(3) 指定默认值

(4)指定主键或外键 

2、更新、删除表

(1)更新表 -- ALTER TABLE

(2)删除表 -- DROP TABLE

4、小结


博主用的是mysql8 DBMS,附上示例资料:

百度网盘链接: https://pan.baidu.com/s/1XaWi3Y7hpXbs_uHq2cPI6Q

提取码: fpnx

1、创建表

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

  • 多数 DBMS 都具有交互式创建和管理数据库表的工具;
  • 表也可以直接用 SQL 语句操纵

(1)使用基础SQL语句创建表-简单的 CREATE TABLE

利用 CREATE TABLE 创建表,必须给出下列信息:

  • 表的名字,在关键字 CREATE TABLE 之后给出;
  • 列的名字和定义,用逗号分隔;
  • 有的 DBMS 还要求指定表的位置
-- CREATE TABLE 表名 + (列名 类型(长度) 是否NULL  默认)
-- 不能为NULL的值,需要指定NOT NULL,可以为NULL的值可以不指定也可以指定NULL
CREATE TABLE Products_new
( 
 prod_id CHAR(10) NOT NULL, 
 vend_id CHAR(10) NOT NULL, 
 prod_name CHAR(254) NOT NULL, 
 prod_price DECIMAL(8, 2) NOT NULL, 
 prod_desc TEXT NULL                   -- 对于 MySQL,varchar 必须替换为 text
);

(2) 使用NULL值

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

每个表列要么是 NULL 列,要么是 NOT NULL ,这种状态在创建时由表的定义规定。

-- 举例而已
CREATE TABLE Orders 
( 
 order_num INTEGER NOT NULL, 
 order_date DATETIME NULL, 
 cust_id CHAR(10) NOT NULL 
);

 NULL 为默认设置,如果不指定 NOT NULL,就认为指定的是 NULL

提示:主键和 NULL

1课介绍过,主键是其值唯一标识表中每一行的列。只有不允许NULL值的列可作为主键,允许 NULL 值的列不能作为唯一标识。

  •  以下是指定主键的例子
-- 举例而已
CREATE TABLE Orders 
( 
 order_num INTEGER NOT NULL PRIMARY KEY, 
 order_date DATETIME NULL, 
 cust_id CHAR(10) NOT NULL 
);

(3) 指定默认值

SQL 允许指定默认值,在插入行时如果不给出值,DBMS 将自动采用默认值

默认值在 CREATE TABLE 语句的列定义中用关键字 DEFAULT 指定

-- 对于系统日期:MySQL的DATETIME类型需要的值为CURRENT_TIMESTAMP
CREATE TABLE Orders_new
( 
 order_num INTEGER NOT NULL PRIMARY KEY, 
 order_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
 cust_id CHAR(10) NOT NULL 
);

(4)指定主键或外键 

  • 单列主键:列定义时加上 PRIMARY KEY 即可将该列定义为主键,但是这种方式只能指定单列主键。

  • 复合主键:在列定义完成后一行使用 PRIMARY KEY (col1, col2 ...) 来指定复合主键。

-- 单列主键
CREATE TABLE Orders_new
( 
 order_num INTEGER NOT NULL PRIMARY KEY, 
 order_date DATETIME NOT NULL, 
 cust_id CHAR(10) NOT NULL 
);


-- 复合主键
CREATE TABLE OrderItems_new2
( 
 order_num INTEGER NOT NULL, 
 order_item INTEGER NOT NULL, 
 prod_id CHAR(10) NOT NULL, 
 quantity INTEGER NOT NULL DEFAULT 1, 
 item_price DECIMAL(8,2) NOT NULL,
 PRIMARY KEY (order_num, order_item)
);
  • 外键用于在一个表中存储另一个表的主键值,建立两个表之间的引用关系。它可以保证数据的完整性,防止出现不一致的数据,例如在子表中插入一个在父表中不存在的主键值。

  • 在创建表时指定外键,只需要在列定义完成后使用 

FOREIGN KEY (prod_id) REFERENCES products(prod_id)
-- 使用复合主键、外键、DEFAULT默认值和NULL值
CREATE TABLE OrderItems_new3
( 
 order_num INTEGER NOT NULL, 
 order_item INTEGER NOT NULL, 
 prod_id CHAR(10) NOT NULL, 
 quantity INTEGER NOT NULL DEFAULT 1, 
 item_price DECIMAL(8,2) NOT NULL,
 PRIMARY KEY (order_num, order_item),
 FOREIGN KEY (prod_id) REFERENCES products(prod_id)
);

2、更新、删除表

(1)更新表 -- ALTER TABLE

  • 新增列:
-- 新增列
ALTER TABLE orders_new
ADD COLUMN vend_phone CHAR(20);
  • 修改已有列:
-- 修改已有列
ALTER TABLE orders_new
MODIFY COLUMN vend_phone CHAR(30);
  • 删除列:
-- 删除列
ALTER TABLE orders_new
DROP COLUMN vend_phone;
  • 重命名表:
-- 重命名表
-- ALTER TABLE
ALTER TABLE orders_new RENAME TO orders_new1;

-- RENAME TABLE
RENAME TABLE orders_new TO orders_new1;

(2)删除表 -- DROP TABLE

-- 删除表
DROP TABLE orders_new;

4、小结

  1. 创建表:CREATE TABLE
  2. 列定义:name + data_type(len) + NULL? + DEFAULT?
  3. 创建表时指定主键和外键的语法
  4. 更新表:ALTER TABLE
  5. 新增列、修改已有列、删除列、重命名表的两种方法
  6. 删除表:DROP TABLE

http://www.kler.cn/a/516957.html

相关文章:

  • 统计文本文件中单词频率的 Swift 与 Bash 实现详解
  • Grafana
  • Flink运行时架构
  • pytest自动化测试 - pytest夹具的基本概念
  • 算法随笔_19: 数组中的最长山脉
  • Go学习:常量
  • 使用 GitHub Page 托管个人博客
  • GPU算力平台|在GPU算力平台部署可图大模型Kolors的应用实战教程
  • Oracle、PostgreSQL该学哪一个?
  • Stable Diffusion 秋叶整合包v4.7 :解压即用,快速入门AI绘画
  • Starrocks-数据备份与恢复
  • 【嵌入式】总结——Linux驱动开发(三)
  • 低代码系统-产品架构案例介绍,宜搭(五)
  • docker安装consul并启动的详细步骤
  • Redis高阶2-BigKey
  • Redis-HyperLogLog
  • React 19 新特性总结
  • Chrome 132 版本新特性
  • tomcat shutdown.sh不能关闭tomcat 进程
  • K8S-标签管理,探针,名称空间,rc控制器,svc服务发现
  • 聚类问题(K-means,系统聚类,SBSCAN算法)
  • 构建沉浸式汉语学习环境
  • Neural networks 神经网络
  • 2025春招 SpringCloud 面试题汇总
  • AI Agent:深度解析与未来展望
  • Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识