mysql学习_Mysql学习

概念:

按照一定的数据结构来存储和管理数据的仓库

Mysql的客户端工具:

字符界面

mysql

图形界面

MySQL Workbench

第三方工具(Windows)

SQLyog

navicat

各文件的安装位置:

数据库相关文件(datadir目录)

/var/lib/mysql

可执行文件

/usr/bin

服务器-mysqld

/usr/sbin

启动/关闭Mysql服务器:

使用操作系统工具systemctl管理mysql服务

systemctl status mysqld

systemctl start mysqld

systemctl stop mysqld

systemctl restart mysqld

连接至Mysql服务器:

mysql -uroot -p

Enter password:(密码)

忘记root密码后的重置

设置mysql启动参数

[root@jayss bin]# systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

重启mysqld

[root@jayss etc]# systemctl restart mysqld

登录mysql,不输入用户和密码直接回车

[root@jayss etc]# mysql

修改密码

mysql> flush privileges

mysql> alter user root@localhost identified by 'Root@1995';

还原启动参数

[root@jayss ~]# systemctl unset-environment MYSQLD_OPTS="--skip-grant-tables"

简单信息查询

查看MySQL版本

mysql> select version();

查看当前用户

mysql> select user();

查看当前数据库

mysql> select database();

查看当前连接的状态

mysql> status

查看当前时间

mysql> select now();

查看表结构

mysql> desc t;

执行SQL脚本文件:

[root@jayss ~]# mysql -u root -p jayss < t.sql

库级操作语句:

显示所有的库:show databases;

创建库:create databases db_name;

删除库:drop database db_name;

进入数据库:use db_name;

表级操作语句:

显示所有表:show tables;

创建表:create tble table_name;

显示创建表的信息:show create table table_name;

删除表:drop table table_name;

字段类型

数值类型:

数值类型

特性

tinyint

用一个字节存放整数(0,255)

smallint

两个字节(0,65535)

mediumint

三个字节(0,16777215)

int

四个字节(0,4294967295)

bigint

八个字节

float(m,n)

单精度浮点型(四个字节)

double(m,n)

双精度浮点型,m总个数,d小数位(八字节)

字符类型:

字符类型

特性

char(size)

定长字符串(0-255字节)

varchar(size)

变长字符串(0-65535字节)

tinyblolb

不超过255个字符串的二进制字符串(0-255字节)

tinytext

短文本字符串(0-255字节)

bolob

二进制形式的长文本数据( 0-65 535字节)

text

长文本数据(0-65 535字节)

mediumblob

二进制形式的中等长度文本数据(0-16 777 215字节)

mediumtext

中等长度文本数据( 0-16 777 215字节)

longbolob

二进制形式的极大文本数据(0-4 294 967 295字节)

longext

极大文本数据( 0-4 294 967 295字节)

时间日期类型:

时间日期类型

特性

date

日期,格式:2019-01-27

time

时间,格式:12::12:30

datetime

时间日期,格式:2019-01-27 12:12:30

timestamp

自动存储记录修改的时间

year

存放年

约束条件:

约束是一种限制

通过对表中的数据做出限制来确保表中数据的完整性和唯一性

约束类型

关键字

特点

默认

default

插入数据时,若无明确为字段赋值则自动赋予默认值

非空

not null

限制一个字段的值不能为空,insert的时候必须为该字段赋值

唯一

unique key

限制一个字段的值不重复,该字段的数据不能出现重复的

自增长

auto_increment

自动编号,和主键组合使用,一个表里面只能有一个自增长

主键

primary key

通常每张表都需要一个主键来体现唯一性,每张表里面只能有一个主键

外键

foreign key

保持数据的一致性,我有的你一定有, 你没有的, 我绝对没有

查询

select语基本结构:

select … 指定要查询的列名

from … 指定要查询的表名

where … 指定查询条件

group by … 指定要分组列

having … 指定过滤分组的条件

order by … 指定排序列

模糊查询:

1.任意多个字符:%

2.任意一个字符:_

常用聚合函数:

统计个数:count(column)

列出字段全部值:group_conact(column)

求和:sum(column)

平均值:avg(column)

最大值:max(column)

最小值:min(column)

简单查询:

只指定表名:select * from table_name;

指定列名:select ename,sal from table_name;

使用列别名:select ename as emp_name from table_name;

附加条件:select ename from table_name where sal>2000;

排序:select ename from table_name order by sal;

连接查询:

内连接:

1.无条件内连接:

Mysql> select * from tb1 [inner] join tb2

2.有条件内连接

Mysql> select * from tb1 inner join tb2

-> on tb1_id =tb2_id;

外连接:

1.左外连接:(以左表为基准)

mysql> select * from tb1 left join tb2

-> on tb1_id= tb2_id;

2.右外连接:(以右表为基准)

mysql> select * from tb1 right join tb2

-> on tb1_id= tb2_id;

操作:

插入数据:

指定字段插入:

insert into tb_name(字段) values(值);

全字段插入:

insert into tb_name values(值);

多行插入:

insert into tb_name(字段) values(值1),(值2)...;

修改数据:

修改所有数据:

update tb_name set value_1=value_2;

修改多个:

update tb_name set value1_=value_2,value_3=value_4;

修改满足条件的数据:

update tb_name set value_1=value_2 where id=1

删除数据:

删除表中所有的数据:

delete from tb_name;

删除表中满足条件的数据:

delete from tb_name where id1;

修改表结构:

修改表名:

alter table tb_name rename to new_name;

修改字段名:

alter table tb_name change name new_name 字段类型;

修改字段类型:

alter table tb_name modify 字段名 字段类型;

添加字段:

alter table tb_name add 字段名 类型;

删除字段:

alter table tb_name drop 字段名;

表关系:

一对一

一对多

多对多

用户管理

密码:

1.密码策略相关参数:

mysql> show variables like 'validate%';

2.查看密码策略制定参数:

mysql> show variables like 'validate_password_policy';

3.修改密码策略参数:(修改密码策略级别为0)

mysql> set global validate_password.policy=0;

mysql> select @@validate_password.policy;

用户:

1.内置用户:

'root'@'localhost'

'mysql.sys'@'localhost'

'mysql.session'@'localhost'

'mysql.infoschema'@'localhost'

2.创建用户

mysql> create user law identified by 'jayss'; #默认为jayss@'%'

mysql> create user tian@'%' identified by 'tian';

mysql> create user law@192.168.244.255 identified by 'jayss';

3.删除用户

mysql> drop user jayss;

4.锁住/解锁用户

mysql> alter user jayss account lock;

mysql> alter user jayss account unlock;

5.修改口令:

mysql> alter user jayss@'%' identified by 'jayssjayss';

权限层次:

关键字

权限层次

global

服务器全局生效的权限

database

数据库生效的权限

table

指定表生效的权限

column

指定列生效的权限

routine

存储过程、函数生效的权限

查询权限信息:

查询自己的权限:

mysql> show grants;

root帐号查询其他帐号:

mysql> show grants for user1@localhost;

mysql> show grants for jayss;

优化

index种类:B-Tree、R-Tree、hash

创建索引:

指定主键或附带not null的唯一约束

自动创建clustered index

创建普通索引

1.mysql> create table t(a int, b char(10), c char(10), index idx_b(b));

2.mysql> alter table t add index idx_a(a);

3.mysql> create index idx_c on t(c);

多列复合索引

mysql> create index idx_com on emp(empno, ename, sal);

删除索引:

1.mysql> drop index idx_a on t;

2.mysql> alter table t drop index idx_abc;

查看索引信息:

mysql> show index from t\G

欢迎技术交流

WeChat......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值