MySQL可以说是开发小型系统、网站等必不可少的数据库软件,性能非常强,功能也是超强大,新版的MYSQL 8.0相比之前的版本拥有更快的性能,还有非常多的优化和改进,让你的数据安全又高效
MySQL数据库亮点
使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。
为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
支持多线程,充分利用CPU资源,支持多用户。
优化的SQL查询算法,有效地提高查询速度。
既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
提供用于管理、检查、优化数据库操作的管理工具。
可以处理拥有上千万条记录的大型数据库。
MySQL8.0新版软件特色
1.性能:MySQL8.0的速度是MySQL5.7的两倍。MySQL8.0在以下几个方面带来了更好的性能:阅读/写作tspot热点竞争问题)等方面带来了更好的性能。
2.NoSQL:MySQL从5.7版本开始提供NoSQL存储功能,这部分功能在8.0版本中得到了更大的改进。该功能消除了对独立NoSQL文档数据库的需求,MySQL文档存储也为JSON文档提供了多文档事务支持和完整的ACID合规。
3.窗口函数(Windowfunctions):从MySQL8.0开始,增加了一个叫做窗口函数的概念,可以用来实现几种新的查询方法。窗口函数类似于SUM()和COUNT(),但它不会将多行查询结果合并为一行,而是将结果放回多行。也就是说,窗口函数不需要GROUPBY。
4.隐藏索引:在MySQL8.0中,索引可以隐藏和显示。当索引被隐藏时,它不会被查询优化器使用。我们可以使用这个特性进行性能调试,例如,我们首先隐藏一个索引,然后观察它对数据库的影响。如果数据库性能下降,索引有用,然后恢复显示;如果数据库性能没有变化,索引是多余的,请考虑删除。
5.降序索引:MySQL8.0支持索引按降序排序,该索引中的值也按降序排序。
6.通用表达式(Commontableexpresionscte):在复杂查询中使用嵌入式表时,使用CTE使查询句更加清晰。
7.UTF-8编码:从MySQL8开始,使用UTF8mb4作为MySQL的默认字符集。
8.JSON:MySQL8大大提高了对JSON的支持,增加了基于路径查询参数从JSON字段中提取数据的JSON_EXTRACT()函数,以及JSON_ARAYAGG()和JSON_OBJECTAGG()聚合函数。
9.可靠性:InnnoDB现在支持表DDL的原子性,即InnoDB表上的DDL也可以实现事务的完整性,要么回滚失败,要么提交成功,以免DDL出现部分成功问题。此外,它还支持单个事务数据字典中存储元数据。
10.高可用性(HighAvailability):InnoDB集群为您的数据库提供集成的本地HA解决方案。
11.安全:OpenSSL的改进,新的默认身份验证,SQL角色,密码强度,授权。
更新日志:
MYSQL数据库改进了触发器的动态控制:支持在同一个表中对一个事件类型应用多个触发器;
实时的执行分析;
改进了JSON Explain Data:可以在优化器中添加总查询成本、单表查询成本、总数据量等参数来获得更详细的信息。
mysql数据库基础知识
Mysql使用时的注意事项
每日一条数据库操作语句都应该以分号 ;结尾,因为mysql支持换行操作
mysql数据库对大小写不敏感,大小写皆可,通常关键字使用大写表示
mysql数据库中哭的名称应该以英文字符或者一些符号起始,但是不允许以数字起始
mysql数据库中哭的名称、表的名称、字段的名称都不能使用mysql关键字,比如create、database;如果非要使用,那就用反引号括起来
库的操作
查看mysql中的所有库:show databases;
创建库:create database 库名称;----》create database if not exists 库名称;如果不存在该库,则创建
删除库:drop database 库名称;
选择使用数据库:use 库名称;
显示当前使用的数据库:select database();
数据类型
数值类型
MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET
注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。
表的操作
显示库中所有的表:show tables;
创建表:create table if not exists tb_stu(id int,name varchar(3),age int, birthdatetime);
查看表结构:desc tb_stu;
删除表:drop table tb_stu;
表中数据的增删改查基础
插入数据:insert
指定列插入:可以指定单独个一个或几个列信息进程插入,并且前缀列信息
insert [into] tb_stu(id,name) values (1,“韩云溪”);
全列插入:可以省略前缀的列信息,按照列顺序插入所有列的数据
insert [into] tb_stu values (1,“韩云溪”,21,“2000-03-19 12:00:00”);
多行插入:
insert [into] tb_name values(val1,val2…),(val1,val2…),…;
insert [into] tb_stu values (3,“三三”,17,now()),(4,“四四”,18,now());
查询数据:select
查询指定表中所有数据:select * from tb_name;
指定列查询:select name,birth from tb_stu;
排序查询:select * from tb_stu order by age [asc]/desc;按照年龄排序查询
默认为asc升序查询,desc为降序查询
多列排序:在第一列相同的情况下针对第二列进行排序:select * from tb_stu order by age ,id desc;
分页查询:通常搭配排序一起使用
select * from tb_stu limit m offset n;-----分页查询,每页显示m条数据,偏移到第n条开始显示m条数据(即从第n条起,显示一页)
查询字段为表达式:
select name,id+age from tb_stu;----按照name和id+age的值分列查询
查询时,字段别名的使用:
select name,id+age [as] total from tb_stu; -----给id+age起了个别名叫total,as可以省略
去重:
select distinct age from tb_stu ;-----根据age查询,并对age去重
条件查询
按照一定的限制条件进行查询,限制条件通过where子句给出
例如:按照id>1的限制条件进行查询:select * from tb_stu where id>1;
where子句涉及的运算符:
另外还有:> = <(大于、等于、小于)可以和NULL进行比较
is NULL/is not NULL 可以用来判断是否为空
IN的使用:判断查询的数据是否是给予的多个选项之一
例如:select * from tb_stu where name in(“韩云溪”,“夏紫藤”);-----查询名字为韩云溪或夏紫藤的项,符合则显示,不符合则忽略
between A and B 的使用:查询范围介于AB两者之间项
select * from tb_name where id between 1 and 3; -----查询id介于1和3之间的项
LIKE 模糊匹配的使用:查询一个数据看起来像某个条件
select * from tb_stu where name like ‘韩%’;-----查询表中姓名以韩开头的项,%为通配符
逻辑运算符的使用:与and、 或or、 非not
select * from tb_stu where age>17 and age<22;-----查询表中年龄大于17并且小于22的项
修改数据:update
update tb_name set fields1=val1,fields2=val2 where condition;----尤其注意不要忘了where限制条件,否则整张表的该列数据都会更改
删除数据:delete
delete from tb_name where condition;----尤其注意不要忘了where限制条件,否则整张表的数据都会被删除
————————————————
版权声明:本文为CSDN博主「头晕神教的神秘人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43962381/article/details/118223561
上一篇:迅蟒自媒体营销助手