SQL 库操作/表操作/数据操作/表设计

库操作

  • 查看库 ---------- show databases;
  • 使用库 ---------- use 数据库名;
  • 创建库 ---------- create database 数据库名 charset = utf-8;
  • 删除库 ---------- drop database 数据库名;

表操作

  • 查看表 ---------- show tables;
  • 查看表结构 ---------- desc 表名;
  • 查看表创建语句 ---------- show create table 表名;
  • 创建表 ---------- create table 表名();
  • 修改表 ---------- alert table 表名 add/change/modify/drop 表字段名(原名/新名) 类型及约束;
  • 删除表 ---------- drop table 表名;

数据操作

  • 查询数据
    条件查询 ---------- select * from 表名 where 运算符 条件 ; -------- 运算符:= > < >= <= != and or not like % _ in between…and… is
    排序查询 ---------- select * from 表名 where … order by 字段名 desc(降)/ asc(升,默认);
    聚合函数 ---------- count(*)/max(*)/min(*)/sun(*)/avg(*)
    分组查询 ---------- select * from 表名 by 字段名 having 条件 排序查询
    分页查询 ---------- select * from 表名 limit 开始(不包含),数量 -------- 数据库id从1开始,limit 开始不包含
    连接查询 ---------- select * from 表1 inner/left/right join 表2 条件查询; -------- as
    自关联 ---------- select * from 表名 as A == inner join== 表名 as B on A.字段1 = B.字段2;
    子查询 ---------- select * from 表1 where 字段1 运算符 (select 查询语句) -------- 即条件查询中存在select查询语句,可提高查询效率
    注意:
    on ---------- inner/left/right join 时,临时表未创建完成时的条件用词;
    having ---------- 分组查询,在group by 之后使用的条件用词;
    where ---------- 对常规表的条件用词;
    综合模板
    select distinct *
    from 表名
    where …
    group by … having …
    order by …
    limit start,count

  • 增加数据 -------- insert into 表名 values(…);

  • 更新数据 --------- update 表名 set 字段1=值1,字段2=值2,… where 条件;

  • 删除数据 ---------- delete from 表名 where 条件;

表设计

  • 第一范式 ---------- 原子性,字段不可再分 -------- 错误:info “张三”,“138xxx321”,18
  • 第二范式 ---------- 必须有主键,其他字段必须完全依赖主键,不能有依赖外键的字段 -------- 错误:订单ID(主) 产品ID(外) 产品名称
  • 第三范式 -------- 不能传递依赖,和第二范式意思差不多
  • 少于500个表
  • 每张表少于30个字段
  • 主键数据类型要短,提高索引效率
  • 尽量不用外键

表对应关系

  • 一对一 ---------- 主表中有从表的id -------- 学生信息表(主)-- 学生信息详情表(从)
  • 一对多 ---------- 从表中有主表的id -------- 班级表(主)-- 学生表(从)
  • 多对多 ---------- 中间表关联 -------- 一个人有多张不同的优惠券,一个相同的优惠券很多人都有 – 中间表只有两个字段,每个字段的值都有重复

外键问题
优点:

  • 保证数据一致性和完整性
  • 在设计时可以增加ER图的可读性
  • 表现业务逻辑

缺点:

  • 高并发容易死锁
  • 不用外键,在insert, update, delete 数据的时候更快
  • 外键等于把数据的一致性事务实现,全部交给数据库服务器完成,增大压力

问题,请教大家?
order表中有gid,goods表中有gname,order表中gid不设置外键约束,使用以下语句关联查询
order表

  • orderid 主键 自增
  • gid 无外键约束

goods表

  • goodid 主键 自增

  • gname

     SELECT gname FROM goods WHERE goodid IN (SELECT gid FROM `order`);
    

请问,若设置外键约束,查询语句会有什么不同?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值