【数据库基础知识三】数据库中的数据类型(数字、字符、日期)、主键约束和非空约束、DQL语言:数据查询语言

14天阅读挑战赛
努力是为了不平庸~

目录

数据库中的数据类型

数字类型

字符类型

日期类型

约束

主键约束

非空约束(NOT NULL)

DQL语言:数据查询语言

基本语法

WHERE子句


数据库中的数据类型

不同的数据库管理系统,数据类型不完全一致

数字类型

整数类型:INT(m)和BIGINT(m)

 m表示数字的长度(位数)

  INT(5): 该字段保存一个5位整数,此时该字段存的数字为18,实际存储:00018

浮点类型:DOUBLE(m,n)

        m表示整体数字的位数

        n表示小数的位数

        DOUBLE(5,3):该字段可以保存一个5位数,其中3位数是小数。最大可以保存到:99.999

        实际上插入数据时如果精度超过了可保存的范围时,会自动进行四舍五入;

xxx表有一个DOUBLE(5,3)的字段

INSERT INTO XXX VALUES(12.3556)

此时该字段实际保存的值为:12.356

字符类型

CHAR(n):定长字符串

n:长度,单位是字符。CHAR(10),该字段可以存放最多10个字符

最大长度:255个字符

表中每条记录该字段在磁盘上占据的空间是固定的,如果实际保存的字符不足指定的长度时,会在后面补充若干个空格来达到长度。

name CHAR(10)

INSERT INTO person(name) VALUES('张三');   实际该记录中name的值,张三后面还有8个空格

优点:由于长度固定,因此查询速度快

缺点:磁盘占用存在浪费情况

VARCHAR(n):变长字符串

n:长度,单位是字节。VARCHAR(10),该字段保存的字符转换的字节最多10个。

最大长度为:65535个字节

优点:实际字段值占用多少字节就在磁盘上开辟多少字节。

缺点:长度不固定,因此查询性能慢

TEXT(n):可变长字符

n:长度,单位是字符。最大值65535

日期类型

DATE  可以保存年月日

TIME    保存时分秒

DATETIME    保存年月日时分秒

TIMESTAMP    时间截,记录UTC时间,从1970-01-01 00:00:00到其表示的时间之间经过的毫秒

CREATE TABLE userinfo(

 id INT,

name VARCHAR(30),

birth DATETIME,

salary DOUBLE(7,2)

)

插入日期时。可以使用字符串格式,格式应当为:'yyyy-MM-dd hh:mm:ss'

MM表示两个数字的月,mm表示两位数字的分

INSERT INTO userinfo VALUES(1,'张三','1998-05-02 22:32:22',5000.56);

如果日期类型使用的是DATETIME,那么在不指定时分秒时,默认为00:00:00

INSERT INTO userinfo VALUES(2, '李四','1989-26-22',9000);

DATETIME不能忽略年月日

INSERT INTO userinfo VALUES(3, '李四','13:12:22',9000);  报错

插入DOUBLE类型数字时,超过精度部分则会四舍五入

INSERT INTO userinfo VALUES(3,'张三','1998-05-02 22:32:22',5000.5655);

整数部分超过会报错

INSERT INTO userinfo VALUES(3,'张三','1998-05-02 22:32:22',50000000);   --报错

约束

约束就是为了表中某个字段添加一些限制条件,只有符合条件时才可以对表中记录进行操作

主键约束,外键约束,唯一性约束,非空约束

主键约束

什么是主键约束(PRIMARY KEY)

该字段的值仅表达该表中唯一的一条记录

一张表只能有一个字段添加主键约束,该约束要求该字段:非空且唯一

非空约束(NOT NULL)

添加了非空约束的字段:每条记录该字段的值都不能为NULL

CREATE TABLE student(

id INT PRIMARY KEY,

name VARCHAR(30)NOT NULL,

age INT(3));

使用DESC查看student表结构时可以体现出主键以及非空约束

DESC student;

不能将NULL值插入到主键或者具有非空约束的字段上

当不指定id时,数据库会将NULL默认插入到ID字段,这违背主键约束:

INSERT INTO student(name,age)VALUES('张三',22);

不能将NULL值显示的插入到具有非空约束的name字段上;

INSERT INTO student VALUES(1,NULL,22);

不能将重复的值插入到主键字段中

INSERT INTO student(name,age)VALUES(1,'张三',22);

不能再将1作为主键的值插入另一条记录。主键字段的值不可重复

INSERT INTO student(name,age)VALUES(1,'李四',22);

主键的值可以由数据库自行维护

ALTER TABLE student CHANGE id id INT AUTO_INCREMENT;

ALTER TABLE student(name,age)VALUES('李四',22);

当主键字段具有自增效果时,我们可以忽略主键值的插入

ALTER TABLE student(name,age)VALUES('李四',22);

当主键字段具有自增效果时,我们可以显示的向ID字段插入NULL值.此时主键仍然自增(不推荐操作)

此时并不会将NULL值作为主键字段的值,而是使用自增的主键值

ALTER TABLE student(name,age)VALUES(NULL,'李四',22);

DQL语言:数据查询语言

DQL用于检索表中数据的语言。

基本语法

SELECT     子句

FROM   子句

JOIN...ON...   子句

WHERE   子句

GROUP BY   子句

HAVING   子句

ORDER BY   子句

一条DQL语句必须包含的两个子句分别为:SELECT子句和FROM子句

  • SELECT 子句用于选定表中的字段,选定的字段会被包含在查询的结果集中
  • FROM 子句用于指定查询的表

查看student表中所有记录,每条记录所有字段都要展示在结果中。

SELECT * FROM student;

*在SELECT子句中表达的意思是查看表中所有字段

SELECT子句中可以仅指定个别字段进行查询

查看每个学生的名字,年龄

SELECT name,age FROM student;

WHERE子句

WHERE子句可以添加过滤条件,那么此时仅查询出满足该子句过滤条件的记录

比较运算符:=,>,>=,<,<=,<>

查看所有大队长

SELECT name,job FROM student WHERE job=‘大队长’;

查看处理李四以外的其他老师的名字和年龄;

SELECT name,age FROM teacher WHERE name<>'李四‘;

在WHERE子句中可以使用OR,AND来连接多个过滤条件

  • AND:与。都为真时才为真
  • OR:或。都为假时才为假

查看学生中7岁的大队长都有谁?

SELECT name ,age ,job FROM student WHERE age =7 AND job=‘大队长’;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

居然天上楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值