MySQL学习笔记

目录

一、MySQL简介

二、MySQL安装

2.1 windows系统下安装MySQL

2.1.1 windows系统下卸载MySQL

2.2 Linux系统下安装MySQL

三、MySQL图形化管理工具

3.1 Navicat安装

3.1.1. Navicat的使用

3.2 SQLyog安装

3.2.1 sqlyog的使用

3.3 Datagrip

四、SQL语言

4.1 DDL-库操作

-- 查询所有数据库

-- 查询当前数据库

-- 创建库

-- 删除数据库

-- 使用库

 4.2 DDL-表操作

-- 查询所有表

-- 查询表结构

-- 表结构创建

-- 查询详细表结构

--修改表

-添加字段add

-修改字段(modify/change)

-删除字段drop

-修改表名rename

-删除表

-删除表数据,删除后会重新创建该表

4.2.1 数据类型

4.2.2 字符串类型

4.3 DML-数据操作

4.3.1 添加数据(insert)

-给指定字段添加记录

-给所有字段添加记录

-批量添加记录

4.3.2 修改数据(update)

-- 更新表内字段所有记录

-- 更新表内指定记录

4.3.3 删除数据(delete)

--仅删除符合条件的记录

--删除所有记录

4.4 DQL-数据查询

4.4.1 基本查询

--查询多个字段

4.4.2 条件查询

4.4.3 聚合查询

4.4.4 分组查询

4.4.5 排序查询

4.4.6 分页查询

4.5 DCL-数据控制语言

4.5.1 用户管理

---查询用户

---创建用户

---修改用户密码

4.5.2 权限控制

--查询权限

--授予权限

--撤销权限

4.6 约束

五、函数

5.1 字符串函数

5.2 数值函数

5.3 日期函数

5.4 流程函数

六、多表查询


一、MySQL简介

        MySQL是一种关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,一般应用在中小型和大型网站。

        特点:1.用c和c++编写有较高的可移植性。2.支持多线程,可充分利用cpu资源。3.为多种编程语言提供API。包括C、Java、PHP、Python等。4.Mysql优化了SQL算法,有效提高了查询速度。

二、MySQL安装

2.1 windows系统下安装MySQL

选择社区版zip格式的包

mysql下载地址:https://downloads.mysql.com/

步骤1:安装完解压后,在根目录添加配置文件my.ini

文件添加内容:

[mysqld]
#设置3306端口
port=3306
#创建新表时将使用默认存储引擎
default-storage-engine=INNODB    
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[client]
#设置mysql客户端连接服务端默认使用的端口
port=3306
default-character-set=utf8

步骤2:配置环境变量

操作步骤: 环境变量 -> 新建 -> 变量名和mysql的根目录 -> 配置path的环境变量

步骤3:

1.初始化数据库

mysqld --initialize --user=mysql --console

2.安装mysql服务

mysqld --install     (mysqld --remove卸载mysql)

3.启动MySQL服务

net start mysql    (stop是停止服务)

4.登入mysql,这里需要使用到初始化数据库的初始密码

mysql -uroot -p

5.修改root用户密码

alter user 'root'@'localhost' identified with mysql_native_password by '123456';

2.1.1 windows系统下卸载MySQL

1.停止服务,打开DOS命令窗口

net stop mysql

2.删除根目录文件夹

进入到mysql安装位置,删除mysql的解压文件

3.删除C盘隐藏文件夹

显示隐藏文件后删除c盘下的“C:\ProgramData\MySQL” 的所有文件

4.在DOS命令窗口下输入 regedit,清空关于mysql的注册表

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MySQLD Service

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MySQL

5.删除环境配置

6.删除mysql服务名称,以管理员权限打开DOS命令窗口

sc  delete mysql

2.2 Linux系统下安装MySQL

三、MySQL图形化管理工具

3.1 Navicat安装

Navicat Premium 是一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接 MySQL、Redis、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。

