数据库学习-数据库中的表

1 列的定义

1.1列名

列名一般使用小写英文单词,若有多个单词,用_连接单词;不能使用数据库中的关键词

1.2列的类型

1.2.1 整数类型
整数类型字节无符号数取值范围有符号数取值范围
TINYINT10~255-128~127
SMALLINT20~65535-32768~32767
MEDIUMINT30~16777215-8388608~8388607
INT40~4294967295-2147483648~2147483647
INTEGER40~4294967295-2147483648~2147483647
BIGINT80~18446744073709551615-9,223,372,036,854,775,808~9,223,372,036,854,775,807
1.2.2 浮点类型
类型字节非負数取值范围負數取值范围
FLOAT40和1.175494351E-38~3.402823466E+38-3.402823466E+38~-1.175494351E-38
DOUBLE80和2.2250738585072014E-308~1.7976931348623157E+308-1.7976931348623157E+308~-2.2250738585072014E-308
DECIMAL(M,D)/DEC(M,D)M+20和2.2250738585072014E-308~1.7976931348623157E+308-1.7976931348623157E+308~-2.2250738585072014E-308

其中float与double类型为浮点数类型,decimal为定点数类型;

decimal括号中的M表示总长度(精度),D表示小数点后的长度(标度);其中M范围为1~65(不填写默认为10),D范围为0-30(不填写默认是0)

float与double也可以在后面加上(M,D),不指定时默认按照实际精度显示

1.2.3 日期与时间类型
类型字节取值范围零值
YEAR11901~21550000
DATE41000-01~9999-12-310000-00-00
TIME3-838:59:59~838:59:59000:00:00
DATETIME81000-01 00:00:00~9999-12-21 23:59:590000-00-00 00:00:00
TIMESTAMP419700101080001~203801191140700000000000000

常用的时间函数:

CURDATE()    --获取当前date,可直接插入到DATE类型中
NOW()   //获取当前datetime,可直接插入到DATETIME和TIMESTAMP类型中
TIME()  //获取参数给定时间串中的时分秒,可直接插入TIME类型中
YEAR()  //获取参数给定时间串中的年份,可直接插入YEAR类型中

MONTH()、DAY()、HOUR()、MINUTE()、SECOND()
为获取参数中月、日、时、分、秒

1.2.4 字符串类型

CHAR类型为固定长度,长度可以为0~255之间的任意值,
例:char(100),指定长度为100,不足部分以空格靠右填充

VARCHAR类型长度可变,长度可以为0~65535之间的任意值,例:varchar(100),存储值时,值的最大范围是多少就分配多少

使用建议:
① char使用指定空间,varchar根据数据定空间
② char的查询速度大于varchar的查询速度,varchar还需通过记录数计算空间
③ 确定数据占多大空间使用char类型
④ 不确定数据有多少使用varchar类型
⑤ 数据超过255,但也不是特别大可以使用varchar类型
⑥ 字符串尾部需要留空格,必须选择varchar类型

1.2.5 text类型
类型长度
TINYTEXT0~255字节
TEXT0~65535字节
MEDIUMTEXT0~16772150字节
LONGTEXT0~4294967295字节

TEXT中类型无法指定长度

1.2.6 ENUM和SET类型

ENUM为枚举类型,定义为此类型,在给栏位设值时只能从所给枚举内容中选择其中一个
例:ENUM(‘值1’,‘值2’,‘值3’…)

SET和ENUM类似,定义此类型,在给栏位设值时只能从所给枚举内容中选择其中一个
例:SET(‘值1’,‘值2’,‘值3’…)

2 列的完整性约束

2.1 主键约束

PRIMARY KEY 能唯一标识表中的信息,表中某个栏位中的值为特殊值,不会重复出现且能通过该栏位标识该表,一般定义为主键,主键可以定义一个或多个

用法:
①单个主键:

propName propType PRIMARY KEY

②多个主键:

propName1 propType, propName2 propType, ... 
CONSTRAINT pk_name PRIMARY KEY(propName1,propName2)

2.2 外键约束

一般在一张表中某个字段需要与另一张表中的数据有所关联时,可以在表中加一个字段表示另一张表中内容,通常把这个字段设为外键

例:有一张学生表与一张班级表,学生表中需要记录每个学生学生所在的班级

班级表:

id名称班主任
101萌新一班马老师
102萌新二班张老师
103萌新三班汪老师

学生表:

id姓名班级id
1张三102
2李四101
3王五101
4赵龙102
--创建班级表
create table class(id int primary key, name char(4), teacher char(3));

--创建学生表
create table student(id int primary key, name char(4), class_id int, constraint fk_stu_class foreign key(class_id) references class(id));

创建外键之栏位一般为另一张表中的主键,
格式一般为:

constraint fk_name foreign key(class_id) 
references tableName(propName)

其中 constraint fk_name 可以省略不写

2.3 非空约束

非空约束一般为根据需求,在创建栏位时在字段名和类型后可加上 NOT NULL 表示该字段不可为空

2.4 唯一约束

唯一约束一般为根据需求,在创建栏位时在字段名和类型后可加上 UNIQUE 表示该字段内容唯一,该字段在表中不可有重复数据

2.5 自动增加

auto_increment:给某列设置自动增加,每次插入数据时不给这一列指定数据则会在前一条记录(或已存在的最大值)上自动加1

只有当列定义为主键/外键/唯一约束时,才能给其设置 auto_increment

2.6 默认值

创建表时,可以给列设置默认值,在列名后或在列名类型后加上 DEFAULT defaultValue

3 插入数据

格式:

-- 给所有列插入数据
insert into tableName values(propValue1,propValue2, ..., propValuen);

-- 给部分栏位插入数据
insert into tableName(propName1,propName3,propName5)
values(propValue1,propValue3,propValue5);

4 更新数据

格式:

update tableName set propName1 = newValue1,propName2 = newValue2
where CONDITION;

其中propName为表中的某个字段名,newValue表示需要更新的值

5 删除数据

格式:

delete from tableName where CONDITION;

其中如果没有condition条件,则会将表中的数据都删除,有condition则会根据condition删除指定数据

7 查询数据

格式:

--查询tableName表中的所有数据
select * from tableName;

--查询部分列
select propName1,propName2 from tableName;

--查询满足condition的数据
select * from tableName where CONDITION;

以上查询为最简单查询,更多查询可点击下方链接,包括简单查询与联合查询

https://blog.youkuaiyun.com/jjswift/article/details/119721780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值