初识 MySql

什么是数据库?

学数据库你要知道什么是数据库

数据库是数据的仓库。

与普通的“数据仓库”不同的是,数据库依据“数据结构”来组织数据,因为“数据结构”,所以我们看到的数据是比较“条理化”的(比如不会跟以前的普通文件存储式存储成一个文件那么不条理化,我们的数据库分成一个个库,分成一个个表,分成一条条记录,这些记录是多么分明)
也因为其“数据结构”式,所以有极高的查找速率(比如B-Tree查找法),(由于专精,可以根据自己的结构特性来快速查找,所以对于数据库的查找会比较快捷;不像普通文件系统的“查找”那么通用)

如果与EXCEL来比的话,能明显的看出数据库的好处,我们能给一个个“字段”添加“约束”(比如约束一列的值不能为空)

数据库与普通的文件系统的主要区别(起因):数据库能快速查找对应的数据
常说的XX数据库,其实实质上是XX数据库管理系统。数据库管理系统是一个软件,是数据库管理的程序实现。

为什么要使用数据库

因为使用io流文件存储数据有很多弊端:1、文件存储数据存储效率低;2、不管存还取操作比较麻烦3、一般只能保存小量字符串数据等。为了解决这些弊端,才有数据库的出现,使用数据库存储数据就可以很好的解决这些弊端。

什么是DB

DB的全称是data base,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;

什么是DBMS

DBMS的全称是Database Management System,即数据库管理系统的意思,是一个软件,用来管 理数据库文件的软件,用户可以访问DBMS对数据进行增删改查操作,常见DBMS有: MySQL、oracle、DB2、sqlite、sqlserver等

数据库大体分为两类

1.关系型数据库
MySQL ,oracle ,SQLserver , DB2 , H2 …等等
2.非关系型数据库
Redis mongDB ealsitcserach …等等

语言结构

DML  用来操作数据库中所包含的数据  INSERT UODATE DELETE
DDL	 用于创建和删除数据库对象的等操作  CREATE DROP  ALTER   一般接触不到
DQL  用来对数据库中的数据进行查询  SELECT  
DCL	 用来控制数据库组建的存取许可,存取权限等   GRANT COMMIT ROLLBACK   一般接触不到

字段约束在这里插入图片描述

	id字段 是某一条记录的唯一标识    ID字段在数据库中一般都作为主键来使用   A表中有B表的ID  那么A表的B表ID就叫外键  

	自动增长: 如果设置这个表的id主键为自动增长,那么我们就不需要给id值,数据库会帮我们自动的将id赋值, 并且是有顺序的

数据库分解

	一个mysql服务 可以有N个数据库
	一个数据库有N张表,每张表代表其不同的含义
	一张表有N个字段,  每个字段都有其特定的描述
	用java举个例子
		User类    id / name/ age   ----->  对应数据库  ---->  User类就是一个表    id/name/age就是表中的字段

使用SQLYong/NativeCat创建表

1:表名必须小写  如果有多个单词 则用下划线进行拼接
2.我们每一个表都应该有一个id字段,用于表示这个表记录(每一条数据)的唯一性,并且这个id字段一般用于主键/非空/自增(前提:  必须是数值类型) 
3.在一个表中,尽量设置一个主键 如果在一个表中,有多个主键,则称之为联合主键
4.字段中 数值类型和字符串类型必须给定长度   日期类型是没有长度的
5.给字段起名:  单词必须小写  多个单词用_拼接
6.表名和字段名称不能使用关键字
7.在mysql表中,每一行都叫一条记录
8.mysql中的注释:  # 

插入数据

增加语法
 insert into 表名 (字段名1,字段名2,字段名3......) values (字段值1,字段值2,字段值3......);

练习:插入一个记录: id为1 ,name为张三 年龄为18

 异常: Duplicate entry '1' for key 'PRIMARY' 主键冲突  : 主键的特性是唯一的,所有我们在增加同一个id值时,报错 

