java3.1mysql(上)[ 定义 和 查询 语法 ]

一. 数据库概念

MySQL 是一个关系型数据库管理系统

1.1 术语

DataBase - 数据库

DBMS - 数据库管理系统

DBS -数据库系统

1.2 查询操作
操作名称符号说明
⭕️选择σ选择符合条件的字段
⭕️投影Π显示选中的列
连接有可比属性组的连接
÷等值连接,并且与S属于元组有组合
属于R 并且 属于S
⭕️差属于R,不属于S
⭕️并属于R 或者 属于S
⭕️笛卡尔积×列数两表相加,行数两表相乘

* 注:自然连接是在等值连接的基础上,去除重复的列。

*注:说明部分为个人理解,仅供参考

1.3 操作符⭐️
  • andor:对应 && 和 ||
  • in:用来指定条件范围,范围中的条件个数有限且明确 a in(a1,a2...)
  • between:用来指定条件范围,条件个数无限,包括开始和结束值
  • ont:用于否定给出的条件(取反)
  • is null:是否为空
  • like:匹配 a like b (用 % 表示0到多个,用 _ 表示1个字符)

例:匹配姓王的人 : select * from studen where Sname like '王%'

二. 数据库定义-DDL

不设置字符集编码(如utf8)则不支持中文

2.1 操作库
  • 增:create database 库名
  • 删:drop database 库名
  • 使用:use 库名
  • 查看所有数据库:show databases

注:可以将数据库保存到指定位置以及所在字符集

2.2 操作表
  • 查看所有表 show tables
  • 查看表的定义 show create table 表名
  • 创建表 create table 表名(...)

  • 修改表

    • 修改表名 alter table 旧表名 rename as 新表名
    • 添加字段 alter table 表名 add 字段名 字段类型
    • 删除字段 alter table 表名 drop 字段名
    • 修改字段约束 alter table 表名 modify 字段名 约束;
    • 修改字段名称 alter table 表名 change 旧字段名 新字段名 约束;

    **【区别】**modify只能修改约束,change可以修改约束和字段名

  • 删除表 drop table 表名;

2.3 列类型
  • 数值:int、float、double、decimal(金融等高精度适用)
  • 字符:char、varchar、text
  • 日期:datatime(YY-MM-DD HH-mm-ss)、timestamp(时间戳)
  • null
2.4 完整性约束⭐️

2.4.1 实体完整性

主键约束:primary key

2.4.2 参照完整性

外键约束:foreign key(列名) references 表名(列名)

2.4.1 用户自定义完整性

非空:not null

唯一:unique

检查:check 例check(Ssex in('男','女'))

默认值:default

备注:comment

三. 数据库操作-DML⭐️

数据库的意义:数据存储、数据管理

3.1添加

格式:insert into 表名(字段名) values(1列数据),(2列数据)

--不指定列名
mysql> insert into `demo01` values('李四',1002,'男');
--指定列名
mysql> insert into `demo01`(`name`,`id`) values('孙五',1003);
--同时插入多行
mysql> insert into `demo01` values('灵六',1006,'男'),('灵七',1007,'女');

注:表名后面不指定列名时,需按顺序依次填入值

3.2 修改

格式:update 表名 set 修改目标 where 判断条件;

3.3 删除

格式:delete from 表名 where 删除条件;

四. 数据库查询-DQL⭐️

4.1 指定查询字段

【格式】:

select <目标列> from <表名>
[inner join <联合的表> on <比对属性表达式>]
[where <条件表达式>]
[group by <列名> having <条件表达式>]
[order by <列名> [asc|desc]]
[limit 起始行,pagesize]
  1. 选择全部列可用通配符 * 替代

  2. 为表或列起别名,使用 AS 关键字 select * from table as T

  3. 需按【格式】中的顺序使用条件语句

4.2 联表查询

等值连接 inner join

select <目标列>
from tableA as a
inner join tableB as b
on a.key = b.key

左连接 left join:返回左表所有的值,右表无匹配则为null

右连接 right join:返回右表所有的值,左表无匹配则为null

自连接(了解):一张表拆成两张,自己连接自己

自连接例:

select a.'tname',b.'tname'
from tabe as a,tabe as b
where a.'sonid' = b.'faderid'
4.3 分组、排序、分页

分组 group by <列名> having <条件表达式>

一般和sum、max、avg等聚合函数一起使用

select r.studentno,s.studentname,sum(studentresult) as '总分'
from result r
inner join student s
on r.studentno = s.studentno
group by r.studentno

排序 order by [asc|desc]

例:order by <列名> asc

分页 limit

页面大小(行数):pageSize

单前页:n

起始参数值:(n-1)*pageSize

总页数:总行数/pageSize(向下取值)

4.4 子/嵌套查询

查询语句条件中嵌套另一个查询语句

例:任意科目分数大于90分的学生信息

select * from student
where studentno in(
	select studentno from result
	where score > 90
)
4.5 函数
函数描述参数
count()计算行数任意列、*、1
sum()求和/
avg()平均值/
max()\min()最大值\最小值/
distinct去重/
MD5()加密密码列表

*注:经过加密的元素在数据库中以密文形式显示,相同的值多次加密密文相同

SELECT * FROM pass
WHERE users=3001 AND `password`=MD5(123456)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值