记录mysql

1、新建数据库字符集和排序规则怎么选

字符集我选择utf8mb4,因为之前选择utf8出过问题

为什么要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等(utf8的缺点)。

随着互联网的发展,产生了许多新类型的字符,例如emoji这种类型的符号,也就是我们通常在聊天时发的小黄脸表情,这种字符的出现不在基本多平面的Unicode字符之中,导致无法在MySQL中使用utf8存储,MySQL于是对utf8字符进行了扩展,增加了utf8mb4这个编码。

排序规则我选择utf8mb4_general_ci

utf8mb4_bin:将字符串每个字符用二进制数据编译存储,区分大小写,而且可以存二进制的内容。

bin 是二进制, a 和 A 会别区别对待。例如你运行: select * from table where a = ‘a’;那么在utf8_bin中你就找不到 a = ‘A’ 的那一行, 而 utf8_general_ci 则可以.

utf8mb4_general_ci:ci即case insensitive,不区分大小写。没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。

2、建库/删库、插入字段语法

create database 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create database 数据库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 
create database IF NOT EXISTS `数据库名` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

USE 数据库名 ;
desc dev_heroes.org_role;  ## 查看表结构设计

Ctrl+D 退出mysql 
exit   退出mysql 

DROP DATABASE dev_heroes;      删除一个库
DROP TABLE dev_heroes.users;  删除一个表

alter table user_info add column score decimal(18,2) NOT NULL default 0.10 COMMENT '分数' AFTER age;

ALTER TABLE staff_info ADD COLUMN icon_path VARCHAR(255) DEFAULT NULL COMMENT '头像';
ALTER TABLE staff_info ADD COLUMN submit_time datetime DEFAULT NULL COMMENT '提交时间';

alter table staff_info add column state tinyint(1) NOT NULL COMMENT '状态 0-有效,1-无效';   --不写默认为0
alter table staff_info add column state tinyint(1) NOT NULL default 1 COMMENT '状态 0-有效,1-无效';
alter table staff_info add column state tinyint(1) default 0 COMMENT '状态 0-有效,1-无效';  -- 非必填用这个
show columns from table; ## 查看表结构
alter table `表名` drop column `字段名`; ## 删除某个字段名
alter table `表名` add `字段名` datetime DEFAULT NULL COMMENT '描述';

ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型(修改后的长度)

3、普通索引

# 修改表的方式创建
ALTER TABLE 表名 ADD INDEX 索引名 (列名);

# 直接创建 
CREATE INDEX 索引名 ON 表名 (列名)

CREATE TABLE 表名 (
    列名 数据类型,
    ...
    INDEX 索引名 (列名)
);

DROP INDEX 索引名 ON 表名  -- 删除索引
SHOW INDEX FROM 表名      -- 查看索引

索引相关的sql优化

1、避免在where子句中使用 or 来连接条件,使用 union all,使用or可能会使索引失效,从而全表扫描;
2、where中使用默认值代替null, where xx is null 改为 where xx =0 (xx的默认值是0);
3、避免在where子句中使用!=或<>,not in ,很可能会让索引失效;
4、合理使用 exists  和in
5、like很可能让你的索引失效
      where name like '%张3%' (不使用索引) 
      where name like '张3%' (使用索引) 

4、window安装mysql-8.0.30-winx64.zip教程

Windows10 通过 .zip 包安装 MySQL_Higgins995的博客-CSDN博客

Navicate连接不上mysql处理办法

Navicate连接mysql数据库失败_少少不会编程的博客-CSDN博客

1、下载安装包,要创建配置文件my.ini,放在解压的路径下(假定解压到c盘);
    [mysql]
	default-character-set=utf8
	[mysqld]
	# 设置3306端口
	port = 3306
	# 设置mysql的安装目录
	basedir = C:\\mysql-8.0.30-winx64\\
	# 设置mysql数据库的数据的存放目录, 如果目录不存在系统会自己创建(如果存在请将文件夹内的内容清空)
	datadir = C:\\mysql-8.0.30-winx64\\data
	# 允许最大连接数
	max_connections=200
	# 服务端使用的字符集默认为8比特编码的latin1字符集
	character-set-server=utf8
	# 创建新表时将使用的默认存储引擎
	default-storage-engine=INNODB
	# 创建模式
	sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

2、切记要用管理员身份运行并执行命令 
    cd C://mysql-8.0.30-winx64
    mysqld --initialize --console   // 执行成功记录下初始密码,很重要
    mysql --install
    net start mysql

    mysql -u root -p 
    输入或复制粘贴刚刚记录的初始密码  
    
    // 这里要是用5.x的命令,使用navicate连接时就会报错
    Client does not support authentication protocol requested by server; consider upgrading     MySQL client

    ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '你的新密码'; 
    flush privileges;

mysql8之前 加密规则为 mysql_native_password,mysql8之后的版本加密规则为 caching_sha2_password

## 8.x 的修改是这样的..
ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '你的新密码';

## 5.7 的修改是这样的..
ALTER USER USER() IDENTIFIED BY '你的新密码';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值