IE盒子

搜索
查看: 109|回复: 1

MySQL数据库(笔记)

[复制链接]

3

主题

7

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2023-3-11 15:20:05 | 显示全部楼层 |阅读模式
MySQL基础篇

一、MySQL概述

1、数据库:存储数据的仓库。
2、数据库管理系统:操作和管理数据库的大型软件。
3、SQL:操作关系型数据库的编程语言。
\\查看服务-》MySQL8.0
service.mscMySQL数据库命令--cmd
\\启动
net start mysql80

\\停止
net stop mysql80客户端连接
方式一:MySQL提供的客户端命令行工具
MySQL 8.0 Command Line Client  ===》输入密码方式二:系统自带的命令行工具执行命令
mysql [-h 127.0.0.1] [-p 3306] -u root -p

\\【】连接哪一个ip 【】连接哪一个端口

\\直接用这个
mysql -u root -p
\\回车填密码 注:使用这个方法,需要配置PATH环境变量
如何配置?
找到MySQL\MySQL Server 8.0\bin\的路径复制
在编辑环境变量出新建(电脑->属性->高级)
二、SQL

1、DDL:数据定义语言,用来定义数据库对象(数据库表、字段)

(1)查询(数据库操作)
\\查询所有数据库
show databases();

\\查询当前数据库
select database();(2)创建(数据库操作)
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
【】如果不存在;【】字符集:utf8mb4;

==》“Query OK”创建成功(3)删除(数据库操作)
drop database [if exists] 数据库名;(4)使用(数据库操作)
use 数据库名;!!!!先使用库再查表或创建!!!!
(5)查询(表操作)
查询当前数据库所有表:
show tables;查询表结构:
desc 表名;查询指定表的建表语句:
show create table 表名;(6)创建(表操作)
注:【...】为可选参数,最后一个字段后无逗号。
create table 表名(
     字段1 字段1类型 [comment 字段1注释],
     字段2 字段2类型 [comment 字段2注释]
)[comment 表注释];


\\举例:id int comment '编号',(7)数据类型(表操作)
主要分为三类:数值类型、字符串类型、日期时间类型
(8)修改(表操作)
添加字段
after table 表名 add 字段名 类型(长度) [comment 注释] [修改字段
after table 表名 modify 字段名 新数据类型(长度);修改字段名和字段类型
after table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];删除字段
after table 表名 drop 字段名;修改表名
alter table 表名 rename to 新表名;(9)删除(表操作)
删除表
drop table [if exists] 表名;删除指定表,并重新建立该表(在删除表时,数据也会被删掉)
truncate table 表名;2、DML:数据操作语言,用来对数据库表中的数据进行增删改

添加数据insert;修改数据update;删除数据delete
(1)DML-添加数据
给指定字段添加数据
insert into 表名(字段名1,字段名2,...) values(值1,值2,...);给全部字段添加数据
insert into 表名 values(值1,值2,...);批量添加数据
insert into 表名(字段1,字段2,...) values(值1,值2,...),(值1,值2,...),(值1,值2,...);或
insert into 表名 values(值1,值2,...),(值1,值2,...),(值1,值2,...);注:
1)插入数据时,指定的字段顺序需要与值的顺序是一一对应的
2)字符串和日期型数据应该包含在引导中
3)插入的数据大小,应该在字段的规定范围内

(2)DML-修改数据
update 表名 set 字段名1=值1,字段名2=值2,...[where 条件];注:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
举例:
update employee set name ='itheima' where id = 1;
(3)DML-删除数据
delete from 表名 [where 条件];注:detele语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。detele语句不能删除某一个字段的值(可以使用update)

3、DQL:数据查询语言,用来查询数据库中表的记录

(1)DQL语法:
注:编写顺序不等于执行顺序
执行顺序为:from=》where=》select=》order by =》having=》limit
\\基本查询
select 字段列表
from 表名列表

\\条件查询
where 条件列表

\\聚合函数(count、max、min、avg、sum)
\\分组查询(group by)
\\顺序这个算一个
group by 分组列表
having 分组后条件列表

\\排序查询(order by)
Order by 排序字段列表

\\分页查询(limit)
limit 分页参数(2)DQL--基本查询
查询多个字段
select 字段1,字段2,字段3... from 表名;
select * from 表名;设置别名
select 字段1 [as 别名1],字段2[as 别名2]... from 表名;去除重复记录
select distinct 字段列表 from 表名;(3)DQL-条件查询
语法:
select 字段列表 from 表名 where 条件列表;条件:
比较运算符功能逻辑运算符功能
>大于and 或&&并且(多个条件同时成立)
>=大于等于or或||  、in获取(多个条件任意一个成立)
<小于not或!非,不是
<=小于等于
=等于
<>或!=不等于
between...and...在某个范围之类(含最小、最大值)
in(...)在in之后的列表的值,多选一
like占位符模糊匹配(_匹配单个字符,%匹配任意个字符),举例:__为两个字符;身份证最后一位是X,like ‘%X’;
is null是null
(4)DQL-聚合函数(单表查询)
介绍:将一列数据作为一个整体,进行纵向计算
常见聚合函数:
函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和
语法:
select 聚合函数(字段列表) from 表名;注意:null值不参与所有聚合函数的运算。
举例:查询西安,统计西安年龄和
select * from emp where workaddress = '西安';
select sum(age) from emp where workaddress = '西安';(5)DQL-分组查询
语法:
select 字段列表 from 表名 [where 条件] group by 分租字段名 [having 分租后过滤条件];where和having的区别:
1)执行时间不同:where是在分租之前进行过滤,不满足where条件,不参与分组,而having 是分组之后对结果进行过滤。
2)判断条件不同:where不能对聚合函数进行判断,而having可以。
举例:根据性别分组,统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;注:
1)执行顺序:where>聚合函数>having
2) 分组之后,查询的字段一般为聚合函数和分组函数,查询其他字段无任何意义

