注释
单行注释:#注释文字(MySQL特有的方式)
单行注释:– 注释文字(–后面必须包含一个空格。)
多行注释:/* 注释文字 */
下载可视化工具/点击连接/MySQL
点击连接测试
错误原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 把mysql用户登录密码加密规则还原成mysql_native_password.
方法如下:(打开cmd)
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
#修改加密规则
ALTE RUSER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
#更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
单独重置密码命令:alter user ‘root’@’localhost’ identified by ‘111111’;
再次连接即可
进入后右键新建数据库:格式如下
点击数据库/右键表;制作一个简单的表格/ctrl+s保存
基本查询语句
插入表格:INSERT into info VALUES(1,’张三’,’男’,20,15357987893,’合肥’,1)
查询语句:
查询所有的列:SELECT * FROM info
查询指定的列:SELECT id,name FROM info
更改数据名称: select name as myname,sex mysex from info
去除重复的信息:SELECT DISTINCT NAME FROM info
查询所有id为2的列:select * from info where id=2
select 1+1;–2
select 1.2+1;–2.2
比较运算符
筛选大于一的所有列表:select * from info where id>1
不等于一的所有列表:select * from info where id!=1
id为2到4之间的列表项:select * from info where id between 2 and 4
id为2,3,4的列表项select * from info where id in(2,3,4)
id不为2,3,4的列表项select * from info where id not in(2,3,4)
select * from info where name =’张三’
模糊查询:列表中带张三字段的列表:select * from info where name Like ‘%张三%’
REGEXP运算符
- ‘^’匹配以该字符后面的字符开头的字符串。
- ‘$’匹配以该字符前面的字符结尾的字符串。
- ‘.’匹配任何一个单字符。
- “[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一 个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
- ‘’匹配零个或多个在它前面的字符。例如,“x”匹配任何数量的‘x’字符,“[0-9]”匹配任何数量的数字, 而“”匹配任何数量的任何字符。
查询末尾为3的列表项:select * from info where name Regexp ‘3$’
查询id存在123的列表项:select * from info where id Regexp ‘[123]’
排序子句
(单列排序)对id进行升序:select * from info order by id asc | desc(降序)
(多列排序)先比较id升序,再比较uid升序:select * from info order by id asc,uid asc
分页子句
问题:返回记录多的时候如何分页?只需其中的某一条或者某几条怎么办?
语法:LIMIT [位置偏移量,] 行数;(放入select 语句后)
业务场景)从0开始取两个值:select * from info LIMIT 0,2
select *from in LIMIT 0,3 #(2-1)*3 第一页三列数据
分页公式:(当前页数-1)*每页条数,每页条数
分页优势:约束返回结果的数量可以 减少数据表的网络传输量 ,也可以 提升查询效率 。如果我们知道返回结果只有1 条,就可以使用 LIMIT 1 ,告诉 SELECT 语句只需要返回一条记录即可。这样的好处就是 SELECT 不需要扫描完整的表。