mysql

一、概念

数据库是按照数据的结构来组织,存储,和管理数据的仓库,简而言之,就是存放数据的仓库

二、数据库和SQL是什么关系?

数据库里面放着数据,而SQL是用来操作数据库里数据的语言(工具)。
例如有一碗米饭(碗就是mysql,里面放的米是数据),你要吃碗里的米饭,拿什么吃?拿筷子(sql)。用筷子(sql)操作碗里(mysql)的米饭(数据)

三、数据库的分类

1、关系型数据库

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,
对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算
来实现数据库的管理。
例:Oracle,mysql,SQLServer,SQLite

2、非关系型数据库

NoSQL,泛指非关系型的数据库,NoSql数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是
作为对传统关系型数据库的一个有效的补充
例:MongoDB,Redis

介绍:

Oracle是一个关系型数据库管理系统是最挣钱的数据库,出自甲骨文公司,市场占有率非常高,功能非常强大,被一些大型企业,电信,银行,证券公司所使用。
MySQL是一个关系型数据库管理系统,MySQL目前最流行的开源数据库。
SQLServer,微软开发的数据库,仅支持Windows操作系统,号称是windows上最好用的数据库。
MongoDB,最好用的文档型数据库,是NOSQL类型数据库的领导者之一,也是当前最成功的NoSQL类型数据库,数据存储格式采用JSON形式,非常灵活。
Redis,最好的内存级数据库,查询效率极高,并且在Redis 3.0之后,支持多种数据类型,String,Set,List,Hash等类型,开始支持集群,弥补了自身短板。是目前做缓存最流行的数据库。
SQLite,最流行的嵌入式数据库,占领手机行业的绝对领导者地位,Android和IOS两大手机系统,都内嵌了SQLite数据库,SQLite是一个完整的关系型数据库,支持标准SQL,支持事务操作,程序包非常小,是嵌入式设备的最佳选择。

四、sql语句的分类

介绍:

DQL:数据查询语言,用于对数据的查询,select
DML:数据操作语句,用于修改数据库中的数据,包括插入(INSERT)、更新(UPDATE)和删除(DELETE)
DDL:数据定义语言,用于创建、修改、和删除数据库内的数据结构
DCL:数据控制语言,用于对数据库的访问,如:
1:给用户授予访问权限(GRANT);
2:取消用户访问权限(REVOKE)

1、表字段数据类型

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型

2、(1)整型

在这里插入图片描述

(2)浮点型(float 和 double)

在这里插入图片描述

设一个字段定义为 float(5,3),如果插入一个数 23.45678,实际数据库里存的是 23.457,但总个数还以实际为准,即 5位。

(3)字符串(char,varchar,text)

在这里插入图片描述

char 和 varchar:
VARCHAR与CHAR两种字符型数据类型相比,最大的差异就是前者是可变长度,而后者则是固定长度。在存储时,前者会根据实际存储的数据来分配最终的存储空间。而后者则不管实际存储数据的长度,都是根据CHAR规定的长度来分配存储空间

(4)时间/日期

在这里插入图片描述

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

3、数据类型的属性

在这里插入图片描述

如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引。 您可以使用多列来定义主键,列间以逗号分隔。
UNIQUE KEY的用途:主要是用来防止数据插入的时候重复的
CHARSET 设置编码

4、DDL

(database defination language) 数据库定义语言
(1)、创建数据库
在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:

create database 数据库名;
create database 数据库名 character set utf8;

操作:

create database bendi CHARACTER set utf8;

(2)、选择数据库
在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库
语句:

use 数据库;

操作:

use bendi;

(3)、查询建立数据
查看数据库创建细节
语句:

show create database 数据库;

操作:

show create database bendi;

(4)、删除数据库
删除创建的数据库
语句:

drop database 数据库;

操作

drop database bendi;

(5)、创建表
语句:

create table 表名(字段 类型,字段 类型…)

操作:

create table student(
id int PRIMARY key auto_increment,
name varchar(20),
sex varchar(20),
age int,
salery float(6,2),
birthday date)

(6)、查看表的创建细节

show create table student;

(7)、展示表结构

desc student;

(8)、添加表字段
在原有的学生基础上添加address列

alter table student add address varchar(20);

(9)、修改表字段
在原有的学生基础上修改address列

alter table student MODIFY address varchar(125);

(10)、删除表字段
在原有的学生基础上删除address列

alter table student drop address;

5、DML

(1)新增数据

