1.表操作
1.1 表的设计理念
- 第一范式:每个列不可分割
- 第二范式:实体的每个属性都和主键完全依赖
- 第三范式:每列都和主键列直接相关
1.2 表操作
查看数据库
show databases;
选择数据库
use dname;
创建表结构
create table tname{属性名 数据类型 完整性约束条件}
查看表详细定义
show create table tname
查看表定义
describe tname
删除表
drop table tname
修改表名称
alter table tname rename (to) newtname
1.3 字段操作
添加字段
- 末尾处添加:alter table tname add 属性名 属性类型
- 第一行添加:alter table tname add 属性名 属性类型 first
- 指定字段之后:alter table tname add 属性名 属性类型 after 指定属性名
删除字段
alter table tablename drop 属性名
修改字段
- 修改数据类型:alter table tname modify 属性名 属性类型
- 修改字段名称:alter table tname change 属性名 新属性名 数据类型
修改字段名称和数据类型
alter table tname change 属性名 新属性名 新数据类型
修改字段顺序
alter table modify 属性 数据类型 first(after 指定属性名)
约束条件
- 非空nk:属性名 数据类型 not null
- 默认值:属性名 数据类型 default 默认值
- 唯一性uk:属性名 数据类型 unique
- 主键pk
单一主键:属性名 数据类型 primary key
组合主键:constraint 主键名称 primary key(属性1,属性2) /在字段写完之后直接跟上/ - 主键自增:属性名 数据类型 auto_increment
- 外键fk:constraint 外键名称 foreign key (当前表中外键属性) reference 外键所属表(映射表中的属性)
2.Mysql的数据操作
2.1 插入
插入单条数据
insert into tname(属性1,属性2,……) values(属性1的值,属性2的值……)
插入多条数据
insert into tname(属性1,属性2,……)
values(属性11的值,属性12的值……),
(属性21的值,属性22的值……),
(属性31的值,属性32的值……),
…
(属性1的值,属性2的值……);
插入查询结果
insert into tname(属性1,属性2,……)
select (属性1,属性2,……) from 查询表名 where …
2.2 更新
更新指定记录
update tname set 属性名=属性值,属性名=属性值,… wherer 条件 比如学号为1
更新全部记录
update tname set 属性名=属性值,属性名=属性值,… wherer 条件 比如年龄大于30
2.3 删除
删除指定记录
delete from tname wherer 条件 比如学号为1
删除全部记录
delete from tname wherer 条件 比如年龄大于30
3. 数据类型
3.1 整数类型
bigint(8), int(4) ,Integert(4), mediumintt(3) ,smallintt(2) ,tinyint(1)
查看数据类型信息
help int
3.2 浮点数类型和定点数类型
float(4),double(8),decimal(M,D) M为精度,字节数是M+2
3.3 日期和时间类型
year(1) :1901-2155,
date(4):1000-01-9999-12-31,
time(3):-838:59:59-838:59:59,
datetime(8):1000-01 00:00:00 - 9999-12-31 23:59:59,
timestamp(4):197001080001-2038011911407
3.4 字符类型
3.4.1 char和varchar
char(M): 0 < M < 255
varchar(M): 0 < M < 65535
text(tinytext:0-255,text:0-65535,mediumtext:0-16772150,longtext:0-429496295)
3.4.2 enum类型
属性名 enum(‘值1’,‘值2’,… ,‘值n’)
最多可以有 65535个值
如果属性非空:默认值为第一个元素
如果属性可以为空:默认为NULL
3.4.3 set类型
属性名 set(‘值1’,‘值2’,… ,‘值n’)
可以去一个或多个元素的组合。取多个元素时不同元素用逗号隔开。 最多64个
3.5 二进制
binary(M):0-M的定长二进制
varbinary(M):0-M变长二级制
bit(M):M位二进制,最大64
tinyblob:可变长二进制数据,最多255 == 1B
blob:可变长二进制数据,最多2的16次方-1 == 2B
mediumblob:可变长二进制数据,最多2的24次方-1 == 3B
longblob:可变长二进制数据,最多2的32次方-1 == 4B