Column count doesn't match value count at row 1 列值转换错误 

 insert into user (id,name,age,birthday) values (2,"李四",18,now()); 

 我们没有设定id的值 但是依然有数据, 是因为我们给这个表的id设置了自增 ,机制:  寻找上一条记录的id  这条记录的id 为上一条记录的id值 + 1
INSERT INTO USER (NAME,age,birthday) VALUES ("王五",19,NOW()); 

省略 字段名称,直接插入数据值 报错:  如果我没有给定哪个字段进行增值, 那么就是默认为这个表的全字段

示例:
INSERT INTO USER  VALUES ("王五",19,NOW()); 
INSERT INTO classes  ( class_name ) VALUES ("1班"),("2班");

查询数据

 查询语法:
 select 字段  from  表名 [where 条件]

 查询特定字段
 select name from user

 查询user表的所有记录
SELECT * 
FROM USER

 根据条件进行查询:  查询user表的数据  条件是 年龄是19岁的记录
 如果有条件查询, 那么where这个关键字必须在from的后面, where的后面就是条件
SELECT *
FROM USER
WHERE age = 19

修改数据

修改语法   update 表名 set 字段 = 新值 where 条件

UPDATE USER SET NAME = "田七" WHERE NAME = '张三'

删除数据

 删除语法
 delete from 表名 where 条件

 删除时如果没有条件则把当前的这个表的所有记录都删除了
 delete from user 

 删除姓名为王五的数据
 delete from user where name = '王五'

排序

 排序: order by 字段  DESC代表降序(从第一条记录开始,根据排序的字段值越往下越小)   ASC代表升序(从第一条记录开始, 根据排序的字段值越往下越大)

 select * from user order by age DESC

分组

 分组:  group by 字段  
 
 根据年龄分组
select * from user group by age

练习: 根据age进行排序 降序 , 根据age进行分组

我们在写SQL语句时 必须先分组 后排序

SELECT * FROM USER GROUP BY age ORDER BY age DESC

分页

 分页 
limit 值1,值2     limit代表的是执行分页  值1代表的是从这个表当中的哪个下标开始  ,  值2代表查询几条

SELECT * FROM USER LIMIT 3,2

函数

平均值函数

	 查询平均值
 语法  select avg(字段名称) from 表名  字段名称:根据哪个字段来查询他的平均值
 前提: 所查询的字段必须是数值类型
 select avg(age) from user

记录函数

记录函数 count()

 select count(字段名称) from 表名

 查询user表有多少条记录

 SELECT COUNT(id) FROM USER

最大值函数

最大值  select max(字段名称) from 表名

 查询user表中年龄最大的
SELECT MAX(age) FROM USER

最小值函数

最小值  select min(字段) from 表名
 查询user表中年龄最小的
SELECT MIN(age) FROM USER

求和函数

求和函数  select sum(字段名) from 表名
查询user表中年龄的总和
SELECT SUM(age) FROM USER

字符串函数

在这里插入图片描述

日期函数

在这里插入图片描述

数学函数

在这里插入图片描述

子查询

 需求: 现有的数据是 user->id = 8   需求查询出8这条记录所在的班级名称
 
 子查询  :  查询一张表 条件是另一张表的字段

select class_name from classes where id = (SELECT classes_id FROM USER WHERE id = 8 )

需求分析: 现有的数据是 user->id = 8   需求查询出8这条记录所在的班级名称

 我们有的数据是:  user->id = 8 那么我们能够通过这个8来查询到user所对应的记录

 思考: 我们现在查询出了这条记录 想要什么? 拿到classes_id   所在的班级名称
SELECT classes_id FROM USER WHERE id = 8 

我们现在有了班级的id,想查询班级的名称  是不是就可以根据id查询class_name呢?
SELECT classes_id FROM USER WHERE id = 8

SELECT * FROM classes WHERE id = ( SELECT classes_id FROM USER WHERE id = 6  )  # 实际上我们可以理解为:用学生的id来查询学生所在班级的记录

in查询

 in查询   in 是在....里

 需求: 在user表中 id有没有在1,2,3这些值中存在

SELECT * FROM USER WHERE id IN (1,2,5)

这是数据库一些基础知识 有误私信

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值