操作表

操作表

  • 数据类型(常用)

tinyInt:很小的整数

int(integer):普通大小的整数

float(m,d):单精度浮点数,m表示数字长度,d表示小数位数,例如float(5,2)最大值999.99

double(m,d):双精度浮点数

date:YYYY-MM-DD 1000-01-01~9999-12-3

CHAR(M):M为0~255之间的整数,长度不可变,保存数据长度不变的数值,比如身份证号(18位)、手机号(11位)、UUID(36位)、MD5(32位)

VARCHAR(M)M0~65535之间的整数,长度可变,保存数据长度不一的数值,比如用户名、密码、地址

TEXT:允许长度0~65535字节

LONGTEXT:允许长度0~4294967295字节

  • 基本操作

数据库主键:指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要是用与其他表的外键关联,以及本记录的修改与删除。

语法

创建表:create table 表名

删除表:drop stable 表名

添加数据:insert into student (数据名,数据名......) values ('数据','数据'......)数据填null表示无

查找数据:select * from 表名(查找表中所有数据)

                  select 数据名,数据名...... from 表名 where 主键='主键数据'(查找部分数据,where可不加)

修改数据:update 表名 set 数据名='数据' where 主键='主键数据'

删除数据:delete from 表名 where 主键='主键数据'

不允许为空:(创建表时使用)  数据名 数据类型 not null

 唯一性:(允许有多个null)     数据名 数据类型 unique

不允许为空且不允许重复:primary key    数据名 数据类型 primary key

如果没有为该字段指定值,则使用默认值:数据名 数据类型 default

 自增长:(主键字段自动增加,数据必须为int型,且要加primary key)数据名 数据类型 auto_increment

备注:数据名 数据类型 comment ‘备注内容’

基本格式如下(创建一个表):

CREATE TABLE table_name(
	column_name data_type [default default_value] [column_constaint] [comment 'comment_content'],
	……
	[table_constaint]
        )[engine=engine_type] [default charset=charset_type]

例:

​
​
#创建名为stydent的表
create table student(
id char(10) primary key  comment '主键',
sex tinyint(1) default 0 comment '性别 0-男 1-女',
name varchar(10) comment '姓名',
mobile char(11) comment '手机号码',
adress varchar(50) comment '家庭地址'
)

#插入数据(性别使用默认值)
insert into student (id,name,mobile,adress) values ('01','bob','10010001000','十八层地狱') 

#查找数据
select * from student

#修改数据
update student set name='jim' where id='01'

#删除数据
delete from student where id='01'

​#删除表
drop table student

​

​

​

创建一个名为student的表,数据类型有id,name,mobile,address

  • 外键

外来的主键,即外键列的值一定来自于某个主键列。

create table user_info(
  id char(36) primary key,
  user_name varchar(30) not null,
  password varchar(30) not null,
  real_name varchar(8),
  mobile char(11),
  address varchar(150)
);
insert into user_info (id,user_name,password,real_name,mobile,address) 
values ('51b28fe1-4ebf-41ac-a17b-d5e276861fd0','fuliuqingfeng','123456','张三','18920120206','河南安阳');
insert into user_info (id,user_name,password,real_name,mobile,address) 
values ('cc95772b-75a2-4702-bd99-4c3b0322d606','fuliuqingfeng','123456','李四','18617297545','北京海淀');
insert into user_info (id,user_name,password,real_name,mobile,address)
values ('c63028fd-cf8d-4dac-a278-b5cc8fd61e3c','fuliuqingfeng','123456','王五','17694976949','山西大同');

这种表结构存在严重的字段冗余(user_name和password列),如果个人信息字段比较多这一问题表现的越严重。

create table user_info(
  id char(36) primary key,
  user_name varchar(30) not null,
  password varchar(30) not null
)
insert into user_info (id,user_name,password) values ('51b28fe1-4ebf-41ac-a17b-d5e276861fd0','fuliuqingfeng','123456');

create table address(
  id char(36) primary key,
  user_info_id char(36),
  real_name varchar(8) not null,
  mobile char(11) not null,
  address varchar(150) not null
)
insert into address (id,user_info_id,real_name,mobile,address) 
values ('bfb9472a-7911-4e6f-a479-3b719454ebab','51b28fe1-4ebf-41ac-a17b-d5e276861fd0','张三','18920120206','河南安阳');
insert into address (id,user_info_id,real_name,mobile,address) 
values ('5227c6b9-45a2-44aa-8ac0-1f63a38d3b65','51b28fe1-4ebf-41ac-a17b-d5e276861fd0','李四','18617297545','北京海淀');
insert into address (id,user_info_id,real_name,mobile,address) 
values ('30b8584b-aa6a-4516-a623-03f487058586','51b28fe1-4ebf-41ac-a17b-d5e276861fd0','王五','17694976949','山西大同');

这种表结构消除了字段冗余,但由于只是逻辑上的“外键”关系,所以依然无法保证数据完整性,例如可以将user_info中id为51b28fe1-4ebf-41ac-a17b-d5e276861fd0的数据删除,但此时地址表中数据将不再完整——找不到这些地址属于哪个用户;再例如也可以向address表中添加一条user_info_id不存在的地址信息(如:insert into address (id,user_info_id,real_name,mobile,address) values ('7da42cc6-36a6-4ad5-9998-71dbc30c8e17','ddc376dd-f8b3-42a6-b42a-db22abed1941','xiaowang','18338970095','北京东城区');)——同样,该条数据并不完整,依然找不到这些地址属于哪个用户。

create table user_info(
  id char(36) primary key,
  user_name varchar(30) not null,
  password varchar(30) not null
)
insert into user_info (id,user_name,password) values ('51b28fe1-4ebf-41ac-a17b-d5e276861fd0','fuliuqingfeng','123456');

create table address(
  id char(36) primary key,
  user_info_id char(36),
  real_name varchar(8) not null,
  mobile char(11) not null,
  address varchar(150) not null,
  constraint address_user_info_id_fk foreign key(user_info_id) references user_info(id)
)
insert into address (id,user_info_id,real_name,mobile,address) 
values ('bfb9472a-7911-4e6f-a479-3b719454ebab','51b28fe1-4ebf-41ac-a17b-d5e276861fd0','张三','18920120206','河南安阳');
insert into address (id,user_info_id,real_name,mobile,address) 
values ('5227c6b9-45a2-44aa-8ac0-1f63a38d3b65','51b28fe1-4ebf-41ac-a17b-d5e276861fd0','李四','18617297545','北京海淀');
insert into address (id,user_info_id,real_name,mobile,address) 
values ('30b8584b-aa6a-4516-a623-03f487058586','51b28fe1-4ebf-41ac-a17b-d5e276861fd0','王五','17694976949','山西大同');

这种方案为user_info_id添加了外键,指向user_info表的主键,该约束起到了保护数据完整性的作用:如果删除的用户信息id已经在address表中使用,则该条数据无法删除;无法向address表中添加用户id不存在的地址信息。

constraint为外键约束命名。

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值