mysql学习之旅02-DDL数据库定义语言
操作数据库:
- 创建:create database 数据库名称;
- 删除:drop database 数据库名称 ;
- 查看所有的数据库:show databases;
- 切换或进入数据库:use 数据库名称;
操作表:
- 创建表:create table 表名(字段描述1,字段描述2:字段名称 字段类型[约束]);
- 查询创建表:利用现有表中查询的数据创建一个新的表
create table 新表 as select 字段1,字段2,字段3 from 原表
修改表:alter table 表名…
- 修改表名:alter table 旧表名 rename 新表名;
- 添加字段:alter table 表名 add [column] 字段描述 [after 字段名];
- 修改字段名:alter table 表名 change 原字段名 新字段名 字段描述;
- 修改字段描述:alter table 表名 modify 字段名称 字段类型[约束];
- 删除字段:alter table 表名 drop 字段名称
注意:
- 若表中有数据,可能无法更改表数据结构
- 使用change修改字段会覆盖所有字段描述
删除表:
- drop table 表名;
其他常用命令:
- 查看表结构:desc 表名;
- 查看建表语句:show create table 表名;
java与mysql的数据类型对应:
java | mysql | 备注 |
---|---|---|
byte | tinyint | |
short | smallint | |
int | int | |
long | bigint | |
char/String | varchar/char | varchar可变长度,mysql的方言,char固定长度 |
boolean | tinyint/int | 没有此类型,使用int类型代替(1真0假) |
float/double | float/double | 注意:double(5,2)代表长度为5,小数点占其中的两位,999.99 |
无 | decimal(10,2) | 表示总长度为10,小数位2位,不存在精度丢失,适用于账目计算 |
java.sql.Date | date | 日期 |
java.sql.Time | time | 时间 |
无 | datetime | 日期 + 时间 |
java.sql.Timestamp | timestamp | 时间戳,若给定值为null,会把当前系统时间存入数据库 |
java.sql.Clob | text | 长文本 |
java.sql.Blob | blob | 二进制 |
备注:
- float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
- double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
- decimal:数字型,128bit, 不存在精度丢失,常用于银行账目计算(28个有效位)
约束:
作用:为了保证数据的有效性和完整性
常用的约束:
- 默认约束:default 用于设置默认值
- 唯一约束:unique
对null值不起作用,可以有多个null值,但是空字符串只能有一个
- 非空约束:not null
- 主键约束:primary Key(实体完整性)
注意:唯一非空,一张表只能有一个主键,这个主键可以包含多个字段(联合主键),一般使用与业务逻辑无关的字段
- 方式1:建表的同时添加约束格式:字段名称,字段类型primary key
- 方式2:建表的同时在约束区域(所有字段之后)添加约束格式:primary key(字段1, 字段2)
- 方式3:建表之后,通过修改表结构添加约束格式:alter table 表名 add [constraint] primary key(字段1, 字段2…)
- 外键约束:foreign key(引用完整性)
注意:1, 添加完外键约束后,主表中不能删除从表中已引用的数据, 2, 从表中不能引用主表中不存在的数据, 3, 外键类型一般与主键类型保持一致, 4, mysql中外键有四种模式:限制,无操作,级联,设置为null
- 自动编号:auto_increment
要求:
- 被修饰的字段类型支持自增,一般是int
- 被修饰的字段必须是一个key,一般是primary key
- 检查约束:check(mysql不支持)
age int check(age>18 and age<60)