下载官网:Navicat | 产品

3.1.1. Navicat的使用

3.2 SQLyog安装

SQLyogsqlyog是一款专业的图形管理软件,SQLyog操作简单,功能强大,能够帮助用户轻松管理自己的MYSQL数据库,SQLyog中文版支持多种数据格式导出,可以快速帮助用户备份和恢复数据,还能够快速地运行SQL脚本文件,为用户的使用提供便捷。

下载地址:https://en.softonic.com/download/sqlyog/windows/post-download

3.2.1 sqlyog的使用

3.3 Datagrip

四、SQL语言

常见sql语句类型包括有一下几种类型

      -DDL数据定义语言:用来定义数据库对象(数据库,表,字段,表结构)
      -DML数据操作语言:用来对数据库表中的数据进行增删改
      -DQL数据查询语言:用来查询数据库表中的记录
      -DCL数据控制语言:  用来创建数据库用户,控制数据访问权限

4.1 DDL-库操作

-- 查询所有数据库

show databases ;

-- 查询当前数据库

select database() ;

-- 创建库

create database [if not exists]  数据库名 [default charset]

-- 删除数据库

drop database 库名

-- 使用库

use 库名

 4.2 DDL-表操作

-- 查询所有表

show tables;

-- 查询表结构

desc 表名

-- 表结构创建

create table 库名.表名(字段名1 字段类型(宽度) 约束条件....[comment '注解'])

mysql> create table tb_users(
    -> id int(10) comment '编号',
    -> name varchar(50) comment '姓名',
    -> age int unsigned comment '年龄',
    -> gender varchar(1) comment '性别'
    -> );
Query OK, 0 rows affected, 1 warning (0.02 sec)

-- 查询详细表结构

show table tb_user ;

--修改表
-添加字段add

alter table 表名 执行动作(add,modify,change,drop,rename) 字段 字段类型(长度)

在表tb_users中id字段后面添加nickname字段

alter table tb_users add nickname int(20) comment '呢称' after id ;
    -add 字段名 类型 约束条件 //添加新字段
       可加after 字段名;    //添加到xx之后
       或者first 字段名;    //添加到第一列

-修改字段(modify/change)

将表tb_users中nickname字段修改为username ,类型varchar(30)

修改数据类型用 modify

修改字段名和字段类型用change

alter table tb_users change nickname username varchar(30) comment '用户呢称';

-删除字段drop

alter table 表名   drop 字段名

alter table tb_users drop username;

-修改表名rename

alter table 表名   rename 新表名

-删除表

drop table [if exists] 表名;

-删除表数据,删除后会重新创建该表

truncate  table 表名字

4.2.1 数据类型

整数型int:

默认使用有符号类型,加unsigned使用无符号类型 

浮点型float:

定义格式:float(总宽度,小数位数),当字段值与类型不匹配时,字段值作为0处理。数值不在范围,仅保存最大/最小值

4.2.2 字符串类型

字符类型定长char:最大长度255字符不够指定字符数时在右边用空格补齐,字符数段超出时,无法写入数据
变长:varchar(字符数)按数据实际大小分配存储空间,字符数段超出时,无法写入数据
大文本类型:text/blob,字符数大于65535存储时使用

4.3 DML-数据操作

4.3.1 添加数据(insert)

-给指定字段添加记录

语法1:  insert into 表名(字段名列表) values(字段值列表);

insert into tb_users(id, name, age, gender) values(1, "zhangsan", 20, "男");

-给所有字段添加记录

语法2: insert into 表名 values(字段值列表);

insert into tb_users  values(2, "lisi", 30, "女");

-批量添加记录

语法3:  insert into 表名(字段名列表) values(字段值列表),(),(),...;

insert into tb_users values(3, "wangwu", 20, "男"),(3, "zhaoliu", 38, "女");
    注意事项:
      -字段值要与字段类型相匹配
      -对于字符类型的字段或者日期类型,要用双或单引号括起来
      -只给一部分字段赋值时,必须明确写出对应的字段名称

