Mysql基础学习笔记

sql语句分类

  • DDL(数据定义语句)
  • DML(数据操纵语句)
  • DCL(数据控制语句)
  • DQL(数据查询语句)

数据库操作

  • 创建表:
    create database db_name character set utf8;
  • 显示所有数据库
    show databases;
  • 显示数据库创建语句
    show create database db_name;
  • 删除数据库语句
    drop database db_name;
  • 切换数据库
    use db_name;
  • 查看当前数据库名称
    select database();

表结构的操作

  • 创建表
    create table table_name(
    列名1 列类型(长度) 约束,
    列名2 列类型(长度) 约束
    );
    约束:
    主键约束: primary key
    唯一约束:unique
    非空约束:not null

  • 删除表
    drop table 表名

  • 添加列
    alter table 表名 add 列名 列类型 约束
  • 修改列
    alter table 表名 modify 列名 列类型 约束
  • 修改列名
    alter table 表名 change 旧列名 新列名 列类型 列约束
  • 删除列
    alter table 表名 drop 列名
  • 修改表名
    rename table 旧表名 to 新的表名

  • 查看当前数据库所有表名
    show tables
  • 查看表的定义结构
    show create table
  • 查看表的结构
    desc 表名

表内容的操作

  • 插入数据
    insert into 表名(列名1,列名2)values(值1,值2)
    insert into 表名 values(值1,值2,...)
  • 批量插入
    insert into 表名 values (值1,值2)(值1,值2)(值1,值2)

  • 删除数据
    delete from 表名(where 条件)
    truncate table 表名【先删除表,再重建表】

  • 更新数据
    update 表名 set 列名 = 值,列名 = 值 (where 条件)

  • 通用格式
    S F W G H O
  • 模糊查询
    _表示单字符,%表示多字符
  • 聚合函数
    sum(),avg(),count(),max(),min(),
  • 排序
    order by asc (升序)(ascend)
    order by desc(降序)(descend)
  • 别名
    as
  • 在范围内
    in

多表创建及查询

  • 多表之间关系维护
    外键约束(foreign key)

通常情况下,一个项目/应用建一个数据库

  • 多表之间的建表原则
    一对多:
    多的一方添加外键
    多对多:
    建立一张中间表,至少两个外键
    一对一:
    当作是一对多情况处理,在任意一张表添加一个外键,并且这个外键要唯一,指向另外一张表
  • 添加一个外键
    alter table 表1 add foreign key(cno) references 表2(cid);
    删除的时候, 先删除外键关联的所有数据,再才能删除分类的数据
  • 主键约束: 默认就是不能为空, 唯一
  1. 外键都是指向另外一张表的主键
  2. 主键一张表只能有一个
  • 唯一约束: 列里面的内容, 必须是唯一, 不能出现重复情况, 为空
  1. 唯一约束不可以作为其它表的外键
  2. 可以有多个唯一约束

多表查询

  • 交叉连接查询 笛卡尔积
    两表相乘,没什么实际意义

  • 内连接查询
    隐式内链接
    SELECT * FROM product p,category c WHERE p.cno=c.cid;
    -- 显示内链接
    SELECT * FROM product p INNER JOIN category c ON p.cno=c.cid;
    -- 区别:
    隐式内链接: 在查询出结果的基础上去做的WHERE条件过滤
    显示内链接: 带着条件去查询结果, 执行效率要高

  • 左外连接
    左外连接,会将左表中的所有数据都查询出来, 如果右表中没有对应的数据,用NULL代替
    SELECT * FROM product p LEFT OUTER JOIN category c ON p.cno=c.cid;

  • 右外连接
    会将右表所有数据都查询出来, 如果左表没有对应数据的话, 用NULL代替

    SELECT * FROM product p RIGHT OUTER JOIN category c ON p.cno=c.cid;

分页查询

  • 每页数据数据3
  • 起始索引从0
  • 第1页: 0
  • 第2页: 3
    起始索引: index 代表显示第几页
    页数从1开始
    每页显示3条数据
    startIndex = (index-1)*3

第一个参数是索引
第二个参数显示的个数

select * from product limit 0,3;
select * from product limit 3,3;

子查询

SELECT pname ,(SELECT cname FROM category c WHERE p.cno=c.cid ) AS 商品分类名称 FROM product p;

Mysql性能调优:
https://searchdatabase.techtarget.com.cn/7-18321/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值