【MySQL学习笔记】(持续更新中~)

MySQL学习笔记

1. SQL简介

1.1 SQL

​ SQL(Structured Query Language)结构化查询语言,是操作关系型数据的编程语言,定义了一套操作关系型数据库统一标准

1.1.1 SQL通用语法

​ 1)SQL语句可以单行或多行书写,以分号结尾。

​ 2)SQL语句使用空格/缩进来增强语句的可读性。

​ 3)MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

​ 4)单行注释:- - 注释内容或 # 注释内容(MySQL特有);

​ 5)多行注释:/* 注释内容 */

1.1.2 SQL的分类

​ 1)DDL(Data Definition Language),数据定义语言,用来定义数据库对象(数据库,表,字段);

​ 2)DML(Data Manipulation Language),数据操作语言,用来对数据库表中的数据进行增删改;

​ 3)DQL(Data Query Language),数据查询语言,用来查询数据库中表的记录;

​ 4)DCL(Data Control Language),数据控制语言,用来创建数据库用户、空置数据库的访问权限

1.2 DB

​ DB(DataBase)数据库,即为存储数据的仓库,数据是有组织的进行存储

1.3 DBMS

​ DBMS(DataBase Management System)数据库管理系统,操纵和管理数据库的大型软件,例如:Oracle、MySQL、SQL Server、PostgreSQL等;RDBMS即为关系型数据库管理系统,

1.3.1 概念

​ 建立在关系模型基础上,由多张相互连接的二维表组成的数据库

1.3.2 特点

​ 1)使用表存储数据,格式统一,便于维护;

​ 2)使用SQL语言操作,标准统一,使用方便;

2. 数据库启动/关闭

2.1 MySQL的启动与关闭

2.1.1 启动

​ 启动:以管理员身份运行命令提示符,然后输入:net start mysql80,(2)关闭:同样地以管理员身份运行命令提示符输入:net stop mysql80

2.1.2 关闭

​ 关闭:同样地以管理员身份运行命令提示符输入:net stop mysql80

2.2 MySQL数据库的连接

2.2.1 客户端连接

​ 直接打开MySQL8.0 Command Line Client输入密码(123456)即可

2.2.2 命令提示符连接

​ 配置好环境变量后打开命令提示符输入:mysql -u root -p然后输入密码即可

3. DDL

​ DDL(database definition language)数据定义语言,

3.1 数据库操作

3.1.1 查询数据库
show databases;
3.1.2 创建数据库
create database (if not exists) 数据库名;
3.1.3 删除数据库
drop database (if exists) 数据库名;
3.1.4 使用数据库
use 数据库名;
3.1.5 查询当前的数据库
#查询正在使用的当前的数据库
select database();

3.2 表的操作——查询

3.2.1 查询所有表
#查询当前数据库所有表(需要先使用数据库)
show tables;
3.2.2 查询表结构
#查询数据库中表的结构
desc 表名;
3.2.3 查询建表语句
 #注意是建表语句,但是也会多一些自己没有写的默认语句
show create table 表名;

3.3 表的操作——创建

- create table 表名(
	字段1  字段1类型[comment  字段1注释] ,
	字段2  字段2类型[comment  字段2注释] ,
	字段3  字段3类型[comment  字段3注释] ,	
	......
	字段n  字段n类型[comment  字段n注释]
	)[comment  表注释] ;

PS: 注意:[...] 为可选参数,最后一个字段后面没有逗号

例如:create table tb_student(
	ID  int  comment  '这是ID的注释' ,
	name  varchar(50)  comment  '这是name的注释' ,
	age  int  comment  '这是age的注释' ,
	gender  varchar(1)  comment  '这是性别的注释'
	) comment  '这是tb_student的注释' ; 

3.4 表的操作——数据类型

3.4.1 数值类型

​ 1)tinyint(1 byte)有符号(-128,127),无符号(0,255)即为:tinyint unsigned

​ 2)smallint(2 bytes)有符号(signed)与无符号(unsigned)

