Java复习之路(第十八天 数据库)

本文详细介绍了数据库基础知识,包括MySQL数据类型、字符串和日期类型、模糊查询、分组查询、排序查询、分页查询和外键与表关系。强调了主键约束、唯一约束和非空约束的重要性,并探讨了where和having子句的区别。还讨论了如何添加和删除外键约束,以及数据库的备份与恢复操作。最后,提到了数据库中表的关系和乱码问题的解决方案。
摘要由CSDN通过智能技术生成

数据库

提示:

数据库中的注释的符号:/* */  #  -- 

MySQL数据类型

(tinyint byte)    (smallint  short)    (int   int)      (double   double)

字符串类型

Mysql中提供两种字符串,char      varchar

char(n)  定长字符串  范围:n:小于255字符

varchar(n)  不定长的字符串 n:指定为65535个字节,其中n仍然指定字符串

char(10)  如果是存放113,占用三个字符,其他的字符用空格进行填满  varchar(10),加入放入123三个字符,只会占用三个字符,不会用空格进行填充,不会造成资源的浪费

面试题:char和varchar有什么区别

varchar()适合放长度不固定的的数据,虽然效率会比char类型的略低一些,但是不会有空间上的浪费

char()适合存储长度固定的数据,这样就不会有空间上的浪费,效率上还会比varchar()方法高一些

日期的类型:

date :日期格式 年月日

time:时间格式,时分秒

datetime:时间加日期:格式年月日时分秒

timestamp:时间戳,格式是年月日 时分秒

datetime和timestamp两种方法的异同:

不同点:datetime:表示的是年月日加时分秒,存储的和显示的内容是相同的,范围是1000-9999(年份)

timestamp:代表的是从1970年一月一日到指定的日期的毫秒值  范围:1979-2038(年份),可以自动的更新时间为当前的时间 

查看建表的语句:show create table Student;  默认的是创库

进行查看表结构的语句:desc Student;

字符串和日期都是单引号

数据库中的增删改查的语句

插入数据的乱码的问题:

解决的方案,确认在建库的语句是不是指定了UTF-8,

create database mydb1 charset utf-8,如果建库时候没有指定编码,默认的编码是latin1,而latin1中没有中文,所以在存储数据时候,必然会出现乱码的问题,因此要将库进行删除,然后指定编码,然后进行重新创建数据库

或者直接将数据库的编码utf-8   alter datebase 库名 charset utf-8

set names GBK 只对当前的窗口有效,下一次需要进一步进一步配置

 mysql数据库的字段约束

思考1如果id是编号,编号应该是唯一的且不能为空,如何保证这一点?

1、主键约束:如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。

添加主键约束:

create table Student(id int primary key, ...);

2、唯一约束:如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。

添加唯一约束:

create table user(username varchar(50) unique, ...);

3、非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。

添加非空约束:

create table user(password varchar(50) not null,  ...);

思考2在插入数据时,如何保证插入的id不会因为重复而报错?

可以采用主键自增长策略,如果id主键是数值,可以设置主键自增,即在插入数据时,给id赋值一个null,数据库如果检测到id设置了自增策略,会自动获取一个id值插入到表中,而且每次插入完之后,都会自增1

思考3如果id主键设置了自增后,在插入数据时,是否可以设置id的值?

可以,如果给自动增长的主键id设置了一个值,只要值不冲突,是可以设置的。并且设置完后,数据表中保存的自增变量的值,会在设置值的基础上+1

知识点的运用:

一、建库、建表,插入记录、修改记录、删除记录
----------------------------------
01、删除mydb2库(如果存在)
	drop database if exists mydb2;
02、再次创建mydb2库,指定编码为utf8,并选择mydb2库
	create database mydb2 charset utf8;
	use mydb2;
	
03、在mydb2库中,创建员工(emp)表,并添加如下列:
	编号(整型、主键、自增)
	姓名、性别ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值