单条:insert into 表名 values(字段值,字段值,字段值…) 多条:insert into 表名 values(字段值,字段值,字段值…),(字段值,字段值,字段值…);

操作单条数据:

insert into student values(1,‘张三’,‘男’,18,389.10,‘1999-10-10’);

操作多条数据:

insert into student values(2,‘李四’,‘男’,19,1389.10,‘2000-10-10’),(3,‘王
五’,‘女’,20,3389.10,‘2001-10-10’);

(2)修改数据
语句:

UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n [WHERE 条件];

操作:

update student set name=‘马超’,salery=3456,birthday=“2003-02-12” where id=2;

(3)删除数据
语句

单条:delete from 表名 where 条件; 全部:delete from 表名

操作

delete from student where id=1;

5、DQL

数据查询语言,用于对数据的查询
(1)查询表中的具体字段数据

SELECT 字段1,字段2…字段n FROM 表名;

(2)查询表中的全部数据

SELECT * FROM 表名;

(3)条件查询

SELECT * FROM 表名 where 条件;

select * from student where id=1 or id =2
select * from student where id in(1,2,3,4)
select * from student where id BETWEEN 1 and 4

(4)关系运算符

等于 =
大于 >
大于等于>=
小于<
小于等于<=
不等于!=

(4)逻辑运算符筛选

and
or
not

(5)模糊查询

select * from 表 where 字段 like ‘%匹配数据%’;
select * from 表 where 字段 like ‘匹配数据%’;
select * from 表 where 字段 like ‘%匹配数据’;

(6)排序查询
select * from 表名 order by 字段;

升序:select * from student ORDER BY sscore
降序:select * from student ORDER BY sscore desc

(7)分组查询
select * from 表明 group by 字段;
select * from 表明 group by 字段 having 条件;

having 条件表达式:用来分组查询后指定一些条件来输出查询结果
having作用和where一样,但having只能用于group by

例:select count(*) from student GROUP BY ssex HAVING sum(sscore)>=85

(8)分页查询
select * from table limit m,n
其中m是指记录从m+1开始,N代表取n条记录
select * from student limit 2,4
即取出第3条至第6条,4条记录

select * from table limit 2,5
索引为0,从第二位开始查,查五位数
查询3,4,5,6,7
(9)聚合函数

count(个数)、sum(求和)、avg(平均)、max(最大)、min(最小)等

五 重点

表数据操作:
新增:
单条:insert into 表名 values(字段值,字段值,字段值…)
多条:insert into 表名 values(字段值,字段值,字段值…),(字段值,字段值,字段值…);

修改:
UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n WHERE 条件;
删除
delete from 表名 where 条件;
查询
查询某些字段信息:SELECT 字段1,字段2…字段n FROM 表名;
查询全部信息:SELECT * FROM 表名;
按照条件查询:SELECT * FROM 表名 where 条件;
关系运算符:(=等于 大于> 小于< 大于等于>= 小于等于<= 不等于!= )
SELECT * FROM 表名 where 字段 > 数字;
逻辑运算符(and or not)
SELECT * FROM 表名 where 条件1 and 条件2;
在范围之间查询:SELECT * FROM 表名 where 字段 between 数字 and 数字;

模糊查询:select * from 表 where 字段 like ‘%匹配数据%’;
排序查询:select * from 表名 order by 字段; 倒序添加desc
分组查询:select * from 表明 group by 字段 having 条件; (having作用和where一样,但having只能用于group by)

分页查询:select * from table limit m,n (m代表第m+1条数据开始,n代表一页显示多少条数据)
聚合函数:count(个数)、sum(求和)、avg(平均)、max(最大)、min(最小)等

多表联查
三表查询语句:
select 表1.字段,表2.字段,表3.字段 from 表1 inner/left/right join 表2 on 表1.字段 = 表2.字段 inner/left/right join 表3 on 表1.字段 = 表3.字段 where 条件;
inner join /right join /left join 区别
inner join:内连接,表示以两个表的交集为主,查出来是两个表有交集的部分,其余没有关联就不额外显示出来
left join: 左连接,表示以左边表为主,查询的结果显示左边表的所有数据,右边表显示的是两表交集的数据,没有的则为null
right join:右连接,表示以右边表为主,查询的结果显示右边表的所有数据,左边表显示的是两表交集的数据,没有的则为null

( ̄▽ ̄)~*------ ٩(๑❛ᴗ❛๑)۶谢谢阅读!!!!!!!!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值