#navicat与mysql8.0连接问题解决
1251–Client does not support authentication protocol requested by server 的解决办法:
下面这四步解决,可以忽略第二步也可以
USE mysql;
ALTER USER ‘root’@’localhost’ IDENTIFIED BY 'password' PASSWORDEXPIRE NEVER;
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘密码自己设置’;
FLUSH PRIVILEGES;
1.创建数据库,create database ***,查询数据库 show databases,
2.数据表 ;据表是数据库重要的组成部分,是其他对象的基础,使用数据库现有打开数据库,use ***,然后创建数据表:
create table test(
name varchar(20),
age tinyint unsigned,
salary float(6,2) unsigned
);
3. 查看数据表 show tables;查看数据表结构 show columns from ***;插入数据表内容 insert *** values();数据表记录查询 select * from ***;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
a、简单查询
1.select * from ***; 第1个星号表示所有列,也可以单独列和多列逗号隔开,后面三个星号是表名
SELECT * from tb5 LIMIT 3;
2.SELECT e.age from tb5 e; 别名操作
SELECT e.age as ‘年龄’ from tb5 e; 还可以改变显示的列名
3.SELECT DISTINCT e.age from tb5 e; 表示去掉重复
4.SELECT CONCAT(“姓名”,e.username,“年龄”,e.age) from tb5 e; 多列连接成一列展示
#条件查询
5.
SELECT * from tb5 WHERE id=3;
SELECT e.* from tb5 e WHERE id>2;
SELECT e.* from tb5 e WHERE id>2 and id<5;
SELECT e.* from tb5 e WHERE id=2 or id=5;
SELECT e.* from tb5 e WHERE id in (2,5); #这in包含意思与上面or执行效果一样
SELECT e.* from tb5 e WHERE e.id is not null; #不为空
SELECT e.* from tb5 e WHERE e.id !=0; #不为空
SELECT e.* from tb5 e WHERE username LIKE "k%"; #模糊查询
SELECT e.* from tb5 e WHERE username LIKE "%l%"; #只要包含l不管在前在后,取反还可以在like前加not
SELECT e.* from tb5 e WHERE username !="tom"; #和下面一样表示查询不是tom的所有
SELECT e.* from tb5 e WHERE username <> "tom";
SELECT e.* from tb5 e ORDER BY e.age; #排序,一个升序自动不写默认asc,下面加desc降序
SELECT e.* from tb5 e ORDER BY e.age DESC;
#多表查询(没有关联条件会产生笛卡尔积,数量变成两个表数量积肯定不对)
添加外键:后面不写我直接在navicat直接右键表设计表外键,参考链接
6.
SELECT e.* FROM tb5 e,tb6 f WHERE e.username=f.username;
SELECT f.* FROM tb5 e,tb6 f WHERE f.username=e.username;
SELECT f.sex,e.age FROM tb5 e,tb6 f WHERE f.username=e.username; #多表多信息查询
SELECT f.id,e.age FROM tb5 e,tb5 f WHERE f.age=e.id; #自链接,两个一样的表进行关联查询
SELECT e.* FROM tb5 e LEFT JOIN tb6 f on(f.username=e.username); #左链接以左边为主,左边数据全部展示,右边如果关联上了就展示不然展示null,on后面是连接条件
7.结果合并展示查询union
SELECT * FROM tb5
UNION ALL
SELECT * FROM tb5; #全部展示
-------------------------------
SELECT * FROM tb5
UNION
SELECT * FROM tb5; #去掉重复展示一半
8.通用函数