Java之数据库表关系的创建和查询

一.查询语句

1.查询去重信息:关键字 distinct

SELECT DISTINCT 去重的字段名,需要查询的信息字段名 FROM 表名;

2.两值相加时的判断条件IFNULL

查询两值之和, 两列值相加并且组成一个新的字段,一个值和null相加,只能返回null
所以要用到判断语句IFNULL(参数1,参数2); 如果在此值是空,就用0代替,放在参数2.
代码:
SELECT
	字段名1,
	字段名2 + IFNULL(字段名3, 0)
FROM
	表名;
注意:字段名3是需要判断的字段

3.给查询的字段起别名 关键词AS 可以省略

SELECT
	字段名1,
	字段名2 + IFNULL(字段名3, 0) AS 新取的字段名
FROM
	表名;
  1. 查询表记录,按某一字段升序排序
 排序 关键词 order by 升序默认asc
排序 关键词 ORDER BY 排序的字段名 DESC     降序desc (查询字段取名的AS省略)
升序格式:
SELECT
	*
FROM
	表名
ORDER BY
	排序规则的字段名 ASC;
降序格式:
SELECT
	*
FROM
	表名
ORDER BY
	排序规则的字段名 DESC;

查询所有信息,按字段1降序排序,如果字段1相同时,按字段2升序排序
解题格式:
SELECT
	*
FROM
	e表名
ORDER BY
	字段1名 DESC,
	字段2名 ASC;
注意:默认ASC可省略

5.聚合函数 sum avg max min count(总记录数)
可以自动去除空值

格式:
SELECT
	COUNT(规则字段名1),
	COUNT(规则字段名2)
## 注意:查询时,要保证查询的字段记录数对等
FROM
	表名
WHERE
	条件;
其他四个和count用法一致.

6.分组查询 GROUP BY
按什么分组,前面查询的字段就是什么,为了保证查询结果数量对等

格式:
SELECT
	SUM(规则字段名),
	分组条件
FROM
	表名
GROUP BY
	分组条件;

7.where条件和关键字having
where条件要加在group by之前;
注意:

  • 1.where后面不能使用聚合函数
  • 2.分组之后,如果要使用添加筛选条件需要使用 Having关键词
  • 3.having后边可以使用聚合函数
  • 4.where条件是在分组之前进行筛选(即在group by之前)
  • 5.Having条件是在分组之后进行筛选(即在group by之后)
where格式:
SELECT
	COUNT(*),
	分组条件
FROM
	表名
WHERE
	条件
GROUP BY
	分组条件;
having格式:
SELECT
	SUM(sal),
	分组条件
FROM
	表名
GROUP BY
	分组条件
HAVING
	SUM(字段名) > 9000;

8.分页查询 关键词 limit(mysql方言)

  • limit 从第几条开始显示的数据,一共显示多少条数据
    limit 0,3;
   limit 3,3;
  • 从第0条数据开始显示;
  • limit关键词 要在所有的条件之后写
格式:
SELECT * FROM 表名 LIMIT 0,显示条数;
SELECT * FROM 表名 LIMIT 1*显示条数,显示条数;
SELECT * FROM 表名 LIMIT 2*显示条数,显示条数;
..............

9.模糊查询 关键词 like
使用占位符: %(多个字符), _(一个下划线表示一个字符).

常用:%条件%
%条件:以什么条件结束的;
条件%:以什么条件开始的;
SELECT * FROM 表名 WHERE 字段名 LIKE '%条件%';

二.数据完整性

  • 数据完整性(保证用户插入的数据有效)
  • 引用完整性(多张表依赖的关系,单表不存在此完整性)
  • 域完整性(一个单元格的完整性)
  • 实体完整性(保证一条数据局的完整性)
  • 主键(唯一且不能为空) 精准删除
  • 唯一键(唯一的 但是可以是空)
  • 主键自增
    1.设置主键的三种方式:
    关键字 PRIMARY KEY
