数据库篇——数据库的一些额外知识

创建数据库语法

CREATE DATABASE 数据库名称;

 

当项目规模较大时,应该根据数据之间的关系,尽可能的拆分多个数据库,放在不同的服务器上,分担访问的压力。(医院,淘宝)

(集群(多服务器相同事)和分布式(多服务器做不同事))


 

使用数据库

ues 数据库名称

创建数据表

CREATE TABLE 数据表名称(字段) Charset  字符编码;

主流设计将数据库表的编码设计为  ——utf8mb4     :mb4  most bytes  4  能表示得到字符更多(不常用字符和表情)。  ——utf8默认是utf8mb3

涉及字段时

        字段名 字段类型  字段约束  comment  注释

CREATE TABLE user
( id bigint auto——increment comment '数据id',
username varchar(10) unique not null comment '用户名',
 primary key(id))CHARSET utf8mb4 comment '用户',

day_of_birth生日
gender 性别
  • bigint  更大的取值范围  -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 
  • varchar  65532个  表现一定语义。一般比实际规定运行输入的大一点。
  • unique  唯一  不建议在数据库做约束   多在java中加约束。     一开始扼杀在要摇篮里。
  • default null  默认为空。。。  一般都得为空。(区别  not null)
  •  primary key(id)     可写在前后
  • 一行数据不允许超过65532个,
  • unsigned无符号位。
  • char定长   varchar不定长
关于以上设计:

自动编号的id应该是bigint unsigned类型的,以确保id够用
MySQL中的整形类型:tinyint、smallint、int、bigint
关于varchar的使用,必须设置长度,建议设置为比合理的最大值更大一些的值,
例如规则为“用户名最多16字符”,则varchar中设置的字符长度最少20
永远不要使用not null约束,任何你认为必须的字段,以后都可能不是必须的
相对固定长度的字符串类型应该使用char,而不是使用varchar
并不要求每个数据的长度完全一致
char的读取效率略高于varchar,占用的空间可能比varchar少1~2个字节


varchar 会开辟1到2两个字节空间去记录存的字符数。读取的时候会先去了解这个空间记录的数字。再根据数字去读取内容。



附:关于密码加密

在基于Maven的项目中添加以下依赖:

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>

测试

public class DigestTests {

    @Test
    public void digest() {
        String rawPassword = "123456" + "fdh98geljgdfskj";
        String encodedPassword = DigestUtils.md5Hex(rawPassword);
        System.out.println("原密码:" + rawPassword);
        System.out.println("加密后的密码:" + encodedPassword);
    }
}

加密工具类

DigestUtils

消息摘要

md2 md5 sha sha1 sha256 sha384 sha512 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值