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

数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_数据类型表操作(定义、操作和修改)

前言

        "<数据库原理及应用>(MySQL版)".以下称为"本书"中2.2.2,2.2.3小节

2.2.2数据类型

        前面分析过:怎样认识数据库中的数据?数据库是数据库服务器的数据单元,表是数据库的数据单元,属性是表的数据单元."数据类型",研究的是属性的类型.与之对应:数据指属性.

1.字符串类型

        常用字符类型有CHAR和VCHAR

        格式:        CHAR(数字)和VCHAR(数字)        //数字表示字符最大长度,超过后自动截断

        举例:        定义数据"name VCHAR(30)"       //表示定义一个属性name,类型字符串,长度30

                        在添加元组时,这一项可以写为:"zhangsan"(字符串,长度为8)

2.数值类型

        常用的数值类型有INT、DECIMAL

INT类型

        和C语言中的int类型类似,默认也是4字节.

DECIMAL类型

        所有的数值类型,格式DECIMAL(p,s),p表示数值数据的最大长度,s表示小数点后面的数字位数(可以省略,省略表示无小数),p也可以省略---表示无限大的数字?对p的取值有个疑问:p表示二进制的最大位数还是十进制的?如前所述,不考虑性能的情况下,可以省略括号里的内容.

        DECIMAL类型理论上包含INT类型(INT类型是DECIMAL类型的真子集)

3.日期和时间类型

        包括DATE,TIME和DATETIME类型

4.布尔类型

        BOOLEAN类型,只有TRUE和FALSE两个值

2.2.3基本表的定义、删除和修改

表操作说明

        1.对表的操作,应该和上面有一样的觉悟,表的数据单元是属性,表的操作是对"属性"的操作.

        2.大小写:mysql中的指令名和关键字用大写,其他小写.        ---按本书写法作为默认写法.

        3.原生MySQL(不借助界面工具)写法(例如Windows自带shell中使用)的写法示例如下:

         (图片为借用,原帖【MySQL】MySQL表的操作_mysql创建表-CSDN博客)

        这是想输入的内容        

create table user(
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码',
birthday date comment '生日'
)charset=utf8mb4 engine=MyISAM;

        这是在shell中具体输入

        按回车换行输入,当行末有分号回车表示语句结束

1.创建表

        本书P44:创建表,实际上就是在数据库中定义表的结构.表的结构包括表与列的名称,列的数据类型,以及建立在表或列上的约束.

        ---列就是属性.定义表需要定义属性名称和属性的数据类型.

        创建表的语句:

                CREATE TABLE 表名

        格式:

                CREATE TABLE 表名

                 (

                          属性名 属性数据类型,

                           ........(重复上一行)

                   );                                        //分号结尾

---DEFAULT说明:DEFAULT选项是给指定列设置默认值,用户不设置则自动生成默认值

    DEFAULT用法:加在上述格式的属性数据类型后面,属性仍然以","结尾.    

        创建表示例:

        CREATE TABLE product(p_code DECIMAL(6),p_name VARCHAR(30),p_price DECIMAL(5,2));

          写法说明:属性之间加逗号","(最后一个属性不用加),语句末尾加分号";"      

        DESC指令

                格式:DESC[RIBE]

                含义:显示表的结构

                示例:

                        DESC product       //DESC指令加表名称.

        关键字:AUTO_INCREMENT和PRIMARY KEY

                含义:AUTO_INCREMENT表示自增类型,每增加一个元组,元组内对应的属性值加1

                        PRIMARY KEY表示主键

                        两者要一起使用否则创建表会失败

                格式: 属性名 属性数据类型 AUTO_INCREMENT PRIMARY KEY

                示例:见本书P45例2-5

2.利用子查询来创建表

表内容回顾

什么是表?表内容回顾如下:

表是二维数据,由多个行组成,第一行是关系模型由属性组成,其余行是元组.表=关系模型+元组,如图

表示意图
关系模式属性1属性2…………属性n
元组第1行
第2行
……
第n行
说明:表=关系模式+元组;值需符合属性数据类型

格式:

        CREATE TABLE 表名

                        SELECT 语句;

