【学习日志】202311w4\Mysql学习记录Part1

不完整记录。。。参考尚硅谷视频教学内容,个人感觉很不错

20231123-30

  • 掌握 Mysql基础知识

前言

0.1 数据库概念

0.1.1 数据库的好处
  • 可以持久化数据到本地
  • 可以结构化查询
0.1.2 数据库的常见概念
  • 数据: 数据库存储的基本对象,描述事物的符号记录。
  • 数据库(database, DB):存储数据的仓库。。
  • 数据库管理系统(Database Management System, DBMS)。又称为数据库软件或者数据库产品,用于创建和管理DB。
  • 结构化查询语言(Structure Query Language,SQL):结构化查询语言。专门用来与数据库通信的语言,几乎所有的主流数据库软件通用的语言。
0.1.3 数据库存储数据的特点
  • 数据存放到表中,表再放到库中
  • 一个库中可以有多张表,每张表具有唯一的表名来标识自己
  • 表中有一个或多个列(字段),相当于java中的“属性”
  • 表中每一行数据相当于java中的“对象”
常见数据库管理系统

Mysql、oracle,db2,sqlserver

0.2 Mysql

0.2.1 Mysql的背景
0.2.2 Mysql的优点
  • 开源,免费,成本低
  • 性能高,移植性好
  • 体积小,便于安装
0.2.3 Mysql安装

链接: Mysql安装

0.2.4 Mysql服务的启动和停止

方式一:命令行方式(cmd)

net start 服务名
net stop 服务名

方式二:计算机——右击——管理——服务

0.2.5 Mysql服务的登录和退出

登录:

mysql -h主机名 -P端口号 -u用户名 -p密码
连接本机且端口号为3306的:
mysql  -u用户名 -p

退出:

ctrl+ C 或者 exit

1.1 DQL语言

1.1.1 基础查询

select  查询列表 
from 表名;
  • 特点
    • 查询列表可以是字段、常量、表达式、函数,也可以是多个
    • 查询结果是一个虚拟表
  • 示例
    1. 查询多个字段 select 字段,字段 from 表名;
    2. 查询所有字段 select * from 表名;
    3. 查询常量 select 常量值;(注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要)
    4. 查询函数 select 函数(实参列表);
    5. 查询表达式 select 100/230;
    6. 起别名 as、空格
    7. 去重 select distinct 字段名 from 表名;
    8. ‘+’ 只能做加法运算;
    	-- select 数值+数值;直接运算。
    	-- select 字符+数值;将字符转换成数值,转换成功则运算,否则转换成0再运算。
    	-- select null+值;结果为null。
    9. concat函数:拼接函数 select concat(字符1,字符2,...);
    10. ifnull函数:判断某字段或表达式是否为null,如果是null返回指定值,否则返回原来值。
    	-- select ifnull(job_id,0)from employees;
    	11. isnull函数:判断某字段或表达式是否为null,如果是null返回1,否则返回0。
    	-- select ifnull(job_id,0)from employees;
    

1.1.2 条件查询

select  查询列表 
from 表名
where 筛选条件;
  • 筛选条件的分类
    • 简单条件运算符: > < = <> != <=> (安全等于)
    • 逻辑运算符:&& || ! and or not
    • 模糊查询:
      • like:
      # 一般搭配通配符"%"(任意多个)“_”(任意单个字符),可以判断字符型或数值型
      select job_id from employees where manager_id like '_a%';
      
      • between and
      # 包含临界值.
      salary >=100 AND salary <=120;
      salary BETWEEN 100 AND 120;
      # 等价
      
      
      • in
      # 判断列表中的值是否属于IN列表中的某一项、in列表的值类型必须一致或兼容
      job_id='IT_PROG' OR job_id='AD_VP' OR job_id='AD_PRES';
      job_id IN('IT_PROG','AD_VP','AD_PRES');
      # 等价
      
      • is null / is not null
      # = 或 <> 不能用来判断null值
      # is Null 和 is not null 能判断null值
      # <=>:既可以判断null值,又可以判断普通数值;但是可读性较差;
      

1.1.3 排序查询

1.1.4 常见函数

1.1.5 分组查询

1.1.6 连接查询

使用场景:当查询字段来自多个表时,使用连接查询.
分类

1.1.7 子查询

