mysql数据库

avatar
作者
筋斗云
阅读量:1

数据库管理

数据库运维

sql语句 数据库用来怎删改查的语句*

备份 数据库的数据进行备份*

主从复制,读写分离 高可用。*

数据库的概念和相关的语法规范

数据库:组织、存储、管理数据的仓库。

数据库的管理系统(DBMS):实现对数据有效组织,管理和存取的系统软件

mysql

oracle:大数据系统一般使用

sql-server

MariaDB 也是mysql mysqld

postgreSQL 大象数据

关系型数据库和非关系型数据库

mysql oracle postgreSQL

关系型数据存储的结构:是一张二维的表格,表里有行和列

列是对象,字段

行:对象的信息,字段的属性

行+列组成一张表。

非关系型数据库:缓存型数据库:redis

索引型数据库:ES

文档型数据库:MongoDB

键值对形式存储的结构

key value

test1=3

关系型数据库和非关系型数据库的优缺点:

关系型的优点:表的结构清晰,逻辑容易整理,记录的数据比较完整

​ 缺点:读写速度比较慢,并发量查,数据迁移比较麻烦。

非关系数据库优点:高并发读写,对海量的数据依旧可以保持高效率的存储和访问,架构可扩展。

​ 缺点:键值对形式存储,数据逻辑比较复杂,数据都是保存在缓存当中(内存)当中(redis),如果意外重启所有数据都会丢失。

mysql的数据类型:

char:固定长度的字符串类型,用于存储固定长度的字符串

varchar:可变长度的字符串类型,存储的是可变长度的字符串

char定义好了长度之后,不论你写的值是多少,都会占用固定长度的字节大小,保存在磁盘上都是4字节

varchar在保存字符串时,多少就保存多少,在保存的字符串结尾默认有一个隐藏的结束符,会多占一个字节

varchar比char要节约磁盘空间

读写速度:char的读写速度性能要高于varchar char是连续的磁盘空间,保存的内容是连续的

​ varchar在增删改查之后,会产生一个磁盘空间的碎片文件,影响读写性能

init 存储的数据类型为整数

floal:浮点数,小数点 float(m,d):m表示总位数,d表示小数位数

double:双精度浮点数 double(m,d)m表示总位数,d表示小数位数

date:用于存储时间,YYYY-MM-DD

datetime 用来存储日志和时间,格式YYYY-MMM-DD HH:MM:SS

timestamp:和达特time类似,但是他可以自动记录当前时间

smalinit:存储小整数

bigint:存储大整数

decimal(5,2):存储浮点,存储精度的浮点数,5表示总位数,2表示小位数

数据库的管理:

增删改查---------sql语句

sql中的名词:

数据库:database

表:table

行:row

列:column

索引:index

视图:view

用户:user

权限:privilege

存储过程:procedure

存储函数:funcrion

调度器:exent

sql的语言规范

在数据库系统中,sql语句不区分大小写,但是建议大写

​ sql语句可以分为单行和多行,但是必须要以“;”结尾

命令规范:库名,表名,列的名字,都必须以字母开头,后面可以数字,后面也可以跟上特殊符号

​ 不要使用mysql的保留字,table select show databases

​ 数据库名,表名,用户严格区分大小写

sql语言的分类:

1、DDL 数据库定义的语言:创建数据库的对象语言,库,表和索引等等

create drop

2、DML:数据库操作语言,对表里数据进行管理

select update insert dalete

3、DQL:数据库查询语言,数据库的查询语句

select

4、DCL数据控制语言,控制和管理数据用户的角色和权限

grant revoke

5、tcl 事务控制语句,用来管理的数据库的事务,脚本开发,存储过程等等

commit rollback savepoint

DDL:创建库和表的语句

创建完刷新一下

create database xy102; F5 刷新 

在这里插入图片描述

创建表的格式需要注意哪些

一条数据库的语句是连贯的,已分号为结尾表示一条完整的sql但是写法太长了,不方便阅读和理解,我们可以对一条语句进行分行的写法

