当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL基础总结

MySQL基础总结

2019年09月21日  | 移动技术网IT编程  | 我要评论

关于mysql

官方文档:https://dev.mysql.com/doc/refman/8.0/en/

mysql是oracle公司开发、发布和支持的最流行的开源sql数据库管理系统。

【主要特点】

  • 开源
  • 使用btree索引
  • 支持多线程,对多核cpu性能可以达到更好的发挥
  • 用c和c++编写

mysql 8.0特性

添加的特性

  • 数据字典

  • 原子数据定义语句(原子ddl)

  • 安全和账户管理

    • 可用一种新的caching_sha2_password认证插件,可以使用缓存解决连接时的延时问题【8.0默认身份验证插件】

    • 新增角色特性【据说oracle才有】

    • 资源管理【优化cpu资源分配】

      • mysql8.0有了的概念。也就是说可以创建并管理一个资源组。

        将工作线程分配给特定的组。以便dba限制,调配资源。目前只针对cpu。

  • innodb增强

    • 自增列【消除了以往重启实例自增列不连续的问题】

    • btree索引【索引损坏,恢复后依旧可以保持一致性】

    • 可禁用死锁检测

      一个新的动态变量,,可用于禁用死锁检测。在高并发性系统上,当多个线程等待同一锁时,死锁检测会导致减速。有时,禁用死锁检测并依赖于在发生死锁时设置事务回滚。

不推荐特性

  • float(m,d)double(m,d)语法指定类型列的位数。floatdouble(任何同义词)都是一个非标准的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

centos7.6 安装mysql8.0

环境准备

  • 卸载mariadb
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官网)

      1567919447819

    • 安装yum源

      rpm -uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    • 查看各版本启动状况

      yum repolist all | grep mysql

      默认开启最新版8.0

      1567919595117

    • [调整命令】禁用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版本

    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端口

  • 远程连接

    1567920997553

mysql常用命令

登录

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;

mysql常用数据类型

数值类型

整数类型 字节 最小值 最大值
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字节

mysql支持的运算符

算术运算符

算术运算符 说明
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算,返回商
% 求余运算,返回余数

比较运算符

比较运算符 说明
= 等于
< 小于
<= 小于等于
> 大于
>= 大于等于
<=> 安全的等于,不会返回 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 !

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网