​ 3)mediumint(3 bytes)有符号与无符号

​ 4)int/integer(4 bytes)有符号与无符号

​ 5)bigint(8 bytes)有符号与无符号

​ 6)float(4 bytes)有符号与无符号

​ 7)double(8 bytes)有符号与无符号

​ 8)decimal用于精确描述小数,依赖于M(精度)与D(标度),例如:123.45,(M)精度为5,(D)标度为2;

PS: 其中float、double都是浮点数值类型,而decimal是定点数值类型;浮点型与定点型都可以用类型名称后加(M,D)来表示,M为该值的总长度,D为该值小数点后面的长度,例如float(5,2)可显示为999.99,另外MySQL保存值时会进行四舍五入,如果插入999.009,则结果为999.01,反正用decimal来存取金额是最安全准确的。

3.4.2 字符串类型

​ 1)char-定长字符串

​ char(10)——即使只存储3个字符,但仍然存储10个字节,其性能更好

​ 2)varchar-变长字符串

​ char(10)——若只存储3个字符长度,则只存储3个字符/字节,其性能更好

​ 3)tinyblob-不超过255个字符/字节的二进制数据

​ 4)tinytext-短文本字符串

​ 5)blob-二进制形式的长文本数据

​ 6)text-长文本数据

​ 7)mediumblob-二进制形式的中等长度文本数据

​ 8)mediumtext-中等长度文本数据

​ 9)longblob-二进制形式的极大文本数据

​ 10)longtext-极大文本数据

3.4.3 日期时间类型
  • date-大小3,范围(1000-01-01至9999-12-31),格式:YYYY-MM-DD,描述:日期值

  • time-大小3,范围(-838:59:59至838:59:59),格式:HH:MM:SS,描述:时间值或持续时间

  • year-大小1,范围(1901至2155),格式:YYYY,描述:年份值;

  • datetime-大小8;范围(1000-01-01 00:00:00 至 9999-12-31 23:59:59);格式:YYYY-MM-DD HH:MM:SS;描述:混合日期和时间值;

  • timestamp-大小4;范围(1970-01-01 00:00:01 至 2038-01-19 03:14:07);格式:YYYY-MM-DD HH:MM:SS;描述:混合日期和时间值,时间戳;

3.4 表的操作-修改

3.4.1 添加字段
alter  table  表名  add  字段名  数据类型(长度);
3.4.2 修改数据类型
alter  table  表名  modify  字段名  新数据类型(长度);
3.4.3 修改字段名和字段类型
alter  table  表名  change  旧字段名  新字段名  类型(长度)  [comment ' 注释 '] [约束] ;
3.4.4 删除字段
alter  table  表名  drop  字段名 ;
3.4.5 修改表名
alter  table  表名  rename to  新表名 ;

3.5 表的操作-删除

3.5.1 删除表
drop  table  [ if  exists ]  表名 ;

PS : MySQL 8.0 Command Line Client的清屏方式:system cls ;

3.5.2 删除指定表

​ 删除指定表,并重新创建该表,但该表为空表,并且所有字段并没有删除依然存在,只是所有数据都被删除。

truncate  table  表名 ;

4. DML

4.1 DML介绍

DML(Data manipulation language)数据操作语言,用来对数据表中的数据记录进行增删改操作

  • 添加数据(insert)
  • 修改数据(update)
  • 删除数据(delete)

4.2 添加数据

4.2.1 指定字段
insert  into  表名  (字段名1,字段名2,...) values (值1,值2,...) ; 
4.2.2 全部字段
insert  into  表名  values (值1,值2,...) ;
4.2.3 批量
insert  into  表名 (字段名1,字段名2,...)  values (值1,值2,...),(值1,值2,...),(值1,值2,...) ;

insert  into  表名  values  (值1,值2,...),(值1,值2,...),(值1,值2,...) ;
4.2.4 知识点注释

#注意:

  • 插入数据时,指定的字段顺序需要与值得顺序是一一对应的;
  • 字符串和日期型数据应该包含在引号中;
  • 插入的数据大小,应该在字段的规定范围内;

