MySQl这一篇就够了(二)

分页查询limit(八)

select 查询列表

from 表名

group by 分组列

having 分组后筛选

order by 排序

limit offset ,size;

offset:要显示条目的起始索引

size 要显示的数量

#查询前五条数据
select * from employees limit 0,5;

#有奖金的员工信息 ,并且工资较高的前10名显示出来
select * from employees
where commission_pct is not null
order by salary desc
limit 10;

特点:limit 语句放到查询的最后 执行流程也在最后

总结

查询语句中所有的关键字和执行顺序

select 查询列表 7

from 表名 1

连接类型 join 表2 2

on 连接条件 3

where 筛选条件 4

group by 分组列 5

having 分组后筛选 6

order by 排序 8

limit offset ,size; 9

#查询工资最低的员工信息
select * from employees
where salary=(
select min(salary)
from employees
);
#查询平均工资最低的部门信息
select * from departments
where department_id = (
select department_id
from employees
group by department_id
order by avg(salary)
limit 1);

基础查询(九)联合查询

union 联合 合并 并将多条查询语句合并成一个结果

语法:

查询语句1

union

查询语句2

要求多条查询语句的查询列数是一样的

nuion 默认去重 不想去重就写 union all

DML语言

插入:insert

删除:delete

修改:update

delete pk truncate

1 delete 可以加where 条件 truncate 不能加

2 truncate 效率高

3 truncate没有返回值

4 delete删除数据后 在插入新数据从断电开始

5 truncate 删除数据后 在插入数据从1开始

6truncate 删除后不能回滚

DDL

创建 create

修改 alter、

删除 drop

库的管理

创建库Books

create databases books;

如果不存在就创建

create databases if not exists books;

更改库的字符集

alter datdabase books character set utf8;

库的删除

drop database books

表的管理

desc 表名 查看表结构

创建表

create table 表名(

列名 列的类型 【长度 约束】

)

create table book(

id int,

bName varvhar(20), #最大长度20

price double ,

)

修改表

修改列名

alter table 表名 change [column] 旧列名 新列名 类型

修改类型

alter table 表名 modify column 列名 修改的类型

添加列

alter table 表名 add column 新列名 类型

删除列

ater table 表名 drop cloumn 列名

修改表名

alter table 表名 rename to 列名

删除表

drop table

复制表

复制 结构+数据

create table 表名 select * from 之前的表名

复制结构

create table 表名 like 之前的表

数据类型

小数:

float(M,D)

double(M,D)

定点型

dec(M,D)

decimal(M,D)

特点

M :整数部位加小数部位长度

N :小数部分长度

MN、可以省略 如果是decimal类型 M默认10 N默认0 float double 会根据插入数值来确定

定点型:精度较高 如货币运算

字符型

较短的文本

char(M) M为0-255之间的整数 代表最多插入多少字符 固定长度的字符 耗费空间 效率高 M默认为1

varchar(M)0-65535之间的整数 代表最多插入多少字符 可变长度的字符 节省空间 效率低M不可以省略

较长的文本 text

blob(较大的二进制)

日期型

datetime 8字节 范围1000-9999 不受时区影响

timestamp 4字节 范围1970-2038 受时区影响

约束

分类 六大约束

​ NOT NULL 保证该字段的值不能为空

​ DEFAULT 用于保证该字段有默认值

​ PRIMARY KEY 用于保证该字段唯一 不可以为空

​ UNIQUE 用于保证该字段唯一 可以为空

​ CHECK mysql不支持

​ FOREIGN KEY 保证该字段值 必须来自主表的主键 不支持列级约束

添加约束的时机 创建表时 修改表时

列级约束

create table studinfo (
id int primary key ,
stuName varchar(20) not null,
seat int unique,
age int default 18,
majorid int foreign key major(id)); //报错 不支持外键加载列上

表级约束

create table studinfo (
	
	id int 
,
	stuName varchar(20) ,
	gender char(1),
	seat int ,
	age int ,
	majorid int ,
	
	constraint pk primary key(id),
	constraint uq unique (seat),
	constraint fk_major foreign key (majorid) references major(id)
);

自增长列 auto_increment 只能给数值型自增

事务

在mysql中用的最多的存储引擎有:innodb ,myisam ,memory 其中innodb支持事务 myisam memory不支持事务

原子性:一个事务不可再分割,要么都执行 要么都不执行