(6)DQL-排序查询
语法:
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;排序方式:asc(升序,默认值);desc(降序)
注:如果是多字段排序,当第一字段相同时,才会根据第二个字段进行排序。

(7)DQL-分页查询
语法:
select 字段列表 from 表名 limit 起始索引,查询记录数;注:
1)起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
2)分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是LIMIT
3)如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10

4、DCL:数据控制语言,用来创建数据库用户,控制数据库的访问权限

(1)DCL-管理用户
查询用户:
use mysql;
select * from user;创建用户
create user '用户名'@'主机名' idertified by '密码';修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';删除用户
drop user '用户名'@'主机名';注:
1)主机名可以使用%通配
2)这类sql开发人员操作的比较少,主要是DBA(Database Administrator 数据库管理员)使用。

(2)DCL-权限控制
MySQL中定义了很多权限,但是常用的就以下几种
权限说明
all,all privileges所有权限
select查询数据
insert插入数据
update修改数据
detele删除数据
alter修改表
drop删除数据库/表/视图
create创建数据库/表
查询权限
show grants for ‘用户名’@‘主机名’授予权限
grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;撤销权限
revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;举例:
show grant for ‘xxx’@‘%’;
grant all on xxx.* to 'xxx'@'%';
revoke all on xxx.* from 'xxx'@'%';注:
1)多个权限之间,使用逗号分隔
2)授权时,数据库名和表名可以使用*进行通配,代表所有

三、函数

函数是指一段可以直接被另一段程序调用的程序或代码
语法:
select函数(参数)1、字符串函数

MySQL中内置了很多字符串函数,常用的几个如下:
函数功能
concat(‘s1’,‘s2’,...,‘sn’)字符串拼接,将s1,s2,...,sn拼接成一个字符串
lower(str)将字符串str全部转为小写
upper(str)将字符串str全部转为大写
lpad(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
rpad(str,n,pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
trim(str)去掉字符串头部和尾部的空格
substring(str,start,len)返回字符串str从start位置起的len个长度的字符串

举例:
select concat(‘hello’,‘Mysql’);
select lpad(‘01’,5,‘_’);
select substring(‘hello Mysql’,1,5);更新emp中workup,使其成为5位,不足5位在前补0:
update emp set workno = lpad(workno,5,‘0’);注:如果workno为int则不显示‘0’,改为varchar

2、数值函数(常见)

函数功能
ceil(x)向上取整
floor(x)向下取整
mod(x,y)返回x/y的模(取余)
rand()返回0-1内的随机数
round(x,y)求参数x的四舍五入的值,保留y位小数
举例:生成6位随机验证码
select lpad(round(rand()*1000000,0),6,‘0’);
3、日期函数(常见)

函数功能
curdate()返回当前日期
curtime()返回当前时间
now()返回当前日期+时间
year(date)获取指定date的年份
month(date)获取指定date的月份
day(date)获取指定date的日期
Date_add(date,interval expr type)返回一个日期/时间值加上一个时间间隔expr后时间值
datediff(date1,date2)返回起始时间date1和结束时间date2之间的天数
举例:
select year(now());
select date_add(now(),interval 70 year);
select datediff(‘2021-12-01’,‘2021-11-01’);查询所有员工的入职天数,并根据入职天数倒序排序
select name,datediff((curdate1),entrydate)from emp;
select name,datediff((curdate1),entrydate) as ‘entrydays’from emp entrydays desc;
4、流程函数

可以在SQL语句中实现条件筛选,从而提高语句的效率。
函数功能
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 [real] ... else[default] end如果expr的值等于val1,返回res1,...否则返回default默认值
举例:
select if(true/false,‘OK’,‘Error’);
select ifnull('','Default);    ===>default
select ifnull(null,'Default');  ==Default

select
    name,
    (case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
    form emp;
四、约束

(1)概述
约束是作用于表中字段上的规则,用于限制存储在表中的数据。
目的:保证数据库中数据的正确性、有效性和完整性
分类:
非空约束限制该字段的数据不能为nullnot null
唯一约束保证该字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一(主键自增:auto_increment)primary key
默认约束保存数据时,如果未指定该字段的值,则采用默认值default
检查约束保证字段值满足某一个条件check
外键约束用来让两张表的数据之间建立连接,保证数据的一致性和完整性foreign key
注:约束是作用于表中字段上的,可以在创建表\修改表的时候添加约束

(2)外键约束
语法:
添加外键
create table 表名(
      字段名 数据类型
      ...
     [constraint] [外键名称] foreign key (外键字段名) references 主表(主表列名)
);
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名);删除外键
alter table 表名 drop foreign key 外键名称;删除(更新行为)
。。。。。待更新。。。。
回复

使用道具 举报

6

主题

9

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2025-5-18 05:09:30 | 显示全部楼层
传说中的沙发???哇卡卡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表