javaweb--数据库学习SQL语法、MYSQL约束

+SQL语法:

  • select 字段列表
  • from 表名列表
  • where 条件列表
  • group by 分组列表
  • having 分组之后的条件
    注意:使用having时候要保证使用的字段出现在前面的select语句之中,或者使用的是聚合函数(max,min,avg,count,sum等等)。
  • order by 排序
  • limit 分页限定(限制查询结果返回的数量)
    例子:select * from student limit 2;
    或者select * from student limit 1,2;(表示第二行开始的两行)

排序查询
*语法:order by 子句
select * from student ORDER BY math;

排序方式:
*ASC:升序,不写默认是升序
*DESC:降序
举例:select * from student ORDER BY math DESC;

插入数据:
insert into student value stu_name

聚合函数:将一列数据作为一个整体,进行纵向的计算
1.count:计算个数[SELECT count(主键) FROM 表名]
2.max:计算最大值[SELECT MAX(math) FROM student]
3.min:计算最小值[SELECT MIN(math) FROM student]
4.sum:计算和[SELECT SUM(math) FROM student]
5.avg:计算平均值[SELECT AVG(math) FROM student]

分组查询:
语法:group by 分组字段
where 和 having 的区别?
1. where 在分组之前进行限定,如果不满足条件,则不参与分组。
having在分组之后进行限定,如果不满足结果,则不会被查询出来。
2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。

使用案例:
– 按照性别分组。分别查询男、女同学的平均分,人数
SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;

– 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,
不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math < 70
GROUP BY sex HAVING COUNT(id) > 2;

GROUP BY 将分组字段结果中相同内容作为一组,并且返回每组的第一条数据,
所以单独分组没什么用处。分组的目的就是为了统计,一般分组会跟聚合函数一起使用。

分页查询:
语法:limit 开始的索引,每页查询的条数;
公式:开始的索引 = (当前的页码 -1) * 每页显示的条数

例子:------每页显示三条记录
SELECT * FROM student LIMIT 0,3;-- 第一页

MYSQL约束:

约束可以分为非空约束、主键约束、唯一约束、外键约束、默认约束。
按数据列的数目划分为:表级约束,列级约束。
== 注意:==非空约束和默认约束不存在表级约束。
PRIMARY KEY主键约束: 在表中定义一个主键来唯一确定表中每一行数据的标识符.主键保证记录的唯一性,自动为not null。
添加主键约束:ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]即主键的约束名字] PRIMARY KEY[index_type即主键];

UNIQUE KEY唯一约束: ALTER TABLE tbl_name ADD [ CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type];

FOREIGN KEY 外键约束: 保持数据一致性,完整性,实现一对一或一对多关系。
添加外键约束:ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,…)reference_definition
例子:ALTER TABLE Student ADD [CONSTRAINT [fk_id]] FOREIGN KEY sid REFERENCES id;
删除外键
格式:ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

DEFAULT KEY默认约束: 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
添加默认约束:ALTER TABLE tbl_name ALTER [COLUMN] col_name{SET DEFAULT literal|DROP DEFAULT}
例子:添加默认约束——例子
删除默认约束——例子

修改数据表

添加单列格式:
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name ];

例子如下:
在这里插入图片描述

添加多列格式:
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,…);

删除列格式:
ALTER TABLE tbl_name DROP [COLUMN] col_name

修改列定义:可用于修改列的位置,列的定义
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]

修改列名称:
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

数据表更名:
方法1:ALTER TABLE tbl_name RENAME new_tbl_name;
方法2:RENAME TABLE tbl_name TO new_tbl_name;
级联更新、删除
相关联的所有记录都更新,或者删除。(使用级联删除需谨慎,他会删除关联的一切记录。)

1、添加级联操作
语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称 (主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;
2、分类
级联更新: ON UPDATE CASCADE
级联删除: ON DELETE CASCADE

三种插入记录的方式

插入记录的格式:
INSERT INTO user values(‘ ’);
INSERT INTO user set username = ‘ ’;
INSERT INTO user SELECT…;

更新记录

更新记录(单表)的格式:
UPDATE [ LOW_PRIORITY ] [ IGNORE ] table_reference SET col_name1={expr1|DEFAULT}[, col_name2={expr2|DEFAULT}] … [WHERE where_condition]
例子:UPDATE users SET age =age + 10 WHERE id%2 = 0;

删除记录(单表)的格式:
DELETE FROM tbl_name [WHERE where_condition]
例子:DELETE FROM users WHERE id = 6;
注意:当我们删除记录的时候,再次添加数据的时候,会从已有的ID号最大的加一,而不是去补充被删除的那一条数据。

多表更新

例子格式:UPDATE tdb_goods(被更新的表) INNER JOIN tbd_goods_cates(更新所参照的表) ON goods_cate = cate_name(两个表内连接的条件) SET goods_cate = cate_id(所要设置的更新的列);

查询记录(表达式)

使用别名的时候加上关键词AS,比如:
SELECT id AS p_id,username AS un FROM student;
代替:SELECT student.id,student.usename FROM student;

子查询 连接
子查询

子查询指的是出现在其他SQL语句的SELETE语句,子查询必须要出现在小括号内。
引发子查询的三种条件
1、由比较运算符引发的
2、由IN | NOT IN运算符引发的
3、由EXIST | NOT EXIST引发的
ANY SOME ALL
这三个不是很懂?

连接

连接类型:内连接INNER JOIN、左|右外连接 LEFT|RIGHT JOIN
在MySQL中,JOIN,CROSS JOIN和INNER JOIN是等价的。
**内连接:**仅显示两个或者多个表之间符合条件的部分。
**左外连接:**左表中的全部记录和右表中的符合连接条件的记录。
**右外连接:**右表中的全部记录和左表中的符合连接条件的记录。

多表删除:相关的文章连接

运算符

函数

  1. 字符函数 如图一
  2. 数值运算符与函数 如图二
  3. 比较运算符与函数 如图三
  4. 日期时间函数 如图四
  5. 信息函数 如图五
  6. 聚合函数
  7. 加密函数

图一在这里插入图片描述
在这里插入图片描述
图二
在这里插入图片描述
图三
在这里插入图片描述

图四
在这里插入图片描述
图五
在这里插入图片描述

数据库设计的范式

概念:

  • 第一范式(1NF):每一列都是不可分割的原子数据项
  • 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
  • 第三范式(3NF):在2NF基础上,任何非主属性不依赖与其他非主属性(在2NF基础上消除传递依赖)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值