数据库
首页 > 数据库> > mysql数据库

mysql数据库

作者:互联网

MySQL

下载

下载普通的包mysql-8.0.26-winx64.zip 200M左右

解压

配置环境变量

可以新建个变量MYSQL_HOME

安装服务,初始化

0, cd %MYSQL_HOME%\bin 并切换盘符 ,

虽说已经配置了环境变量了,但是初始操作还是建议cd过去操作,减少意外发生

1,安装。mysqld -install

注意有一个d

看贴有的说加上 -console 参数可以 显示密码,但是试了不行,反而安装不成功,建议不加

2,生成data目录,mysqld --initialize

注意有一个d

看贴说有的加上 -insecure --user=mysql , 加上配置文件的skip-grant-tables 可以跳过验证直接登录,不清楚原因,过于复杂不建议加上该参数

3,生产data目录后,里面有个后缀.err的文件打开查看日志写着

A temporary password is generated for root@localhost: rump:QiUe7qQ

注意第一个冒号后面的全是密码,不包括第一个空格

4,启动服务,net start mysql

想停止服务就是 net stop mysql

如果启动失败,之前有安装过服务可以删除mysql服务,并重新安装 mysqld -install

sc delete mysql 删除服务

sc query mysql 查询服务

5,登录mysql -uroot -p

粘贴第二步data目录下.err文件写的密码

6,修改密码

alter user root@localhost identified by '123456';

如果是跳过验证登录的,可以修改表,然后刷新权限

update mysql.user set authentication_string=password('123465') where user='root' and host='localhost';

password是加密函数

flush privileges;

my.ini

可能需要my.ini文件时,

我安装的是8.0.26版本,没有使用该文件,一切顺利

在mysql 目录下新建文件,内容如下:

[mysql]
#字符集
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
max_connections=200
port=3306
#mysql的安装目录,不是bin目录,即bin目录的上一级
basedir=xxx
#mysql的安装目录下的data目录,路径分割用反斜杠就可以了
datadir=xxx\data\
#这个是mysql启动时,跳过验证,即不需要密码直接回车可以登录
#skip-grant-tables

sqlyog

登录失败

sqlyog plugin caching_sha2_password could not be loaded 报错

1,cmd登录mysql

2,alter user 'root'@'localhost' identified by 'password' password expire never; #修改加密规则

3,alter user 'root'@'localhost' identified with mysql_native_password by 'password'; #更新用户的密码

3,alter user root@localhost identified by '123456'; # 更改新的密码

3,flush privileges; #刷新权限

改为小写

工具-首选项-字体编辑设置-事例-关键字/函数

单行注释:--

多行注释:/**/

关键字,通配符

库名,表名,列名,主从键,可以用反引号引起来,避免与关键字冲突

通配符 %: 表示一个或多个,比如 %利% 匹配 澳大利亚 ,张% 匹配 张三,张无忌

通配符 _: 下划线 ,占位一个,张_ 匹配 张三,不能匹配张无忌

数据库操作

建库

create database dbname;

库名:

基字符集: utf8

数据库排序规则:utf8_general_ci

建表

表名:

所属库:

引擎:InnoDB

字符集:utf8

核对:utf8_general_ci

列名:id, version, is_delete, gmt_create, gmt_update

数据类型:int, varchar

长度:字符长度,数字0填充显示的位数

默认值:

主键:primary, constraint, foreign, references

key fk_fkeyname (colname) constraint fk_fkeyname foreign key (colname) references dbname.tbname (refcolname)

非空:

unsigned:无符号

自增:

zerofill:零填充

更新:

注释:

修改表

alter table tbname

rename as/ 表重命名

add colname coldesc/ 字段增加

add constraint FK_foreignkeyname foreign key (foreigncolname) references dbname.tbname (refcolname)

一般外键名或叫做约束名 固定使用FK_开头

modify colname coldesc/ 字段修改

change colnameold colname coldesc/ 字段重命名

drop colname/ 字段删除

数据库常用sql

select version(); 查询数据库版本

show full processlist; 查询连接用户

show status\G 将DB所有的状态

show databases; 查询所有库,包括系统库,用户库。

select database(); 查询库

describe tbname; 查询表字段 ,可简写为desc

