官方文档:https://dev.mysql.com/doc/refman/8.0/en/
mysql是oracle公司开发、发布和支持的最流行的开源sql数据库管理系统。
【主要特点】
数据字典
原子数据定义语句(原子ddl)
安全和账户管理
可用一种新的caching_sha2_password认证插件,可以使用缓存解决连接时的延时问题【8.0默认身份验证插件】
新增角色特性【据说oracle才有】
资源管理【优化cpu资源分配】
mysql8.0有了的概念。也就是说可以创建并管理一个资源组。
将工作线程分配给特定的组。以便dba限制,调配资源。目前只针对cpu。
innodb增强
自增列【消除了以往重启实例自增列不连续的问题】
btree索引【索引损坏,恢复后依旧可以保持一致性】
可禁用死锁检测
一个新的动态变量,,可用于禁用死锁检测。在高并发性系统上,当多个线程等待同一锁时,死锁检测会导致减速。有时,禁用死锁检测并依赖于在发生死锁时设置事务回滚。
float(m,d)
和double(m,d)
语法指定类型列的位数。float
和double
(任何同义词)都是一个非标准的mysql扩展。不建议使用此语法。zerofill
属性对数值数据类型不推荐,对于整数数据类型也不推荐使用显示宽度属性。考虑使用另一种方法来产生这些属性的效果。例如,应用程序可以使用lpad()
函数设置为零垫数字,直到所需宽度,或者它们可以将格式化的数字存储在char
柱子。innodb_locks_unsafe_for_binlog
系统变量被删除。这个read committed
隔离级别提供了类似的功能。
表1.1重命名的innodb信息架构视图
旧名 | 新名称 |
---|---|
innodb_sys_columns |
innodb_columns |
innodb_sys_datafiles |
innodb_datafiles |
innodb_sys_fields |
innodb_fields |
innodb_sys_foreign |
innodb_foreign |
innodb_sys_foreign_cols |
innodb_foreign_cols |
innodb_sys_indexes |
innodb_indexes |
innodb_sys_tables |
innodb_tables |
innodb_sys_tablespaces |
innodb_tablespaces |
innodb_sys_tablestats |
innodb_tablestats |
innodb_sys_virtual |
innodb_virtual |
rpm -qa | grep mariadb rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
centos7 内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb。
【如果之前安装了mysql需要先卸载】
yum remove mysql*
删除安装目录
whereis mysql rm -rf /usr/share/mysql
安装mysql
获取yum源(mysql官网)
安装yum源
rpm -uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
查看各版本启动状况
yum repolist all | grep mysql
默认开启最新版8.0
[调整命令】禁用8.0,开启5.7
yum-config-manager --disable mysql80-community yum-config-manager --enable mysql57-community
命令在yum-utils 包里,安装既可以解决无法找到yum-config-manager命令:
yum -y install yum-utils
安装mysqll
yum -y install mysql-community-server
查看mysql版本
mysql -v
启动mysql&&设置开机自启
systemctl start mysqld systemctl enable mysqld
查看默认生成密码
grep 'temporary password' /var/log/mysqld.log
登录修改密码
mysql -uroot -p
修改密码
alter user 'root'@'localhost' identified by 'nopassword564925080!'; mysql5.7之后默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示error 1819 (hy000): your password does not satisfy the current policy requirements错误.
授权远程登录用户
默认的密码加密方式是:caching_sha2_password,而现在很多客户端工具还不支持这种加密认证方式,连接测试的时候就会报错:client does not support authentication protocol requested by server; consider upgrading mysql client
create user 'noneplus'@'%' identified by 'noneplus564925080!'; grant all on *.* to 'noneplus'@'%'; //修改认证方式为mysql_native_password alter user 'noneplus'@'%' identified with mysql_native_password by 'noneplus564925080!'; flush privileges;
开放服务器3306端口
远程连接
mysql -u root -p
show databases; create database database_name; use database_name; drop database_name;
【数据库和数据库表相关命令都属于ddl数据定义语言】
show tables; [先切换到指定数据库] //创建表 create table `user_info` ( `id` int(10) not null auto_increment comment '用户id', `username` varchar(10) default null comment '用户姓名', `password` varchar(20) default null comment '用户密码', `age` int(5) default null comment '年龄', `email` varchar(20) default null comment '邮箱', primary key (`id`) ) engine=innodb auto_increment=100 default charset=utf8 comment='用户信息表' //查看表定义 show create table user_info \g; drop table user_info; //删除表字段 alter table user_info column age; //修改表 alter table user_info modify username varchar(15); //增加表的字段 alter table user_info add column gender int(1); //字段改名 alter table user_info change age age1 int(3); //modify,add,change都可以进行排序 alter table user_info modify username varchar(15) first; //放在最前面 alter table user_info add column gender int(1) after age;//字段至于age之后 //修改表名 alter table user_info rename person_info;
【增删改查属于dml数据操作语言】
insert into user_info(username,password,age,email) values('hq','123456789',22,'glaring@sina.com')
update user_info set username='hq',age=23,email='56492508@qq.comm' where id=5
delete from user_info where id=6
select * from user_info where id = 6
select * from user_info where id = 6 and age<30
排序【默认升序】
select * from user_info order by id desc limit 10 //查询最后十条数据
select * from user_info order by id desc limit 10,20 //查询最后20条数据的前10条
统计数据总条数
select count(1) from user_info;
统计最大值,最小值,求和
select max(age),min(age) ,sum(age) from user_info;
表连接查询
select ename,deptname from emp,dept where emp.deptno=dept.deptno;
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
tinyint | 1 | 有符号-128 无符号0 | 有符号127 无符号255 |
smallint | 2 | 有符号-32768 无符号0 | 有符号32767 无符号65535 |
mediumint | 3 | 有符号-800w 无符号0 | 有符号800w 无符号167w |
int,integer | 4 | 有符号-21亿 无符号0 | 有符号21亿 无符号42亿 |
bigint | 8 | 有符号-92w兆 无符号0 | 有符号92w兆 无符号184w兆 |
int(5)指定显式宽度【不显式指定默认int(11)】,当数值宽度小于五位的时候,默认填满。zerofill指用0填充。
unsigned表示是否带符号
浮点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
float | 4 | ||
double | 8 |
定点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
decimal(m,d) | m+2 | 有符号-128 无符号0 | 有符号127 无符号255 |
表示一共显示m位数字,包括整数位和小数位,其中d位代表小数点有几位
decimal不指定精度默认整数位为10,小数位为0.
类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
date | 4 | 1000-01-01 | 9999-12-31 |
datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
timestamp | 4 | 1970010108001 | 2038年的某个时刻 |
记录系统当前时间可用timestamp,支持不同地方的时区差异
timestamp 存储的时间范围 1970-01-01 00:00:01 ~ 2038-01-19-03:14:07
类型 | 描述 |
---|---|
char | 0-255字节 |
varchar | 0-65535字节 |
tinyblob | 0-255字节 |
blob | 0-65535字节 |
mediumblob | 0-16772150字节 |
longblob | 0-4294967295字节 |
tinytext | 0-255字节 |
text | 0-65535字节 |
mediumtext | 0-16772150字节 |
longtext | 0-4294967295字节 |
varbinary(m) | 0-m字节 |
binary(m) | 0-m字节 |
算术运算符 | 说明 |
---|---|
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算,返回商 |
% | 求余运算,返回余数 |
比较运算符 | 说明 |
---|---|
= | 等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
<=> | 安全的等于,不会返回 unknown |
<> 或!= | 不等于 |
is null 或 isnull | 判断一个值是否为 null |
is not null | 判断一个值是否不为 null |
least | 当有两个或多个参数时,返回最小值 |
greatest | 当有两个或多个参数时,返回最大值 |
between and | 判断一个值是否落在两个值之间 |
in | 判断一个值是in列表中的任意一个值 |
not in | 判断一个值不是in列表中的任意一个值 |
like | 通配符匹配 |
regexp | 正则表达式匹配 |
逻辑运算符 | 说明 |
---|---|
not 或者 ! | 逻辑非 |
and 或者 && | 逻辑与 |
or 或者 || | 逻辑或 |
xor | 逻辑异或【相同为0,不同为1】 |
位运算符 | 说明 |
---|---|
| | 按位或 |
& | 按位与 |
^ | 按位异或 |
<< | 按位左移 |
>> | 按位右移 |
~ | 按位取反,反转所有比特 |
优先级由低到高排列 | 运算符 |
---|---|
1 | =(赋值运算)、:= |
2 | ii、or |
3 | xor |
4 | &&、and |
5 | not |
6 | between、case、when、then、else |
7 | =(比较运算)、<=>、>=、>、<=、<、<>、!=、 is、like、regexp、in |
8 | | |
9 | & |
10 | <<、>> |
11 | -(减号)、+ |
12 | *、/、% |
13 | ^ |
14 | -(负号)、〜(位反转) |
15 | ! |
如对本文有疑问, 点击进行留言回复!!
mysql·update语句报错:Data truncation: Truncated incorrect DOUBLE value: ‘系统开小差啦~请稍后再试‘
MySQL Fix Product Name Format(trim去空格+upper/lower大小写)
mysql pxc LIMITATIONS 8.0.19-10
网友评论