关键词不能跨行

create table student ( id int (4) not null, name char (10) not null, score decimal (5,2) ) 

在这里插入图片描述

在这里插入图片描述

查看属性

在这里插入图片描述

key:表示是否是主键或者是外键

default:如果没有数据的默认展示结果

extra:提供列的附加信息,自增长等等

删除表和库

drop  database 库名 drop   tables   表名 

在这里插入图片描述

DML和DQL 管理语句和查询语句

DML

insert 插入数据

insert into 表名 (字段1,字段2,字段3)values(字段1的值、2的值、3的值) 

字符串要用单引号引起来

select * from student;查看

在这里插入图片描述

第二种方法

insert into student values(3,'张三',90.1); 

在这里插入图片描述

desc student 

在这里插入图片描述

null和空值之间的区别

null就是啥也没有,就是为空

空值也是值,只是值为空

select  * from student where name is null                             筛选的值 查数据 

在这里插入图片描述

修改和更新

是对已有的数据进行修改和更新

update语法

update 表名  set 列名=值  where 条件 update student set score=90.1 where id=3; 

在这里插入图片描述

在这里插入图片描述

时间

实时插入时间

在这里插入图片描述

自动插入

自动插入当前时间

在这里插入图片描述

delete 删除表的数据

语法:delete from  表名 where 

在这里插入图片描述

DQL语句,查询语句

select 查询内容,查询内容 fron student;

select score from student; 

在这里插入图片描述

select name,score from student; 

在这里插入图片描述

查看指定行

limit

select * from student limit 2,3;  显示第二行后面三行 

在这里插入图片描述

显示1到第三行

在这里插入图片描述

去重查询

select distinct name    from  student; 

名称去重查询

在这里插入图片描述

where 语句 条件的筛选

select * from student  where   id =7  add score=71

and 表示且

or 表示或

在这里插入图片描述

模糊查询

like

以什么为开头

select * from student where name like '顾%'; 

在这里插入图片描述

以什么为结尾

在这里插入图片描述

包含内容即可

在这里插入图片描述

alter

通常用于修改数据库中的结构或对象,例如表(table)的定义或其他数据库对象的属性。主要用途包括:修改表结构,修改索引,修改视图,修改数据库对象的其他属性

修改表名和表结构

alter table student rename  stu01 

在这里插入图片描述

给表添加一个列

alter  table  stu01 add  address  varchar(50) default '地址不详'; 表 stu01 将会有一个新的 address 列,如果新插入的数据行没有为 address 列指定值,则默认为 '地址不详' 

在这里插入图片描述

修改字段的数据类型;

alter table city stu01 modify column address char(10); 

在这里插入图片描述

删除列

alter  table stu01 drop address; 

修改列的名称

alter table stu01 change name user_name char(10); 数据类型一定要加 

在这里插入图片描述

数据库的增删改查

约束条件和用户管理

主键

主键约束 primary key

用于标识表中的主键列的值,而且这个值是全表当中唯一的,而且值不能为null

一个表只能有一个主键。

设置主键

第一种

在这里插入图片描述

第二种方法

在这里插入图片描述

插入数据 id不能重复 不然会报错

在这里插入图片描述

在这里插入图片描述

外键

外键:用来建立表与表之间的关系。确保外键中的值与另一个表的主键值匹配,保证数据引用的完整性

多表联查,不要超过三张,找过三张,会降低查询速度。

非空约束;保证列中的值不含null值

唯一性约束:确保列中的所有值都是唯一的,类似主键,但是一个表可以有很多个唯一约束,

自增约束,在列生成的每一行都会自动生成一个唯一标识符,通常和主键一起使用,每次插入新行时,自增列的值会自动增加

唯一性约束

在这里插入图片描述

唯一约束可以有好多个 但是不能为空

在这里插入图片描述

自增约束

在这里插入图片描述

两种方式添加