show full tables from school 查询库中所有的表#full可不加,from子句也可不加,使用当前库,

show full fields from tbname;查询表字段信息

show keys from tbname\G 查询表的key

show index from tbname\G 查询表的key 查询表的索引信息

show table status from school like 'student'\G 查询表状态

show charset;

show collation;

show create database dbname;

show create table tbname;

事务(transaction)

四个特性:

mysql 事务支持

DBMS 数据库管理系统(Database Management System)

索引

create 索引类型 索引名称 on 表名(列名)

create index key/index_tbname_colname on tbname(colnam e)

ALTER TABLE table_name ADD INDEX index_name (column_list)

数据库语言 (database language)

DDL 定义definition

DML 管理manage

DCL 控制control

DQL 查询query

关键字

连表查询

分组查询

排序 分页

子查询

自连表查询

CRUD 增Create,查(检索)Retrieve,改Update,删Delete

where, having 子句

多个子句 连接符, and, or

操作符 含义
=
!= 或 <>
>=, <=, >, <
between xxa and xxb xxa 需要小于等于 xxb, 两头为包含关系
in in(v1,v2,v3) 建议空格不要
is null
is not null
like like '张%' like '_宇'

数据类型

整数

小数

字符串

日期

其他

常用函数

关于两表七种条件连接,和一种无条件连接

show tables;
drop table if exists tba;
drop table if exists tbb;
create table tba(id int, aname varchar(5));
create table tbb(id int, blike varchar(5));
-- a 表 根据 用户id 存了3个名字 n1, n2, n3
-- b 表 根据 用户id 存了3个爱好 l1, l2, l4
insert into tba values(1,'n1'),(2,'n2'),(3,'n3');
insert into tbb values(1,'l1'),(2,'l2'),(4,'l4');

-- tba id:1, 2, 3,
-- tbb id:1, 2, 4,

select * from tba
select * from tbb
-- delete from tbb where name like '_11'

-- full/cross/inner/straight_join join = join,  性能可能不相同,其中 full 不能指定on条件
-- left/right outer join = left/right join, 其中 outer 可以省略

-- 0, 无条件连接,俗称笛卡尔积, cross
-- 1,左连接,a 全有          1, 2, 3
-- 2,右连接,b 全有          1, 2, 4
-- 3,内连接,交集, inner     1, 2
-- 4,左外连,a 独有          3
-- 5,右外连,b 独有          4
-- 6,全连接,并集            1, 2, 3, 4
-- 7,全外连,a 独有 + b 独有 3, 4

-------------------------------------------

-- 0, 条目9  笛卡尔积 两表相乘,无条件连接,所有数据都有,但是关联性很差 cross 可省略
select * from tba cross join tbb;

-- 1, 条目3, on条件只能满足两条,a表第三条不满足因为left 显示a表全部信息,则b表用null填充
select * from tba left join tbb on tba.`id`=tbb.`id`;

-- 2, 条目3, 同上
select * from tba right join tbb on tba.`id`=tbb.`id`;

-- 3, 条目2,求交集,inner 可省略,on 可换成where,建议使用inner 和 on
select * from tba inner join tbb on tba.`id`=tbb.`id`;

-- 4, 条目1,a 独有,直接选择b表为null 的即是,这里因为b表数据为空,查询a表独有,则使用tba.* 更有意义
select tba.* from tba left join tbb on tba.`id`=tbb.`id` where tbb.`id` is null;

-- 5, 条目1,同上
select tbb.* from tba right join tbb on tba.`id`=tbb.`id` where tba.`id` is null;

-- 6, 条目4,思路,可以查a 表全有的,加右表独有的,使用 nuion 需要注意查询的列 前后两表需要一致,即前面查询语句结果是4列,后面查询语句也是要4列
select * from tba left join tbb on tba.`id`=tbb.`id` union select * from tba right join tbb on tba.`id`=tbb.`id` where tba.`id` is null;

-- 7, 条目2,思路, 查询a 独有 + b 独有
select * from tba left join tbb on tba.`id`=tbb.`id` where tbb.`id` is null union select * from tba right join tbb on tba.`id`=tbb.`id` where tba.`id` is null;






标签:--,数据库,查询,mysql,tba,tbb,id,select
来源: https://www.cnblogs.com/ttaolu/p/15231854.html