方式一:
CREATE TABLE 表名(
	字段1 字段类型 PRIMARY KEY,
	字段2 字段类型,
	字段3 字段类型 
);
方式二:在最后指定主键
CREATE TABLE 表名(
	字段1 字段类型,
	字段2 字段类型,
	字段3 字段类型 ,
	PRIMARY KEY (指定字段名)
);
此方式可以创建联合主键(用两个字段 同时当主键)
注意:联合主键都相同才算重复
CREATE TABLE 表名(
	字段1 字段类型,
	字段2 字段类型,
	字段3 字段类型 ,
	PRIMARY KEY (指定字段名1,指定字段名2)
);
方式三:
CREATE TABLE 表名(
	字段1 字段类型,
	字段2 字段类型
);
## 添加主键约束 关键词constraint
ALTER TABLE 表名 ADD CONSTRAINT PRIMARY KEY (指定字段名);

2.#删除主键约束 注意:删除主键不用约束 关键词

ALTER TABLE 表名 DROP PRIMARY KEY;

3.唯一键约束 关键词 unique

格式:
CREATE TABLE 表名(
	字段名1 字段类型 PRIMARY KEY,
	字段名2 字段类型  UNIQUE
);

4.主键自增 关键词 auto_increment

格式:
CREATE TABLE 表名(
	字段名1 字段类型 PRIMARY KEY auto_increment ,
	字段名2 字段类型  UNIQUE
);

注意:主键只能自增,删除了也不会倒退(即删除之后,再添加会接着自增).
插入时,可以给null,让他自己自增.
5.域完整性:
not null(非空)
default(默认值)
字段类型
注意:有默认值约束时,直接插入空可以,
要使用默认值,可以不插入该默认字段(和主键不同)

格式:
CREATE TABLE 表名(
	字段名1 字段类型 PRIMARY KEY auto_increment,
	字段名2 字段类型 NOT NULL,
	性别 varchar(50) DEFAULT '男'
);

6. 引用完整性(参照物约束)
表和表之间的关系

  • 一对一(罕见) 一对多 多对多(常用)
  • 学生表(主) 和分数表(从) (可以通过外键来建立两张表之间的关系)
    建立外键的方式
 建立外键的方式1:明确外键是在从表中,
外键别名规范: fk_主表名_从表名_字段名.


格式:CONSTRAINT 外键别名 FOREIGN KEY (从表中的字段) REFERENCES 主表名 (主表中关联的字段)

例如:
主表创建:
CREATE TABLE student(
	sid INT PRIMARY key,
	snamme VARCHAR(50)
);
从表创建:
CREATE TABLE score(
	sid INT,
	score INT,
	CONSTRAINT fk_student_score_sid
	FOREIGN KEY (sid) REFERENCES student (sid)
);

 建立外键的方式2
 主表:
CREATE TABLE student1(
	sid INT PRIMARY key,
	snamme VARCHAR(50)
);
从表:
CREATE TABLE score1(
	sid INT,
	score INT
);
 添加外键约束
ALTER TABLE score1 ADD CONSTRAINT fk_student1_score1_sid 
FOREIGN KEY (sid) REFERENCES student1 (sid);

删除外键(一个表中可能有多个外键)

ALTER TABLE score1 DROP FOREIGN KEY fk_student1_score1_sid;

多对多关系

## 老师表和学生表
CREATE TABLE teacher(
	tid INT PRIMARY KEY,
	tname VARCHAR(50)
);
CREATE TABLE studentx(
	sid INT PRIMARY KEY,
	sname VARCHAR(50)
);
## 中间表
CREATE TABLE teacher_studentx(
	tid INT,
	sid INT
);
## 添加外键(多对多关系,外键在中间表中)
ALTER TABLE teacher_studentx ADD CONSTRAINT fk_teacher_studentX_tid FOREIGN KEY
(tid) REFERENCES teacher (tid);
ALTER TABLE teacher_studentx ADD CONSTRAINT fk_teacher_studentX_sid FOREIGN KEY
(sid) REFERENCES studentx (sid);

猜你喜欢

转载自blog.csdn.net/KongLingLei_08225/article/details/82873081