Mysql知识点

Mysql知识点

枚举类型与集合类型

字段的值只能在给定范围中选择,如单选框,多选框

enum 单选,只能在给定范围内选一个值,如性别 男/女

set 多选,能在给定范围内选多个值,(爱好1,爱好2,爱好3)

如果输入的不是给定范围内的值,则显示为空

create table consumer(
    id int,
    name char(16),
    sex enum('male','female','other'),
    level enum('vip1','vip2','vip3'),
    hobbies set('play','music','read','run')
);
​
​
insert into consumer values
(1,'egon','male','vip2','music,read');
​
insert into consumer values
(1,'egon','xxxxx','vip2','music,read');

约束条件

not null非空,default默认值。*

create table t16(
    id int,
    name char(6),
    sex enum('male','female') not null default 'male'
);
​

unique key 唯一键

单列唯一

#方式一 直接在列后面加上unique,
    create table department(
        id int unique,
        name char(10) unique
    );
​
#方式二: 单独列出来
    create table department(
        id int,
        name char(10),
        unique(id),
        unique(name)
    );

联合唯一

# 联合唯一 两个字段合起来才算唯一
create table services(
    id int,
    ip char(15),
    port int,
    unique(id),
    unique(ip,port)
);

primary key (主键)不为空且唯一,是innodb的一种独特的特性

存储引擎(innodb):对于innodb存储区域来说,一张表内必须有一个主键。如果没有设置,数据库自动找一个不为空且唯一的字段设置为主键,都没有就设置一个隐式主键(为了确保数据表的连接性)。

# 单列主键
create table t17(
    id int primary key,
    name char(16)
);
# 复合主键
create table t19(
    ip char(15),
    port int,
    primary key(ip,port)
);

auto_increment自增 设置直接自增必须是字段为key,如unique,primary key

create table t20(
    id int primary key auto_increment,
    name char(16)
);

foreign key:建立表之间的关系

#1、建立表关系:
    #先建被关联的表,并且保证被关联的字段唯一
    create table dep(
        id int primary key,
        name char(16),
        comment char(50)
    );
​
​
    #再建立关联的表
    create table emp(
        id int primary key,
        name char(10),
        sex enum('male','female'),
        dep_id int,
        foreign key(dep_id) references dep(id)  # 在emp表中创建一个外键约束,该约束将当前表中的 dep_id 列作为外键,参考dep表中的 id 列
        on delete cascade  # 当在关联表(父表)中删除一条记录时,具有 ON DELETE CASCADE 的外键约束将自动删除在当前表(子表)中与之关联的所有记录
        on update cascade  # 当在关联表中更新主键时,有 ON UPDATE CASCADE 的外键约束将自动更新当前表中的外键值,以保持关联的一致性。
    );
​

表之间存在的关系:1对多,多对对,1对1

1对多就是用foreign外键

多对多需要再创建一个表来存放两个表之间的关系

1对1:外键字段需要加上unique唯一

数据的增删改查

insert into 表名(字段1,字段2) values(值1,值2)  # 语法一,部分字段传值
insert into 表面 values(值)  # 语法二,插入完整数据
​
# 需要修改或更新 MySQL 中的数据,我们可以使用 UPDATE 命令来操作
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
/*table_name 是你要更新数据的表的名称。
column1, column2, ... 是你要更新的列的名称。
value1, value2, ... 是新的值,用于替换旧的值。
WHERE condition 是一个可选的子句,用于指定更新的行。如果省略 WHERE 子句,将更新表中的所有行。*/
​
# DELETE FROM 命令来删除 MySQL 数据表中的记录。
DELETE FROM table_name
WHERE condition;
/*table_name 是你要删除数据的表的名称。
WHERE condition 是一个可选的子句,用于指定删除的行。如果省略 WHERE 子句,将删除表中的所有行。*/
​
简单查询
# 避免重复DISTINCT
select distinct post from employee;
# 查找的值进行四则运算
select name,salary*12 as annual_salary from employee;  # as 将得到的值取别名
# 定义显示格式
concat() 用于连接字符串
select concat('name:',name,'薪水:',salary*12) as annual_salary from employee;
Where约束
where语句中可以使用:
1.比较运算符:> < >= <= !=
2.between 80 and 100 值在10到20之间
3.in(80,90,100) 值是80或90或100
4.like 'egon%'
 pattern可以是%或_
 %表示任意多个个字符
 _表示一个字符
5.逻辑运算符:可以在多个条件间使用逻辑运算符 and or not
group by分组
SELECT column1, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1;
/*column1:指定分组的列。
aggregate_function(column2):对分组后的每个组执行的聚合函数。
table_name:要查询的表名。
condition:可选,用于筛选结果的条件。

注意事项:
GROUP BY 子句通常与聚合函数一起使用,因为分组后需要对每个组进行聚合操作。
SELECT 子句中的列通常要么是分组列,要么是聚合函数的参数。
可以使用多个列进行分组,只需在 GROUP BY 子句中用逗号分隔列名即可。
group concat */


having:用于group by分组后进行过滤

查询的语法顺序:

select distinct 字段1,字段2,字段3 from 库.表

where 条件

group by 分组

having 过滤

order by 排序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值