Mysql数据库和Sql语句

数据库管理:

sql语句:数据库用来增删改查的语句(重要)

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

主从复制、读写分离、高可用(重要)

Mysql数据库和Sql语句

一、Mysql数据库

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

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

3、数据库软件:

mysql、oracle(大数据系统一般使用、大企业使用)、sql-server、MariaDB也是mysql mysld、postgreSQL(大象数据库)

4、关系型和非关系型数据库:

关系型数据库:mysql、oracle、postgreSQL

非关系型数据库:

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

列:是对象、字段

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

行+列组成一张表

只有关系型数据库才有表

非关系型数据库:

缓存型数据库:Redis

索引型数据库:ES

文档型数据库:MongoDB

键值对形式存储的结构

key value

test1=3

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

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

关系型缺点:读写速度比较慢、并发量差、数据迁移比较麻烦

非关系型数据库优点:可以进行高并发读写、对海量数据依旧可以保持高效率的存储和访问、

架构可扩展

非关系型数据库缺点:键值对形式储存,数据逻辑比较复杂,数据保存咋缓存当中(redis),如果意外重启所有数据都会丢失

6、mysql的数据类型:

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

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

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

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

varchar比char要节约磁盘空间

从读写速度来说,char的读写性能要高于varchar,char是连续的磁盘空间,保存的内容是连续的,varchar在增删改查之后会产生一些磁盘空间的碎片文件,影响读写性能

int:存储的数据类型为整数

float:单精数浮点数,用于存储浮点数(小数点) 格式 float(m,d) m表示总位数,d表示小数位数

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

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

timestamp:时间戳,和datetime类似,但是它可以自动记录当前时间

smallint:存储小整数

bigint:存储大整数

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

二、数据库的管理:Sql语句

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

1、sql中的一些名词

数据区:database

表:table

行:row

列:column

索引:index

视图:view

用户:user

权限:privilege

存储过程:procedure

存储函数:function

调度器:event

2、sql的语言规范

在数据库系统中,

sql的语句是不区分大小的,但是建议使用大写,

sql语句可以单行或者多行,但是结尾必须以英文的分号结束

3、sql的命令规范:

库名、表名、列的名字,必须以字母开头、后面可以是数字,也可以跟上特殊符号

不要使用mysql的保留字符,如table、database、select、show

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

4、sql语言的分类

DDl(数据库定义语言):创建数据库的对象语言、库、表和索引等等,如:create drop

DML(数据库操作语言):对表里面的数据进行管理,如:select、update、insert、delete

DQL(数据库查询语言):数据库的查询语句,如:select

DCL(数据控制语言):控制和管理数据库用户的角色和权限。如:grant、revoke

TCL(事务控制语句):用来管理数据库的事务,用于脚本开发、存储过程等等,如:commit、rollback、savepooint

DDL:创建库和表的语句

在这里插入图片描述

# 一条数据库的语句是连贯的,以分号为结尾表示一条完整的sql语言,但是太长了,不方便阅读和理解,我们可以对一条语句进行分行的写法但是关键词不能跨行
CREATE TABLE student (
id int (4) not null,
# 定义表的列的属性,数据类型和是否为空;
name char (10) not null,
score decimal (5,2)
);

命令行:desc student; (展示student的详细信息)

​ desc student\G; (纵向展示信息)

±-----±----±--------±------+
| Null | Key | Default | Extra |
±-----±----±--------±------+
| NO | | NULL | |
| NO | | NULL | |
| YES | | NULL | |
±-----±----±--------±------+

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

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

extra:提供列的附加信息

5、删库和删表

删库:DROP database xy102;
删表:DROP tables student;

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

1、DML:insert 插入数据

DML:insert 插入数据
insert into 表名(字段1,字段2,字段3) values(1,2,3);

insert into student(id,name,score) values (1,'赵氏',99.98);
insert into student values (2,'钱氏',99.66);
insert into student values (3,'孙氏',99.33);
insert into student values (4,'李氏',null);

insert into student values (null,null,null);
# 此时会报错,因为id和name不能为空

insert into student values (5,' ',null);
# 此时表示空值,不同于null的为空

insert into student values (6,'吴氏',88.88);

select * from student where score is null;
# 可以检索到score为null的行


select * from student;

desc student;

null和空值之间的区别:null就是啥也没有,就是为空,空值也是值,只是值是空

在这里插入图片描述

表明:null为NO表示不能为空,为YES表示可以为空,这里表示id和name不可以为空,score可以为空。

2、修改和更新

修改和更新:
# ps:只能对已有数据进行更新和修改
update   # 语法
update 表名 set 列名=值 where 条件;

update student set score=90 where id=4
select * from student;
# 此时4 李 的score为90

update student set name='周 where id=5;
select * from student;
# 此时5 score为99.22 的name为周

3、delete删除表的数据

delete删除表的数据
delete from 表名 where 条件;

delete from student where id=2;
select * from student
# 此时第二行 2 '钱' 99.66被删除,其他id不变,因为这个值是由我们自己设置生成的

4、DQL语句,查询语句:select

DQL语句,查询语句:
select * 
# *表示所有列

select score from student;
# 查询score列,生成结果为core的列

select name,score from student;
# 查询name和score的列,生成为那么在前,score在后的列

查看指定行:
select * from student limit 2,3;
# 表示显示第二行之后的三行

# 显示第一行到第三行
select * from student limit 0,3;

# 如何进行去重查询
select distinct name from student;
# 指定去除重复的name
# 只能指定一个内容进行查重,不能指定多个内容进行查重

5、where语句:就是条件的筛选

where语句:就是条件的筛选,

select * from student;

select * from student where id=7;
# 筛选出id为7的行
# 筛选出id为7且score为88.88的行
select * from student where id=7 and score=88.88;

# and 表示逻辑且的意思  or 表示逻辑或的意思

6、模糊查询:like

模糊查询:
like

select * from student where name like '赵%';
# 以什么(赵)为开头

select * from student where name like '%氏';
# 以什么(氏为结尾

select * from student where name like '%氏%';
# 只有包含(氏)即可

7、修改表名和表的结构:alter

# ALTER 修改表名和表的结构
如何修改表名
alter table student rename stu01;
# 修改后刷新,查看表名变为stu01

如何给表添加一列
alter table stu01 add address varchar(50)default '地址不详细';
select * from stu01;
# 此时新增一列为address 地址不详

# 修改字段的数据类型
alter table stu01 modify column address char(10);

# 删除例
alter table stu01 drop address;

# 修改列的名称
alter table stu01 change name username char(10);
# 后面一定要加数据类型,不然会报错
# 修改前为name 修改后为username
desc stu01;

table stu01 add address varchar(50)default ‘地址不详细’;
select * from stu01;

此时新增一列为address 地址不详

修改字段的数据类型

alter table stu01 modify column address char(10);

删除例

alter table stu01 drop address;

修改列的名称

alter table stu01 change name username char(10);

后面一定要加数据类型,不然会报错

修改前为name 修改后为username

desc stu01;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值