mysql数据库的使用。增删改查

一、数据库的分类

可分为关系型数据库(SQL),和 非关系型数据库(noSQL)

非关系型数据库(noSQL):

数据库不需要固定的表结构,通常也不存在关联关系,但在互联网大数据存取上具有关系型数据库无法比拟的性能优势。目前非关系型数据库仍然没有统一的标准,大概分为两类

a) 键值存储型数据库;主要通过key来添加、删除、查询数据,优点高性能,易用、高并发。典型产品:Redis

b) 面向文档型数据库; 类似于json,比键值存储型数据库查询效率稍高,允许嵌套键值。典型产品:MongoDB

二、数据库基本概念

数据(data):数据库中存储的基本对象,是描述事物的记录(文字、图片、声音、视频....)

数据库(database):存储在计算机内的大量的、有组织的、可分享的数据集合。

数据库管理系统(DBMS):可以方便的组织管理、获取、维护数据的软件。

数据库系统(DBS):是一个总称,包含数据库、应用软件、管理员、用户。例xx学生管理系统。

数据库设计基本概念:

实体:现实世界中存在可以相互区分的事物。例如:某个个体,某个公司

实体集:同类型的实体的集合。例如:学生,公司,比亚迪汽车

属性:描述实体的特征。例如:姓名,身份证号,性别,籍贯、体重、血型。。。。

键:唯一区分实体的属性。例如:身份证号,DNA,指纹,...

主键:数据库中使用的,用于唯一区分实体的属性。例如:身份证号,唯一不重复的id

三、实体之间的关系

一对一关系:在实体集A中有唯一一条记录与实体集B中的记录相对应,反之亦然,则称实体集A与B为一对一关系。例:班级与班长,丈夫与妻子

一对多关系:在实体集A中有多条记录与实体集B中的记录相对应,反之实体集B中只能有一条记录与实体集A中的记录对应,称为一对多关系。例如:母亲与子女、省与城市

多对多关系:在实体集A中每条记录与实体集B中有多条记录相对应,反之亦然,则称实体集A与B为多对多关系。例如:医生与病人

四、MySQL中的数据类型

mysql数据库的数据类型

类型 大小 用途

CHAR 0-255字节 定长字符串,只能存储数字、英文

VARCHAR 0-65535 字节 变长字符串,可存储汉字

TINYTEXT 0-255字节 短文本字符串

TEXT 0-65535字节 长文本数据

MEDIUMTEXT 0-16 777 215字节 中等长度文本数据

LONGTEXT 0-4 294 967 295字节 极大文本数据

整数类型 字节 范围(有符号) 范围(无符号) 用途

TINYINT 1字节 (-128,127) (0~255) 小整数值

SMALLINT 2字节 (-32 768,32 767) (0~65 535) 大整数值

INT或INTEGER 4字节 大整数值

BIGINT 8字节 极大整数值

FLOAT 4字节 单精度浮点数值

DOUBLE 8字节 双精度浮点数值

AUTO_INCREMENT(自动递增)

每次插入一条新数据时,自动的创建主键字段的值。它的开始值是1,每条新纪录自动加1;

五、SQL语言

新增数据(插入记录):语法:INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2, ....)

修改数据:语法: UPDATE 表名 SET 字段1=值1,字段2=值2, ... WHERE 条件

删除记录:语法:DELETE FORM 表名 WHERE 条件

查询数据:语法:SELECT 字段1 AS 别名1,字段2 AS 别名2, ... FROM 表名

子句:WHERE 条件1=条件2 (= != >= <= > <) AND 条件3 OR 条件4 NOT 条件5

模糊查询 WHERE 字段 LIKE '%内容%'

例: 姓名 LIKE '张%' 查询所有姓张的姓名

姓名 LIKE '%张' 查询所有以张结尾的姓名

姓名 LIKE '%张%' 查询所有包含张字的姓名

NOT 姓名 LIKE '张%' 查询所有不姓张的姓名

查询结果排序(放在sql最后): ORDER BY 字段名 DESC/ASC (降序/升序, asc为默认值)

查询结果分组 ( 放在sql查询条件后面): GROUP BY 字段名

六、统计函数

1) avg() 求平均数 sum() 求和 count() 统计

2) min() 求最小值 max() 最大值

七、多表联合查询

1) 两表联合内连接

语法: SELECT 表1.字段1,表2.字段1,.... FROM 表1 INNER JOIN 表2 ON 表1.连接字段=表2.连接字段

2) 两表联合左连接。以左为大,左边的表为主表,右边为从表,主表的记录优先全部显示。假如从表中没有对应记录则以null填充。

3) 多表联合

eg:SELECT 学生.学号,学生.姓名,课程.课程名,成绩.成绩

FROM 成绩

INNER JOIN 学生 ON 成绩.学号 =学生.学号

INNER JOIN 课程 ON 成绩.课程编号 =课程.id

WHERE 学生.学号 = 'B0001'

八、例子:

表名和内容如下图:

题目及答案:

--1:查询学生的学号与姓名。

select 学号,姓名 from 学生表

--2:查询全体学生的记录。

select * from 学生表

--3:查询全体学生的姓名及出生年份。

select 姓名,2008-年龄 from 学生表

--4:查询计算机系全体学生的姓名。

select 姓名 from 学生表 where 所在系='计算机系'

--5:查询所有学生年龄在20岁以下的学生的姓名和年龄。

select 姓名,年龄 from 学生表 where 年龄<20

--6:查询年龄在20~23之间的学生的姓名、所在系、和年龄。

select 姓名,年龄,所在系 from 学生表 where 年龄 between 20 and 23

--7:查询年龄不在20~23之间的学生的姓名、所在系、和年龄。

select 姓名,年龄,所在系 from 学生表 where 年龄 not between 20 and 23

--8:查询姓“张”的学生的详细信息。

select * from 学生表 where 姓名 like'张%'

--9:查询学生表中姓“张”,“李”,“刘”的学生的情况。

select * from 学生表 where 姓名 like'张%' or 姓名 like‘李%’ or 姓名 like '刘%'

--10:查询学生表中不姓“刘”的学生的情况。

select * from 学生表 where 姓名 not like'刘%'

--11:将学生按年龄升序排序。

select * from 学生表 order by 年龄

--12:查询选修了课程“C02”的学生的学号及其成绩,查询结果按成绩降序排列。

select 学号,成绩 from 成绩表 where 课程号='c02' order by 成绩 desc

--13:查询全体学生的信息,查询结果按所在系的的系名升序排序,同一个系的学生按年龄降序排列。

select * from 学生表 order by 所在系,年龄 desc

--14:统计学生总人数。

select count(*) from 学生表

--15:计算学号为9512101的学生考试总成绩。

select sum(成绩) from 成绩表 where 学号='9512101'

--16:计算课程“c01”的学生的考试平均成绩。

select avg(成绩) from 成绩表 where 课程号='c01'

--17:查询选修了“c01”的学生的最高分和最低分。

select max(成绩), min(成绩) from 成绩表 where 课程号='c01'

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值