目录
十四、表
1)定义:表(table)是数据库最基本的组成单元,数据库是用来存储数据的,数据库中有很多表,每一个表都是一个独立的单元,表也是一个结构化的文件;
由行和列组成,行称为数据或记录,列称为字段;
字段又包含:字段名称、字段类型、长度、约束。
2)创建表
1.语法格式:create table 表名称(字段名 类型(长度) 约束);
2.MySQL常用数据类型
数据类型 | 占用字节数 | 描述 |
char | char(*) | 定长字符串,存储空间大小固定; |
varchar | varchar(*) | 变长字符串,存储空间等于实际数据空间; |
int | 4个字节 | 表示整型; 比如自增ID和表示数量 |
bigint | 8个字节 | 表示长整型; 比如自增ID(数量比较大的情况下) |
float | 数值型(有效数字,小数位) | |
double | 数值型(有效数字,小数位) | |
text | 最大长度为64k字符的变长文本 | |
date | 8个字节 | 表示日期和时间 |
BLOB | Binary Large Object(二进制大对象) | |
CLOB | Charact Large Object(字符大对象) | |
其他… … |
2.1 char:定长字符串
char(3) 表示存储的数据长度不能超过3个字节长度,无论用多少都是3个字节的空间;
2.2 varchar:可变长字符串
varchar(3) 表示存储数据长度不能超过3个字节长度,用多少占多少的字节;
2.3 int:整数型
int(3) 表示存储任意3个字节的数值
2.4 bigint:长整型
对应java中的Long类型
2.5 float:浮点型单精度
float(7,2) 表示7个有效数字,2个有效小数位
2.6 double:浮点型双精度
double(7,2) 表示7个有效数字,2个有效小数位
2.7 date:日期类型
实际开发中,常用字符串代替日期类型
2.8 blob:二进制大对象
专门存储图片、视频、声音等数据
数据库存储图片是很常见,但存储大视频是很少的,一般都是存储视频地址
2.9 clob:字符大对象
可存储超大文本,可存储4G+字符串
2.10 varchar 与 char 对比:
a)都是字符串;
b)varchar比较智能,可以根据实际的数据大小来分配空间,比较节省空间;但是在分配的时候需要相关判断,效率低;
c)char不需要动态分配空间,所以执行效率高,但是可能会导致空间浪费;
d)若字段中数据不具备伸缩性,建议使用char类型储存;
e)若字段中数据具备很强伸缩性,建议使用varchar类型储存;
3)创建表,删除表,修改表
1. 创建表:(create)
语法格式:create table 表名称(字段名 类型(长度) 约束);
学生信息表字段包括:
学号:no int(10);
姓名:name varchar(32);
性别:sex char(3);
出生日期:birth date;
邮箱:email varchar(128);
注:多个字段用,号分隔
1.2创建语句,如下:
create table t_student(
no int(10),
name varchar(32),
sex char(3),
birth date,
emaile varchar(128)
);
注:表格名称最好以 t_ 或 tbl_ 开始,增强可读性;
varchar长度最好是2的倍数,方便存储中文
2.删除表:(drop)
语法格式:drop table 表名称;
drop table if exists 表名称;
2.1删除t_student表
drop table t_student;
drop table if exists t_student;
最好采用第二种方法删除表,但这是MySQL特色其他数据库不能使用
3.增/删/改表结构:(alter)
语法格式:
1.新增:alter table 表名 add 字段名 字段类型(长度);
2.修改:alter table 表名 modify 字段名 字段类型(长度);
3.删除:alter table 表名 drop 字段名;
1.【新增】给 t_student 表添加一个电话字段
alter table t_student add tel varchar(11);
2.【修改】将字段tel长度扩展到20长度
alter table t_student modify tel varchar(20);
3.【删除】将t_student表中的tel字段删除
alter table t_student drop tel;
4)创建表格时给字段设置默认值:default 默认值
联想知识点:
n 该文件是一个普通的文本文件,以.sql后缀结尾的文件我们称为SQL脚本;
n 在SQL脚本中包含了大量的SQL诧句,我们可以通过直接使用source执行这个大批量脚本;
n 在项目中期入职,数据库环境都已完善,PM可能会给程序员SQL脚本完成数据库的初始化;
n 如果脚本过大,我们可以使用Sublime Text这个软件;
小知识点:获取数据库系统当前时间
1.使用now()函数
2.通过java的Date对象也可获取
5)表的复制
定义:将查询结果当作一张表创建
语法结构:create table 表名 as select查询语句;
1.完全复制emp表到emp1
create table emp1 as select * from emp;
2.选择emp表中的员工编号,姓名,工资复制到表emp2;
create table emp2 as select empno,ename,sal from emp;
6)将查询结果插入到某张表中
语法结构:insert into 表名 select查询语句;
1.从emp2表中查询出员工工资为3000的,同时将查询结果插入到emp2表中
insert into emp2 select * from emp2 where sal=3000;