69期-Java SE-032_MySQL-3 MySQL运算符、表设计

MySQL 运算符

1、算术运算符

​        执行运算符:加减乘除

```sql
select score/10 from user where id = 3;
```

​        比较运算符:大于、等于、小于、不等于

```sql
select score != 100 from user where id = 3;
```

​        逻辑运算符:与 或 非

```sql
select score < 100 && score > 60 from user where id = 3;
```

2、特殊运算符

 is null 判断数据是否为空

```sql
select name is null from user where id = 5;
```

between and 判断值是否在某个区间之内

```sql
select name,score between 90 and 100 from user;
```

```sql
select name,score >= 90 && score <= 100 from user;
```

in 判断值是否在某个确定值的集合内

```sql
select name,score from user where id in (1,2,3);
```

```sql
select name,score from user where id = 1 or id = 2 || id = 3;
```

like 模糊查询

以"水"开头

```sql
select * from easybuy_product where name like '水%';
```

以"水"结尾

```sql
select * from easybuy_product where name like '%水';
```

包含"水"

```sql
select * from easybuy_product where name like '%水%';
```

长度为2,一个"_"表示一个长度

```sql
select * from easybuy_product where name like '__';
```

包含"水",同时长度为 3

```sql
select * from easybuy_product where name like '_水_';
```

以"水"开头,同时长度为3

```sql
select * from easybuy_product where name like '水__';
```

以"水"结尾,同时长度为3

```sql
select * from easybuy_product where name like '__水';
```



### 表设计

将某个具体的对象进行抽象化处理,分离出它的基本结构,然后用数据表的形式来描述它,一个字段用来描述一个具体的静态特征。

Computer{

id:1,

brand:"联想",

price:5000,

color:"黑色",

memory:16GB

}

主键

​    表中的一个字段,该字段的值是每一行数据的唯一标识,相当于一个人的身份证号,主键是不可以重复的,数据库区分不同的数据,可以通过主键来区分。

默认情况下,每张表都应该有一个主键,同时一张表只能有一个主键,所谓的一张表多个主键,指的是联合主键,多个字段共同作为一张表的主键。

主键的生成策略,代理主键,与业务无关,仅仅是用来标识一行数据。一般定义为 int 类型,因为 int 类型存储空间小。

```sql
use mstest;
create table user(
  id int primary key auto_increment,
  name varchar(11),
  score float
);
```

外键

​    将表中的一个字段设置为外键,与其他表的主键建立约束关系,A 表的主键约束 B 表的外键,B 表外键的取值范围需要由 A 表的主键值来决定,外键值的必须等于主键的值,主外键是建立两张数据表关联关系非常重要的一个手段,一旦两张表建立了主外键关联关系,则外键所在的表就叫做从表,约束从表的就是主表。

```sql
create table address(
  id int primary key auto_increment,
  name varchar(11),
  uid int,
  foreign key(uid) references user(id)
);
```

```sql
alter table address add uid int;
alter table address add foreign key(uid) references user(id);
```

删除外键

```sql
alter table address drop foreign key address_ibfk_1;
```



一对一:身份证号和人

一对多:班级和学生

多对多:学生和选课



一对多:

要给两张表建立一对多关系,只需要给两张表设置主外键关联关系即可,给多的一方设置外键,被一的一方的主键所约束,多的一方就是从表,一的一方就是主表,user 就是主表,address 就是 user 的从表。

```sql
select * from address where uid = (select id from user where name = "张三");     #嵌套查询
```

```sql
select * from user,address where user.name = "张三" and address.uid = user.id;    #关联查询
```
原文地址:https://www.cnblogs.com/HiJackykun/p/11160986.html