在这里插入图片描述

终端可以查看

在这里插入图片描述

表与表的关系 要用唯一性进行关联

create table if not exists student ( crad_id int(5) primary key auto_increment, stu_name char(10) not null, stu_email varchar(128) not null unique key );  create table class ( stu_id int(11) zerofill primary key auto_increment, address varchar(128) default '地址不详', crad_id int(5) not null, foreign key (crad_id) references student (crad_id)  ); 

连接主键

在这里插入图片描述

在这里插入图片描述

删除表

删除索引的名称

show create table 表名 查看表的详细信息

在这里插入图片描述

在这里插入图片描述

总结

在这里插入图片描述

复制表

create table 新表名 like 表名

create table stu_01 like student 复制新库  insert into stu_01 select * from student;把数据导入  create table stu_02 (select * from student); 

在这里插入图片描述

临时表

临时表

在这里插入图片描述

在这里插入图片描述

清空表*

drop 删除表

delete from 表名;:一行一行的清空表数据,速度比较慢,如果有自增长字段,delete清空之后,会继续按照原来的序号,继续递增

在这里插入图片描述

truncate table 表名;:清空表保留表结构,但是清空之后原有的记录全部抹去,自增长也将重头开始,速度比较快

在这里插入图片描述

数据库的用户管理

创建用户

设置用户权限

取消权限

mysql -u root -p123456

进到mysql库然后查询

创建用户

crant user ''@'ip地址'; 创建用户 grant all privileges on *.*to ''@'' identified by '123456' all 给于所有权限 远程登录 数据库的操作权限(增删改查) *.*:*表示库  *:库里的表 identified by '123456':就是创建密码 

在这里插入图片描述

设置用户权限

查看用户权限  show grants for '用户'@'ip';  移除权限  revoke all  privileges on *.* from ''@'ip'  更改完刷新flush privileges  grant select on xy102.* to '用户'@'ip'   每次更改完毕要退出在进入 添加权限 grant insert,update,alter,delete on xy102.* to '用户'@'ip' 更改完刷新flush privileges 退出重连一下 

在这里插入图片描述

取消权限

revoke insert,update,alter,delete on xy102.* from'用户'@'ip' 

在这里插入图片描述

删除用户

drop user '用户'@'ip' 

创建用户加密码

在这里插入图片描述

mysql 本地的免密登录

etc/my.cnf

重启数据库

在这里插入图片描述

即可实现免密登录

在这里插入图片描述

show grants for '用户'@'ip地址' 

show grants for ‘用户’@‘’

实验

1、创建库,库名 country

create database

2、创建表,表名 province和city 要求如下:

1)、province包含字段:
ct_id为区号,最多四位 主键;
ct_name 城市名 最长5位,不能为空,不能重复
ct_scale 城市规模,可重复,不能为空。

2)、city包含字段
c_id 主键
c_street 不能为空,不能重复。
c_subway int 不能重复 可以为空
c_weather 字符串 可以空 默认值:晴

通过修改表city,创建外键关联province的主键,ct_id。

分别插入5条数据,任选。不限制

展示表1的前两行,展示表2的2-4行

有重复数据,去重查询。

修改表city,将c_weather的默认值改为:不详

操作

先创建两个表

先创建表 create table province ( ct_id int (4) primary key, ct_name varchar (5) not null unique key, ct_scale varchar (10) not null )  create table city( c_id int(4) primary key, c_street varchar(8) not null unique key, c_subway int (8) unique key, c_weather varchar (8) default '晴' );  alter table city add column ct_id int(4); 在city表中新添加一个类型 创建外键关联province的主键 ctid alter table city add constraint foreign key (ct_id) references province (ct_id); 分别插入5条数据,任选。不限制 insert into city values (2,2,2,2,2);  insert into province values (1,'南京','雨');  select * from province limit 0,2; 查看行 select * from city limit 1,3; 修改 alter table city modify c_weather varchar(50) default '不详'; 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!