示例:        

CREATE TABLE dept_cSELECT * FROM dept;

        含义:建立一张名叫dept_c的表,从表dept中选择所有(*表示所有)的属性.

                本书在这里没有说SELECT语句的含义,示例语句表示将表dept复制成新表dept_c.

注意:本书在编写时没有给出原始表dept的定义,补充如下(本书P46第一张表有dept定义,有出入):

        CREATE TABLE dept(deptno INT,dname  VARCHAR(14),loc    VARCHAR(13));

3.修改表的结构

        修改表的结构,内容包括增加新的列,删除原有的列或者修改列的数据类型、宽度等.

1>增加新列

        格式:

        ALTER TABLE 表名    

                ADD 列名 数据类型 (DEFAULT 默认值);        //括号内的内容为可选项

        示例:

        ALTER TABLE dept_c ADD telephone VARCHAR(11);

2>修改列数据类型和列名

        1)修改列数据类型

        格式:

        ALTER TABLE 表名

                MODIFY 列名 新数据类型 (DEFAULT 默认值);        //括号内的内容为可选项

        2)修改列名

        格式:

        ALTER TABLE 表名

                CHANGE 列名 新列名 新数据类型 (DEFAULT 默认值);        //括号内的内容为可选项

        注意:modify指令修改数据类型的长度也叫修改数据类型

                change指令包含了modify指令功能,如果不修改新数据类型,仍然要把原有数据类型写上.

        示例见本书P46

3>删除列

        格式:

        ALTER TABLE 表名

                DROP 列名;

4>截断表和删除表

        截断表的含义:删除表内所有元组(属性值),保留关系模式(所有属性)-保留表第一行

        删除表的含义:删除整张表(关系模式(第一行)和所有元组)

        截断表格式:

        TRUNCATE TABLE 表名;

        删除表格式:

        DROP TABLE 表名;

小结

        表操作---建立表,修改表,删除表的格式和含义

         表操作的各种指令读起来很直观,这部分内容较多但不复杂.

        

        

http://www.dtcms.com/a/338260.html

相关文章:

  • 终极方案!lightRag/graphRag离线使用tiktoken持续报错SSLError,不改源码,彻底解决!
  • MySQL和HiveSQL在查询上的区别
  • 上网行为管理
  • 用户认证与应用控制技术
  • 深入浅出 SQL:数据库操作的核心语言完全指南
  • 【c++】从灵活到规范:自定义消息机制的设计与实践
  • day10(练习题)
  • Three.js 动画循环学习记录
  • 6 webUI中图生图重绘方式--涂鸦、涂鸦重绘、局部重绘、上传蒙版重绘
  • 生成式引擎优化(GEO)AI搜索优化专家竞争力报告
  • 检测手绘图中不规则曲线交点的方法和一般规则线条交点的方法
  • rom定制系列------小米cc9机型 原生安卓15系统 双版线刷root 定制修改功能项
  • 力扣(分发糖果)
  • 【完整源码+数据集+部署教程】海洋垃圾与生物识别系统源码和数据集:改进yolo11-RVB
  • 深度优先遍历dfs(模板)
  • VS Code Copilot 完整使用教程(含图解)
  • 【笔记ing】考试脑科学 脑科学中的高效记忆法
  • 图论:Floyd算法
  • 从数学原理推导的角度介绍大语言MOE架构的本质
  • Linux系统WireShark抓取本地网卡报文
  • uv 现代化的虚拟环境管理工具
  • 量化线性层,将原始的fp16/bf16权重加载到Linear8bitLt模块中,调用int8_module.to(“cuda”)量化 (44)
  • 视频讲解:CatBoost、梯度提升 (XGBoost、LightGBM)对心理健康数据、交通流量及股票价格预测研究
  • Dubbo 的SPI
  • 深入解析RabbitMQ与AMQP-CPP:从原理到实战应用
  • IDEA 配置终端提示符样式,通过脚本方式
  • IntelliJ IDEA 开发配置教程
  • WPF---数据模版
  • 监督学习(Supervised Learning)和 无监督学习(Unsupervised Learning)详解
  • PCIe ASPM详解