02数据库表的相关操作

数据库表的创建

create database test;
drop database xuda;
show databases;

创建数据表,并插入数据

USE test;
create table student(
							id INT UNSIGNED PRIMARY KEY,
							name VARCHAR(20) NOT NULL,
							sex CHAR(1) NOT NULL,
							birthday DATE NOT NULL,
							tel CHAR(11) NOT NULL,
							remark VARCHAR(200)
							);
INSERT INTO student VALUES(1,"李强","男","1995-05-15","18392513420",NULL);		

show tables;
DESC student;
SHOW CREATE TABLE student;
DROP TABLE student;

使用float无法精确存储小数

CREATE TABLE temp(
id INT UNSIGNED PRIMARY KEY,
num FLOAT(20,10)
);

可以使用DECIMAL,这样不会丢失精度

DROP TABLE temp;
CREATE TABLE temp(
id INT UNSIGNED PRIMARY KEY,
num DECIMAL(20,10)
);

数据类型

CHAR (1-255)固定字符长度
VARCHAR (1-65535)不固定长度字符串[一般用这个就可以]
TXT 不确定长度字符串
MEDIUMTEXT 不确定长度字符串

日期类型

类型大小说明
DATE3字节日期
TIME3字节时间
YEAR1字节年份
DATETIME8字节日期时间
TIMESTAMP4字节时间戳

修改数据表结构

添加字段

ALTER TABLE student
ADD address VARCHAR(200) NOT NULL,
ADD home_tel CHAR(11) NOT NULL;

AlTER TABLE student
MODIFY home_tel VARCHAR(20) NOT NULL;

DESC student;

MODIFY 之前

id	int(10) unsigned	NO	PRI	
name	varchar(20)	NO		
sex	char(1)	NO		
birthday	date	NO		
tel	char(11)	NO		
remark	varchar(200)	YES		
address	varchar(200)	NO		
home_tel	char(11)	NO		

MODIFY 之后

id	int(10) unsigned	NO	PRI	
name	varchar(20)	NO		
sex	char(1)	NO		
birthday	date	NO		
tel	char(11)	NO		
remark	varchar(200)	YES		
address	varchar(200)	NO		
home_tel	varchar(20)	NO		

change更改字段名称

ALTER TABLE student
change address home_adress VARCHAR(20) NOT NULL;
DESC student;
id	int(10) unsigned	NO	PRI
name	varchar(20)	NO	
sex	char(1)	NO	
birthday	date	NO	
tel	char(11)	NO	
remark	varchar(200)	YES	
home_adress	varchar(20)	NO	
home_tel	varchar(20)	NO	

删除字段

ALTER TABLE student 
drop home_adress,
drop home_tel;

在这里插入图片描述

数据库表字段约束

数据库范式

  1. 第一范式:原子性
  2. 第二范式:唯一性
  3. 第三范式:每列都与主键有直接关系,不存在传递依赖

字段约束

约束名称关键字描述
主键约束PRIMARY KEY字段值唯一,且不为NULL
非空约束NOT NULL字段值不能为NULL
唯一约束UNIQUE字段值唯一,且可以为NULL
外键约束FOREIGN KEY保持关联数据的逻辑性
  1. 建议主键值使用数字类型,这样检索速度快
  2. 非空约束要求字段值不能为NULL
create table t_teacher(
	id INT  UNSIGNED PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) NOT NULL,
	tel CHAR(11) NOT NULL UNIQUE,
	married BOOLEAN NOT NULL DEFAULT FALSE
);
id	int(10) unsigned	NO	PRI	
name	varchar(20)	NO		
tel	char(11)	NO	UNI	
married	tinyint(1)	NO		0

外键约束

CREATE TABLE t_dept(
deptno INT UNSIGNED PRIMARY KEY,
dname VARCHAR(20) NOT NULL UNIQUE,
tel CHAR(4) UNIQUE
);

在这里插入图片描述

CREATE TABLE t_emp(
empno INT UNSIGNED PRIMARY KEY,
ename VARCHAR(20) NOT NULL,
SEX ENUM("男","女") NOT NULL,
deptno INT UNSIGNED NOT NULL,
hiredate DATE NOT NULL,
FOREIGN KEY (deptno) REFERENCES t_dept(deptno)
);

在这里插入图片描述
数据库的索引机制:数据排序,查找速度翻倍。
如何创建索引?
根据type创建索引idx_type

create table t_message(
id INT UNSIGNED PRIMARY KEY,
content VARCHAR(200) NOT NULL,
type ENUM("公告","通报","个人通知"),
create_time TIMESTAMP NOT NULL,
INDEX idx_type (type)
);

删除索引

DROP INDEX idx_type ON t_message

另外两种创建索引的方式

CREATE INDEX idx_type ON t_message(type)
ALTER TABLE t_message ADD INDEX idx_type(type)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值