4.3.2 修改数据(update)

-- 更新表内字段所有记录

语法1:update 表名 set 字段1=字段1值,.....;

update tb_users set gender = '男';

-- 更新表内指定记录

语法2:update 表名 set 字段1=字段1值,.... where 条件表达式;
 update tb_users set name = 'xixi',gender = '女' where id = 3;
    注意事项:
      -字段值要与字段类型相匹配
      -对于字符类型的字段,要用双或单引号括起来
      -若不使用where限定条件,会更新所有记录
      -限定条件时,只更新匹配条件的记录


  4.删除记录
    格式1,仅删除符合条件的记录
      delete from 表名 where 条件表达式;
    格式2,删除所有记录
      delete from 表名;

4.3.3 删除数据(delete)

--仅删除符合条件的记录

语法1: delete from 表名 where 条件表达式;

delete from tb_users where id = 3;

--删除所有记录

语法2:delete from 表名;

delete from tb_users ;

4.4 DQL-数据查询

4.4.1 基本查询

--查询多个字段

语法1:select 字段1,字段2,字段3... from  表名

语法2:  select  * from  表名

语法3: 去重查询  select distinct 字段列表 from 表明

4.4.2 条件查询

语法1:select 字段列表 from 表名 where 条件列表

比较运算符功能逻辑运算符功能

>

>=

<

<=

<> 或者 !=

大于

大于等于

小于

小于等于

不等于

and 或者 &&并且
between .... and在那些范围内or 或者 ||或者
 in (...) 在()里面的值not 或者 !非,不是
like  占位符

模糊匹配

_ 匹配单个字符

% 匹配任意字符

is null时null

4.4.3 聚合查询

语法: select  聚合函数(字段列表)  from 表名

null值聚合函数不参与计算

函数名功能
count()统计字段值个数
max()统计字段最大值
min()统计字段最小值
avg()统计字段平均值
sun()统计字段之和

4.4.4 分组查询

语法: select  字段列表 from 表名 [where 条件]  group by 分组字段名 [ having 分组后的过滤条件]

4.4.5 排序查询

语法:select 字段列表 from 表名 order by 字段1 排序方式, 字段2 排序方式

排序方式  asc 升序(默认) desc 降序

多字段的排序  是先对字段1排序,如果字段1相同再按照字段2排序

4.4.6 分页查询

语法:select 字段列表 from 表名 limit  起始索引,查询记录数

    -SQL查询 limit N;    //显示查询结果前N条记录
    -SQL查询 limit N,M;    //显示指定范围内的查询记录,从N开始显示M行
    -SQL查询 where 条件查询 limit 3;    //显示查询结果前3条记录
    -SQL查询 where 条件查询 limit 3,3;    //从第四条开始,共显示3条

sql语句执行顺序 from > where >  group by >  select > order by > limit

4.5 DCL-数据控制语言

4.5.1 用户管理

---查询用户

use mysql

select * from users;

---创建用户

语法: create  user '用户名'@'localhost' identified by '密码' 

指定任意用户都可以登入数据库

create user  'cceng'@'%'  identified by '密码' ;

---修改用户密码

alter user  'user'@localhost identified by '新密码' ;

--删除用户

drop user  'user'@'localhost' ;

4.5.2 权限控制

--查询权限

show grants for  '用户名'@'主机名'

--授予权限

语法格式:grant   权限列表 on  数据库名.表名  to  '用户名'@'主机名'

grant all on *.* to 'cceng'@'%'  ;

--撤销权限

语法格式:revoke  权限列表 on  数据库名.表名  from  '用户名'@'主机名' 

4.6 约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确、有效性和完整性。

4.6.1 非空约束       

关键字:not null                解释:限制该字段数据不能是null

4.6.2 唯一约束                 

关键字:unique                 解释:保证该字段说有数据不重复都是唯一的

