mysql 的常用sql
1. 新建索引
alter table 'tab_yyy' add index 'IDX_Tab_ID'('id') using btree;
2.表中新增字段
alter table 'table_xxx' add column 'id_customer' varchar(32) null comment '客户id' after 'id_task';
3. 新建表结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | create table 'tab_sss'( 'id' vachar(255) character set utf8 not null comment '主键', 'task_id' vachar(32) character set utf8 default null comment '任务Id', 'pay_amount' decimal(10,2) default null comment '支付金额', 'created_by' vachar(100) character set utf8 not null default 'system' comment '创建人', 'created_date' datetime not null default current_timestamp comment '创建时间', 'updated_date' datetime not null default current_timestamp on update current_timestamp comment '更新时间', primary key ('id'), key 'IDX_task_id'('task_id') ) ENGINE = InnoDB DEFAULT CHARSET=UTF8 COLLATE=utf8_bin comment='操作记录表'; |
4. where 和 having 的区别?
-- 按照性别分组, 分别查询男、女同学的平均分、人数;
要求: 分数低于70分的人, 不参与分组
select sex, AVG(math), count(id) from student where math > 70 group by sex having count(id) > 2;
数据库设计
1. 多表之间的关系
a. 分类
(1)一对一
如:人和身份证
(2)一对多(多对一)
如: 部门和员工 : 一个部门有多个员工, 一个员工只能对应一个部门
(3)多对多
如: 学生和课程: 一个学生可以选择多门课程, 一个课程也可以被多个学生选择
b. 实现关系
(1) 一对多(多对一)
如: 部门和员工
实现方式: 在多的一方建立外键, 指向一的一方的主键
(2) 多对多
如: 学生和课程
实现方式:多对多关系实现需要借助第三张中间表;中间表至少包含两个字段, 这两个字段作为第三张表的外键, 分别指向两张表的主键
(3) 一对一
如: 人和身份证
实现方式:一对一的关系实现, 可以在任意的一方添加唯一外键(unique)指向另一方的主键
c. 多对多的案例分析
旅游线路分类、旅游线路、用户
分析表之间的关系:
创建表结构:
1. 旅游线路分类表: tab_category
--cid : 旅游线路分类主键,自动增长
--cname: 旅游线路分类名称, 非空,唯一,字符串100
create table tab_category (
cid int primary key auto_increment,
cname varchar(100) not null unique
)
2. 旅游线路表: tab_route
-- rid : 旅游线路主键,自动增长
-- rname : 旅游线路名称, 非空,唯一,字符串100
-- price : 价格
-- rDate : 上架时间, 日期类型
-- cid : 外键, 所属分类
create table tab_route(
rid int primary key auto_increment,
rname varchar(100) not null unique,
price Double,
rDate Date,
cid int ,
foreign key (cid) references tab_categroy(cid)
)
3. 用户表: tab_user
-- uid: 用户主键,自动增长
-- username : 用户名称, 非空,唯一,字符串100
-- password : 密码, 字符串长度300, 非空
-- name: 真实姓名
-- birthday : 生日
-- sex : 性别
-- telephone : 手机号
-- email : 邮箱, 字符串长度100
create table tab_user(
uid int primary key auto_increment,
username varchar(100) not null unique,
password varchar(300) not null,
name varchar(300),
birthday Date,
sex int ,
telephone varchar(11),
email varchar(100)
foreign key (cid) references tab_categroy(cid)
)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!