MySQL基础

数据库

Database(简称DB)
按照一定的数据结构来组织、存储和管理数据的仓库。
存储货物的地方,我们叫做仓库。存储数据的地方,我们叫数据库

SQL

SQL(Structured Query Language),结构化的查询语言。
它是一种在操作关系型数据库的编程语言,定义了一套操作关系型数据库统一SQL标准。

关系型数据库

ps:以后会有非关系型

关系型数据库:有多张相互链接的二维表组成的数据库,就像Excel一样,有行和列组成的二维表。

特点:

  • 使用表存储数据,格式统一,便于维护
  • 使用SQL语句操作,标准统一,使用方便
  • 数据存储在磁盘,安全

代表:

  • Mysql
  • Oracle

MySQL概述

MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它是最流行的开源数据库之一。MySQL由瑞典的MySQL AB公司开发,后来被sun收购,最终被Oracle收购。MySQL以其开源免费、简单易用、高性能和可靠性而闻名。

数据库操作

1 连接数据库

  • 打开navicate请添加图片描述

  • 点击连接

  • 选择Mysql

  • 填写数据库连接信息

  • 确认连接(连接前也可以测试连接)

2 创建数据库

在这里插入图片描述

  • 选择数据库
  • 右键选择新建数据库
  • 填写数据库名,字符集,排序规则

创建表

1 数据类型

  • 数字
类型大小描述
TINYINT1 byte小整数值
INT或INTEGER4 bytes整数值
FLOAT4 bytes单精度浮点数值
DECIMAL
  • 字符串
类型大小描述
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TEXT0-65 535 bytes长文本数据
  • 日期类型
类型格式描述
DATEYYYY-MM-DD日期值
TIMEHH:MM:SS时间值或持续时间
YEARYYYY年份值
DATETIMEYYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMPYYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳

2 创建表

在这里插入图片描述

  • 打开数据库,右键表–新建表
  • 填写字段名,类型,长度等信息

3 删除表

  • 想要删除表该怎么办呢?我们直接删除就可以啦

SQL通用语法

  • SQL语句可以单行或多行书写,以分号结尾。
  • SQL语句可以使用空格/缩进来增强语句的可读性
  • 注释
    • 单行注释:-- 注释内容 或 # 注释内容
    • 多行注释: /* 注释内容 */

表操作

1添加数据(INSERT)

# 给指定字段添加数据
	insert into 表名 (字段1,字段2...) values (值1,值2...);
# 给全部字段添加数据
	insert into 表名 values (值1,值2...);
# 批量添加数据
	insert into 表名 (字段1,字段2...) values (值1,值2...),(值1,值2...),(值1,值2...);
	insert into 表名  values (值1,值2...),(值1,值2...),(值1,值2...);

2 修改数据(UPDATE)

update 表名 set 字段1=值1, 字段2=值2,...[where 条件]

修改语句的条件可以有,也可以没有,如果没有条件就会修改整张表的所有数据。

3删除数据(DELETE)

delete from 表名 [where 条件]

DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

条件(where)

sql语句中,where后面跟条件

# 运算符
	=、!=、<>、<、<=、>、>=
# 关键字
	BETWEEN...AND、IN(SET)、IS NULL、AND、OR、NOT

基本查询

 select 字段列表 from  表名
	select * from person 
	SELECT id,name,age,sex,favourite from person

条件查询

 用where表示查询的条件
	SELECT id,name,age ,sex ,favourite  from person where id BETWEEN 1 and 10
	SELECT id,name,age ,sex ,favourite  from person where  id>5 and sex='男'   
	SELECT id,name,age ,sex ,favourite  from person where  id>5 or sex='男'    
%匹配0或多个字符,一般不用左模糊(%放在左边,导致索引失效,会降低查询效率但是是对百万级数据)
	SELECT id,name,age ,sex ,favourite  from person where name like '%辰
 _代表匹配一个字符
	SELECT id,name,age ,sex ,favourite  from person where name like '_辰'
	SELECT id,name,age ,sex ,favourite  from person where name like '%辰%'

分页查询

 语法 limit 起始索引,个数
 分页查询第m页,每页展示n 条数据 limit (m-1)*n, n 
SELECT id,name,age ,sex ,favourite  from person limit 0,5
SELECT id,name,age ,sex ,favourite  from person limit 5,5
SELECT id,name,age ,sex ,favourite  from person limit 10,5

排序

 排序 order by 字段名   		ASC 升序,DESC降序
	SELECT id,name,age ,sex ,favourite from person ORDER BY age ASC;
	SELECT id,name,age ,sex ,favourite from person ORDER BY age DESC;

聚合函数

	 聚合函数  count()   sum()  avg()   max()  min()
    select count(0) from person   查询数据总数
    select sum(age) from person 		求和
    select avg(age) from person 		平均
    select min(age) from person 		最大值
    select max(age) from person 		最小值

分组查询

 分组查询  group by 字段
	SELECT  sex,count(0),avg(age) from person GROUP BY sex;

 having条件查询  where分组前,having分组后的条件
	SELECT  sex,count(0),avg(age) from person where age>8 GROUP BY sex  having avg(age)>20;

子查询

	把查询到的结果当作另一个查询的条件,也可以把查询到的结果作为表来用,但是需要给表起别名
	SELECT id,name,age ,sex ,favourite  from person where id in (SELECT pid from dept where name='人事部')

数据字典表

就是只有id和名字,可以帮助我们查询到其它表单(类似于部门表,分类表)

表与表之间的关系

一对一

一对多

多对一

多对多

内连接

 显示内连接 inner可以省略
	select * from person INNER JOIN dept on person.id=dept.pid
	select * from person  JOIN dept on person.id=dept.pid
	select p.id,p.name,age,sex,favourite,birth,d.id deptid,d.name deptname,pid from person p  JOIN dept d on p.id=d.pid

 隐式内连接
	select * from person,dept where person.id=dept.pid

注意:也可以给表名起别名,如果两个表中有相同的字段名称,那么需要用别名+点号来区别,否则报错。

外连接

左外连接 left [outer] join 主表在左从表在右
	select p.id,p.name,age,sex,favourite,birth,d.id  部门id,d.name as deptname,pid from person p left outer join dept d on p.id=d.pid
	select p.id,p.name,age,sex,favourite,birth,d.id  部门id,d.name as deptname,pid from person p left  join dept d on p.id=d.pid
右外连接 right [outer] join 主表在右表在左
	select p.id,p.name,age,sex,favourite,birth,d.id  部门id,d.name as deptname,pid from person p right outer join dept d on p.id=d.pid
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值