1.1.8 分页查询

1.1.9 union联合查询

其他学习笔记

  1. Varchar 和 char两种字符数据类型的区别
Varcharchar
可变长度,根据字符数据长度分配存储空间固定长度,占用固定长度的空间
使用存储空间取决于实际存储的数据长度,最大长度需要在建表时指定,如varchar(50)若存储的数据长度小于指定的长度,剩余空间也会被填充,char(20)表示该列表始终存储 20个字符的文本
适合存储长度不固定的文本,节省存储空间适合存储长度固定的文本,提高查询效率
  1. 主键和唯一的对比
唯一性允许为空一个表中有多少个允许组合
PRIMARY主键×至多有1个
UNIQUE唯一可以有多个√,但不推荐
  1. 事务的特性:
    ACID
  • 原子性(atomicity):一个事务不可再分割,要么都执行要么都不执行
  • 一致性(consistency):一个事务执行会使数据从一个一致状态切换到另外一个一致状态
  • 隔离性(isolation):一个事务的执行不受其他事务的干扰
  • 持久性(durability):一个事务一旦提交,则会永久的改变数据库的数据.
  1. 具备以下特点的视图不允许更新
  • 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
  • 常量视图
  • Select中包含子查询
  • join
  • from一个不能更新的视图
  • where子句的子查询引用了from子句中的表
  1. 用户变量和局部变量的对比
作用域定义位置语法
用户变量当前会话会话的任何地方加@符号,不用指定类型
局部变量定义它的BEGIN END中BEGIN END的第一句话一般不用加@,需要指定类型
  1. 通配符
  • 百分号%:可通配任何,除了null;
  • 下划线_:只匹配单个字符;
  1. 正则表达式搜索
/# regexp 关键字
select name from students where name regexp '1|2';
# 输出name中有1或2的列
# . (匹配任意字符)  | (或)   [] (或)  - (至)    \\. (表示查找.)
# ' \\([0-9] sticks?\\)' 表示匹配(包含0-9, stick或sticks)
#    ' ^[0-9 \\ .] ' 表示 只匹配在以0-9或. 开头的结果
  1. 常用文本处理函数
函数说明
left() ,right()返回串左边(右边)的字符
length()返回串的长度
locate()找出串的一个子串
lower(), upper()转换为小写、大写
ltrim(),rtrim()去掉串左边(右边)的空格
soundex()返回串的soundex(发音)值
substring(‘串’,起始值,截取长度)返回子串字符
  1. 聚合函数
    avg(), count(), max(), min(), sum()
    注意count和sum区别,count表示返回某列的行数,sum表示返回某列的和。

  2. where 和having 的区别
    where 过滤行,having 过滤分组

  3. 子查询
    可以在select 后面,where 后面, from 后面

  4. 联结

  • 无条件联结: from A,B ;笛卡儿积
  • 自然联结:from A,B where 条件;
  • 内部联结:from A inner join B where 条件;
  • 外部联结: from 左表 left\right join 右表 where 条件; # left join(左边为主表,右边无对应显示null) , right join(右边为主表,左边无对应显示null).
  1. 全文本搜索
  • where match( 被搜索的列,与fulltext()相同) against( 搜索表达式);
  • 查询扩展 : where match( 被搜索的列,与fulltext()相同) against( 搜索表达式 with query expansion) ; (返回搜索的列以及与被搜索列相关的列)
  1. 布尔文本搜索
  • where match( 被搜索的列,与fulltext()相同) against( ‘搜索表达式 布尔操作符’ in boolean mode) ;
  1. 插入数据
  • 插入完整单行 insert into 表 values( );
  • 插入部分数据 insert into 表(部分字段名) values( 对应字段值);
  • 插入多行 insert into 表 values( ), ( ), ( ),…;
  • 插入检索结果 insert into 表 select 列 from 表;
  1. 更新、删除数据
  • update: update 表 set 列名=新数据值 where 行过滤条件;
  • delete、truncate :
    • 删除特定行: deleta from 表 where 行过滤条件;
    • 删除所有行: delete from 表;
    • 删除行保留表结构:truncate 表;
  • drop 删除表:drop table if exists A;
  1. 创建、操纵表
  • create table 表名( 字段 ,…);
  • alter table 表名 add column
  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值