Java 小白的第25课一一Mysql数据库基础2

常见的SQL

1.数据定义语言DDL

1.1 创建(create)

  • 建库Create database 库名;
  • 建表create table 表名(定义表内容);
  • 定义表节结:
create Table 表名(
    列字段1 数据类型(长度) 限制条件,
    列字段2 数据类型(长度) 限制条件,
    ...
    -- 设置主键
    primary Key(列字段1,列字段n);
    -- 设置外键
    foreign key foregin_name(设置外键的列字段) references 主表名(外键关联字段)
);
  • 限制条件:
    • not null 值不为空
    • auto_increment 自动增长
    • unique 唯一
    • primary key 主键
    • foreign key 外键
    • check 检查数据是否符合设置的条件CHECK(列字段的限制表这式)

1.2 删除(drop)

  • 语法: drop database/table 库名/表名;

2.常见的数据操作语言(DML)

2.1 增加(insert)

  • 语法: insert into 表名(列字段1,…,列字段n) values(值1,…,值 n)
  • 注意:
    1. 列名列表和值列表要匹配( 个 数 、 类 型 \color{#ff0036}{个数、类型} 要匹配)。
    2. 列名列表可以省略
    3. 如果有自增(auto_increment)的字段,需要用null占位

2.2 删除(Delete)

  • 语法: Delete from 表名 [where 条件] [ ] 里 面 的 表 示 可 选 \color{#ff0036}{[]里面的表示可选} []
  • 注意:
    • 如果不加条件的就认为是清空表(但不会对表初始化);
    • 如果清空表后,再添加数据的时候自增的数字还会接着加不会从0开始。
  • Trunable 清空表
    • 语法: Trunable table 表名;
    • 彻底请空表,不会写系统日志
  • 区别: Delete 会写系统日志,短时间内的操作可以 回 滚 \color{#ff0036}{回滚} ;Trunable 不会写系统日志删了就删了。

2.3 修改(update)

  • 语法: Update 表 set 列=值,…,列n=值n [where 条件];
  • 如果不加条件就是修改所有。

2.4 查询(select)

  • 语法: select 展示的列字段1 [ as 别名] ,…,展示的列字段n [ as 别名] from 表 [where 条件表达式]
条件查询
  • 展示符合条件的数据
  • 语法: select 列字段… from 表 where 条件;
排序 (order by)
  • 将数据进行升/降序然展示
  • 语法 : select 列字段… from 表 where 条件 order by 列名1[asc升/desc降],列2[asc/desc]; 默 认 升 序 \color{#ff0036}{默认升序}
分组[ 用 来 作 统 计 \color{#ff0036}{用来作统计} ]
  • 常见函数:
    • Count(列名) 计数 列有多少数据(行)
    • Sum(列名) 求和 列内所有值求和
    • avg(列名) 平均数 列内的值求平均数
    • Max(列名) 最大值
    • Min(列名) 最小值
    • Lower(列名) 转成小写
    • upper(列名) 转成大写
  • 分组(group by)
  • 语法: select 列名 from 表 group by 列 [having 条件];
  • h a v i n g \color{#ff0036}{having} having: 分组统计之后再跟据having条件输出;

分页(limit)
  • 将数据分割展示,根据页数不同显示不同的数据;
  • 语法: select 列 from 表 limit 参数1,参数2;
    • 参数1 : 本页第一条数据的启始位置 从0开始
      • 计算公式: 参数1= (页数-1)×每页的条数
    • 参数2 : 每页有几条数据
查询的书写顺序
select 列 From表 where 条件 Group by 分组 having 条件(分组后筛选) Order by 列 [asc/desc] limit 参数1,参数2;

2.5 表联接查询

类型 语法 备注
内联接Inner join两表公共部分
左联接(外)Left join左侧表的所有数据全展示出来,如果在右侧表中没有对应的就用null占位
右联接right join右侧表全展示,如果左侧没有对应的用null占位
交叉联接Cross join笛卡尔积 两表的乘积输出
  • 语法: select 表1.列,表2.列 from 表1 联接关键字 表2 on 条件(比如相同的部分);

2.6 Union 多表联合

  • 将两张表的结果合拼到一起输出
    UNION
    注意:两张表的列数必须相同否则会报错

2.7 模糊查询

  • 用来检索某个范围内的所有记录,比如:输出所有姓王的人。
2.7.1 like
  • 查询字符串用的比较多;
  • 语法:Select 列名 from 表 where 模糊查询的列名 like “模糊查询的条件”;
  • 模糊查询的条件:
    • %:表示还有其他字符;
      • 例如:Select * from Student where Sname like “王%”输出姓王的学生的所有信息
      • a%:表示已a开头的字符串;
      • %a%:表示包含a的字符串;
      • %a:表示以a结尾的字符串;
    • _下划线:表示站位;
      • 例如:Select * from Student where Sname like “王_”输出姓王,并且长度是2的学生信息
      • a__:a开头长度是3
      • _a_ _:字符串的第二位是a且长度是4

2.7.2 Between…and
  • 查询某个范围时使用;
  • 语法:Select 列 from 表 where 查询字段 between 值1 and 值2;
    例子

2.7.3 binary区分大小写
  • MySQL本身默认是不区分大小写的,如果非要区分 就要使用 binary查询
  • 语法:Select 列名 from 表 where binpary 列字段 ="A"查询 包含大写A的数据
    在这里插入图片描述

2.7.4 in(not in)
  • 输出值在(不在)这个范围内的信息;
  • 语法:Select 列 from 表 where 列 in(not in)(值1,值2…,值n)
    在这里插入图片描述

2.7.5 Exists (not exists):检查行的存在
  • Exists里面的语句有返回结果,前面的select就正常运行,如果为null,则不返回结果
  • 语法:Select 列 from 表 where exists (查询结果)
    在这里插入图片描述

2.7.6 其他
  • 其他:
    空 (NULL) is null ( is not null)和 “” 的查询(=’’ !=’’ <>不等于’’): and or not 等
    在这里插入图片描述

2.8 正则使用

  • 正则是一种字符匹配一种方式; 比如要检索表中满足 (哪些用户名是a开头的? 哪些用户名是以m结尾的? ‘%m’ )
  • 这个正则教程不错点击跳转
  • 语法:Select 列 from 表 where 列 regexp ‘正则基本语法’

在这里插入图片描述


2.9 多表关联

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值