4.6.3 默认约束       

关键字:default                 解释:未指定该字段值时,赋予默认值 

4.6.4 检查约束

关键字:check                  解释:保证该字段满足某个要求,(8.016版本后的特性) 

4.6.5 主键约束

一个表中只能有一个primary key字段,对应的字段值不允许重复,且不能赋NULL值

主建字段KEY标志PRI,通常与auto_increment连用(此时可以赋null,会自增)
 经常把表中的唯一标识记录的字段设置为主键字段[记录编号字段]

---建表的时候指定主建,通常与auto_increment连用
create table test1 (
    id int primary key auto_increment,
    name varchar(5) not null
);
---删除表中primary key(若有自增属性,必须先去掉)
alter table test1 modify  id int   ;   --去auto_increment
alter table test1 drop primary key;
---在已有的表中设置primary key
alter table test2 add primary key(id);

4.6.6 外键约束

关键字:foreign key
作用用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
使用外键的条件
    -表存储引擎必须是innodb(mysql8.0默认引擎)
    -字段类型要一致
    -被参照字段必须是索引类型的一种(一般是primary key)
    基本用法
        foreign key(表A的字段名) references 表B(字段名) 
        on update cascade on delete cascade
    实例:
 create table t1(
      id int primary key auto_increment,
      name char(5)
      )engine=innodb;
    create table t2(
      id int,
      pay float(7,2),
      foreign key(id) references t1(id) on update cascade on delete cascade
    )engine=innodb;


    ----删除外键,第一步先查出外键名,在删除外键


      show create table t2;    //查看外键名

CREATE TABLE `t2` (
  `id` int DEFAULT NULL,
  `pay` float(7,2) DEFAULT NULL,
  KEY `id` (`id`),
  CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

      alter table t2 drop foreign key 外键名 

alter table t2 drop foreign key t2_ibfk_1


    ----在已有表中添加外键
alter table t2 add foreign key(id) references t1(id) on update cascade on delete cascade;
    ----外键的删除更新行为

默认行为NO   ACTION  / RESTRICT  

当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有则不
允许删除 / 更新。


CASCADE

当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有,则
也删除 / 更新外键在子表中的记录
语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY ( 外键字段 ) REFERENCES
主表名 ( 主表字段名 ) ON UPDATE CASCADE ON DELETE CASCADE;

五、函数

5.1 字符串函数

--字符串拼接 concat('str1','str2')

--转小写 lower(str)

--转大写 upper(str)

--左填充lpad(str,n,pad)

--右填充rpad(str,n,pad)

str:被操作的字符串   n:字符串长度  pad填充的内容

--去头尾空格 trim('')

--截取子字符串substring(str,start,len)

5.2 数值函数
函数 功能
ceil(x)向上取整
floor(x)向下取整
mod(x,y)返回x/y的模
rand()返回0~1内的随机数
round(x,y)求参数x的四舍五入的值,保留y位小数

案例:生成一个六位数的随机验证码

SELECT LPAD(ROUND(RAND()*1000000,0),6,0);

5.3 日期函数
函数 功能
curdate()返回当前日期yyyy-MM-dd
curtime()返回当前时间 hh:mm:ss
now()返回当前日期和时间
year(date)获取指定date的年份
month(date)获取指定date的月份
day(date)获取指定date的日期
date_add(date, interval expr type)返回一个日期/时间值加上一个时间间隔expr后的 时间值
datediff(date1,date2)返回起始时间date1 和 结束时间date2之间的天 数
5.4 流程函数
函数 功能
IF(value , t , f)如果value为true,则返回t,否则返回 f
IFNULL(value1 , value2)如果value1不为空,返回value1,否则 返回value2
CASE  WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END如果val1为true,返回res1,... 否 则返回default默认值
CASE [ expr ] WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END如果expr的值等于val1,返回 res1,... 否则返回default默认值

六、多表查询

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值