一致性:一个事务执行会使数据从一个一致状态切换到另一个一致状态

隔离性:一个事务的执行不受其他事务的干扰

持久性:一个事务一旦提交 就会永久改变数据

事务的创建

隐式事务,事务没有明显的开启与创建

比如 insert update delete、

显示事务:有明显开启和结束的标记 前提是关闭自动提交事务功能

set auotcommit=0 关闭事务

commit 提交事务

rollback 提交事务

事务的隔离级别

​ 出现脏读 幻读 不可重复读

read uncomitted √ √ √

read committed × √ √

repeatable read × × ×

seriallizable × × ×

默认repeatable read 级别

查看隔离级别 select @@tx isolation

设置隔离级别 set session|global transaction isloation level 隔离级别

视图

含义 :虚拟表 和普通表一样使用

mysql5.1 之后出现的新特性 是 通过表动态生成的数据

以前查询 这么查:

select stuname .majorname

from stuinfo s

inner join major

on s.majorid=m.id

where s.stuname like ‘张%’

现在用视图包装一下

create view v1

as

select stuname .majorname

from stuinfo s

inner join major

on s.majorid=m.id

通过视图插

select *from v1 where where stuname like ‘张%’

应用场景

当多个地方用到同样的查询结果或者 该sql语句比较复杂 就使用视图

#查询名字中包含a字符的员工名 部门名 工种信息
create view myvi
as
select last_name,department_name,job_title
from employees e
join departments d on d.department_id=e.department_id
join jobs j on j.job_id=e.job_id;

select * from myvi where last_name like ‘%a%’;

视图的修改

create or replace view 视图名//视图名如果存在就修改 如果不存在就替换

as …

删除视图

drop view 视图名1,视图名 2 。。。。。

修改视图数据

会对原始表发生作用

insert into v1 values(‘aaa’,‘bbb’,'cccc)

update v1 set name =‘zzzz’ where id =11

delete v1 where id =11

变量

系统变量:

​ 全局变量

​ 会话变量

自定义变量

​ 用户变量

​ 局部变量

如果是全局级别

show global variables

如果是会话级别

show session variables

#查看所有的全局变量
show global variables;
#查看部分全局变量
show global variables like ‘%char%’;
#查询自动提交是否开启
select @@session.autocommit;
#查询隔离级别
select @@tx_isolation;

特点 :

​ 全局变量作用域 :对所有连接有效 服务器每次重启 全局变量都会变成默认值

会话变量 仅对当前连接有效

自定义变量

用户变量

用户自定义变量只对于当前会话有效

1.声明并初始化三种方式

set @用户变量名=值;

set @用户变量名:=值;

select @用户变量名:=值;

赋值三种

set @用户变量名=值;

set @用户变量名:=值;

select @用户变量名:=值;

局部变量

declare 变量名 数据类型;

declare 变量名 数据类型 default 值;

赋值 select @局部变量名:=值

只能用在 begin end 的第一句话中

MySQL是一种关系型数据库管理系统,被广泛应用于各类网站、应用程序和企业级系统中。它是由瑞典MySQL AB公司开发的,后来被Sun Microsystems收购,最终成为了Oracle公司的一部分。 MySQL以其高性能、稳定性和可靠性而闻名,不仅能够处理大规模的数据处理需求,还具备较高的扩展性和可定制性。它支持多用户访问和并发操作,并提供了完善的安全性和权限管理机制,可灵活控制用户对数据的访问权限。 MySQL采用了客户端-服务器架构,其中客户端可以是各种编程语言实现的应用程序,而服务器则负责存储和处理数据。MySQL使用了一种基于SQL(Structured Query Language,结构化查询语言)的查询语言,通过执行SQL语句实现数据的存储、检索和管理。 MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY等,每个存储引擎都有其特定的优势和适用场景。同时,MySQL还支持事务处理和数据备份恢复等常用功能,保证了数据的完整性和可靠性。 MySQL拥有庞大的用户群体和强大的社区支持,用户可以通过官方文档、在线论坛和社交媒体等渠道获取帮助和交流经验。此外,MySQL还有丰富的第三方工具和插件生态系统,可提供更多功能和扩展性。 总之,MySQL作为一种成熟、可靠的关系型数据库管理系统,被广泛应用于各类场景。它的强大功能、高性能和可扩展性使其成为了开发者们首选的数据库解决方案之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值