SQL数据类型、约束、索引、视图、触发器、存储过程、函数、初识JDBC

Day33

SQL-续

数据类型

tinyint、int、unsigned、float、double、decimal、char、varchar、BLOB、LONGBLOB、TEXT、LONGTEXT、date、time、datetime、timestamp、year

# 数据类型

# 整数类型 -------------------------------------------------------------
# tinyint - 1字节
# int - 4字节
# 经验:存储状态码可以选择tinyint,没有特殊要求存储整数可以选择int

# INT(3):取值范围是-2147483648~2147483647,数据不满3位就用0填充
# unsigned - 无符号(不满存负数)
# zerofill - 0填充
CREATE TABLE user (
  id int(3) PRIMARY KEY auto_increment,
  name varchar(3) ,
  age int(3) unsigned zerofill
)

# 浮点类型 -------------------------------------------------------------
# FLOAT
# DOUBLE
# DECIMAL:以字符串形式存储的小数
# 经验:因为FLOAT和DOUBLE可能会失去精度,所以小数一般使用DECIMAL

# 字符串类型 -------------------------------------------------------------

# CHAR(32):定长字符串,比如:存储"abc"会开辟32个字符的空间存储数据
# VARCHAR(32):变长字符串,比如:存储"abc"会开辟3个字符的空间存储数据
# 32:MySQL5.0之前为字节单位,之后为字符单位

# BLOB:存储二进制数据
# LONGBLOB:存储极长的二进制数据
# 经验:存储二进制数据的技术叫做BLOB,就说明MySQL可以存储二进制文件(音频、视频、图片...)

# TEXT:存储纯文本数据
# LONGTEXT:存储极长的纯文本数据
# 经验:存储纯文本数据的技术叫做CLOB,就说明MySQL可以存储纯文本文件

# 字符串类型 -------------------------------------------------------------

# date : 2024-06-05
# time : 09:46:30
# datetime :2024-06-05 09:46:30
# timestamp:时间戳
# year : 2024

# UPDATE CURRENT_TIMESTAMP - 数据行修改数据后,自定更新时间戳
CREATE TABLE user (
  id int(3) PRIMARY KEY  AUTO_INCREMENT,
  name varchar(3) COLLATE utf8mb4_general_ci DEFAULT NULL,
  age int(3) unsigned zerofill DEFAULT NULL,
  xxx timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
)

约束

理解:对于数据的限制

# 约束
# 理解:对于数据的限制

# 主键约束 ----------------------------------------------------------------------------------
# 理解:唯一约束+非空约束,该列上的数据不能重复,且不能为null

# 添加主键约束 - 方式一
CREATE TABLE user(
	username VARCHAR(32) PRIMARY KEY,
	password VARCHAR(32),
	name VARCHAR(32),
	sex VARCHAR(32),
	age INT(3),
	phone VARCHAR(32)
)

# 添加主键约束 - 方式二
CREATE TABLE user(
	username VARCHAR(32),
	password VARCHAR(32),
	name VARCHAR(32),
	sex VARCHAR(32),
	age INT(3),
	PRIMARY KEY(username,password)
)

# 删除主键约束
ALTER TABLE user DROP PRIMARY KEY;

# 唯一约束 ----------------------------------------------------------------------------------
# 理解:该列上的数据不能重复,但可以为null

# 添加唯一约束
ALTER TABLE user ADD UNIQUE(phone);

# 删除唯一约束
ALTER TABLE user DROP INDEX phone;


# 非空约束 ----------------------------------------------------------------------------------
# 理解:该列上的数据不能为null,但可以重复

# 添加非空约束
ALTER TABLE user MODIFY name VARCHAR(32) NOT NULL;

# 删除非空约束
ALTER TABLE user MODIFY name VARCHAR(32) NULL;

# 添加默认值
ALTER TABLE user MODIFY password VARCHAR(32) DEFAULT("000000");


# 外键约束 ----------------------------------------------------------------------------------
# 理解:约束两个字段的参照完整性

# 添加外键约束
ALTER TABLE user ADD FOREIGN KEY(t_id) REFERENCES type(id);
# 删除外键约束(外键名使用show create table user查询)
ALTER TABLE USER DROP FOREIGN KEY user_ibfk_1;
# 经验:在项目中不使用外键约束,因为效率低

索引

主键索引、唯一索引、普通索引、全文索引、面试题

# 索引
# 理解:索引类似于一本书的目录,让查询更快

# 主键索引 ----------------------------------------------------------------------------------
# 理解:主键作为约束,让字段上的数据不能重复且不能为空;主键作为索引,字段作为查询条件会更快

# 添加主键索引 - 方式一
CREATE TABLE user(
	username VARCHAR(32) PRIMARY KEY,
	password VARCHAR(32),
	name VARCHAR(32),
	sex VARCHAR(32),
	age INT(3),
	phone VARCHAR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值