4.3 修改数据

4.3.1 修改表中数据
update  表名  set  字段名=值1,字段名2=值2,...[where 条件] ;例如:
update tb_stu set age=35 where id=9527;
4.3.2 知识点注意
#修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据;例如:
update tb_stu set age=35;

4.4 删除数据

4.4.1 修改表中数据
delete  from 表名  [where  条件] ;例如:
delete  from  tb_stu  where id=9527 ;
4.4.2 知识点注意
#delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
#delete 语句不能删除某一字段的值(可以用update)。例如:
delete  from  tb_stu ;

5. DQL

5.1 介绍

  • DQL(data query language)数据查询语言,用来查询数据库中表的记录。

  • 查询关键字:select

5.2 DQL语法

select  字段列表  from  表名列表  where  条件列表  group  by  分组字段列表  having  分组后条件列表  ordered  by  排序字段列表  limit  分页参数;
#上面的公式又可分为基本查询(select from)、条件查询(where)、分组查询(group by)、排序查询(order by)、分页查询(limit)
#以上需要用到的聚合函数(count、max、min、avg、sum)

5.3 基本查询

select 字段列表  from  表名;
5.3.1 查询多个字段
select  字段1,字段2,字段3,...  from  表名 ;
select  *  from  表名 ; 
5.3.2 设置别名
select	字段1[as  别名1],字段2[as  别名2] ...  from  表名 ;
5.3.3 去除重复记录
select	distinct	字段列表	from	表名  ;

5.4 条件查询

5.4.1 语法
select	字段列表 	from	表名	where	条件列表 ;
5.4.2 条件
5.4.2.1 比较运算符
  • ’ > ’ 大于;
select  *   from  tb_work  where  age=35 ;
  • ’ >= ’ 大于等于;
select  *  from  tb_work  where  age >=20 ;
  • ’ < ’ 小于;
select  *  from  tb_work  where  age<30 ;
  • ’ <= '小于等于 ;
select  *  from  tb_work  where  age <= 18 ;
  • ’ = '等于;
select  *  from tb_work  where  age = 8 ;
  • ’ <> ’ 或 ’ != '不等于;
select  *  from  tb_work  where  age <>  20 ;
select  *  from  tb_work  where  age !=  20 ;
  • ’ between … and …’ 在某个范围之内(含最小、最大值)
select  *  from  tb_work  where  age  betweet  15  and  35 ;
  • ’ in(…) ’ 在in之后的列表中的值,多选一;
select  *  from  tb_work  where  age in(18,27,35) ;等同于
select  *  from  tb_work  where  age=18 or  age=27  or  age=35 ;
  • ’ like 占位符 '模糊匹配( _匹配单个字符,%匹配任意个字符 );
PS:  _代表一个字符,%代表任意个字符
#查询姓名为2个字符的员工信息
select  *  from  tb_work  where  name  like  '_  _' ;
#查询身份证号最后一位是8的员工信息
select  *  from  tb_work  where  idCard  like  '%8' ;
  • ’ is null ’ 是null;
#查询没有身份证号的员工
select  *  from  tb_work  where  idCard is null ;
#查询有身份证号的员工
select  *  from  tb_work  where  idCard is not null ; 
5.4.2.2 逻辑运算符
  • ’ and 或 && '并且(多个条件同时成立);
select  *  from  tb_work  where  age>18  &&  age<35 ;
select  *  from  tb_work  where  age>18  and  age<35 ;
select  *  from  tb_work  where  gender='女'  and/&&  age<25 ;
  • ’ or 或 || '或者(多个条件任意一个成立);
select  *  from  tb_work  where  age=18 or  age=27  or  age=35 ;
  • ’ not 或 ! '非,不是
5.4.3 聚合函数
5.4.3.1 介绍

将一列数据作为一个整体,进行纵向计算

5.4.3.2
5.4.3.3
5.4.4

MySQL学习笔记下载链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值