数据库原理及应用_数据库基础_第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 表名;
小结
表操作---建立表,修改表,删除表的格式和含义
表操作的各种指令读起来很直观,这部分内容较多但不复杂.