CAU数据库class2 SQL语言

SQL分类

DDL

数据库操作

查询数据库:

查询所有数据库

sql 复制代码
show databases; 

查询名字里有t的数据库

sql 复制代码
show databases like '%t%';

查询名字以t为结尾的数据库

sql 复制代码
show databases like '%t';

查看数据库name是怎么创建出来的

sql 复制代码
show create database name;
创建数据库

创建数据库name

sql 复制代码
create database name;

可设置创建数据库的编码格式

sql 复制代码
Create database name character set utf-8mb4 ;

编码格式

关键字问题:

sql 复制代码
create database `table`

table加了引号,因为这是一个关键字,不能直接作为名字

sql 复制代码
不能创建同名数据库,但可以用一下语句来使创建语句不报错
sql 复制代码
create database if not exists table;
删除数据库

删除数据库

sql 复制代码
drop database name;
切换数据库
sql 复制代码
use name;

数据表操作

查询表

查询所有表

sql 复制代码
show tables; 

查看表结构

sql 复制代码
desc 表名;

​查询指定表的建表语句

sql 复制代码
show create table 表名;
创建表

创建一张如下的表

sql 复制代码
create table tb_user{
id int commet '编号',
name varchar(50) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
} comment '用户表';

数据类型:

字符串:

创建表的格式问题:

修改表

添加字段:

为表emp添加一个昵称为nickname的字段

sql 复制代码
alter table emp add nickname varchar(20)  comment '昵称'

修改数据类型

sql 复制代码
alter table 表名 modify 字段名 新数据类型(长度);

修改字段名和字段类型

sql 复制代码
alter table 表名 chance 旧字段名 新字段名 类型;

删除字段

sql 复制代码
alter table 表名 drop 字段名;

修改表名

sql 复制代码
alter table 表名 rename to 新表名;
删除表

删除表

sql 复制代码
drop table [if exists] 表名

删除表并重新创建表

sql 复制代码
truncate  table 表名

DML

全名数据操作语言,对数据进行增删改查

插入数据

给指定字段添加数据:

sql 复制代码
insert into 表名 (字段名1, 字段名2, ...)
value (值1, 值2, ...);

给全部字段添加数据:

sql 复制代码
insert into 表名 values (值1, 值2, ...)

批量添加数据:

sql 复制代码
insert into 表名 (字段名1, 字段名2, ...)
values (值1, 值2, ...),
	   (值1, 值2, ...),
	   (值1, 值2, ...);

字段名也可以不用加

修改数据

sql 复制代码
update 表名 
set 字段名1 = 值1,
字段名2 = 值2,
...
[while 条件];

例如:

删除数据

sql 复制代码
delete from 表名
[where 条件];

查询数据

sql 复制代码
select 字段名(可以用*)
from 表
where 条件;

DQL

数据查询语言

查询

查询多个字段

字段设置别名

去除重复记录

条件查询

条件:

常用逻辑运算符

聚合函数

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

NULL值是不参与所有聚合函数运算的

分组查询

下面是一个分组查询的例子

查询结果:

一个加上having关键字后的例子

having和where的区别:

  1. where是分组之前过滤而having是分组之后过滤
  2. where不能用聚合函数作为条件

排序查询

例子:

升序:

降序:

多条件排序:

分页查询:

!在这里插入图片描述(https://i-blog.csdnimg.cn/direct/764ecc734f324235![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/318cc561c7f54581be8ef864d2c5758d.png)

b5d38a10307db01e.png)

DQL执行顺序:

DCL

MySQL客户端连接服务端的权限说明

sql.user表中常用的字段分类:

查询用户

创建用户


在创建用户时,可以添加WITH直接为用户指定可操作的资源范围,如登录的用户在一小时内可以查询数据的次数等。

在创建用户时,不仅可以为用户设置密码,还可以为密码设置有效时间。

利用ACCOUNT 关键字可以为创建的用户设置是否被锁定。

它有两个可选值,分别为LOCK(锁定)和UNLOCK(解锁)。被锁定的用户不能在客户端登录MySQL服务器。

设置密码
删除用户
sql 复制代码
DROP USER [IF EXISTS] 账户名 [, 账户名] ...;

权限控制

常用权限:

查询权限
授予权限

语法:

例子:

sql 复制代码
-- 授予用户对特定表的INSERT, UPDATE, DELETE权限
GRANT INSERT, UPDATE, DELETE ON database_name.table_name TO 'username'@'host';

-- 授予用户WITH GRANT OPTION(可以转授权限)
GRANT SELECT ON database_name.* TO 'username'@'host' WITH GRANT OPTION;

在为用户授予权限时可以分为六种不同的等级

回收权限

语法:

例子:

刷新权限

GRANT、 CREATE USER等操作会将服务器的缓存信息保存到内存中,而REVOKE、 DROP USER操作并不会同步到内存中,因此可能会造成服务器内存的消耗,所以在REVOKE、 DROP USER后推荐使用MySQL提供的"FLUSH PRIVILEGES"重新加载用户的权限。

SQL函数

字符串函数


数值函数


日期函数


流程函数


相关推荐
瞬间&永恒~5 小时前
【MySQL】 InnoDB 锁等待排查与并发压测实验
运维·数据库·mysql
布鲁飞丝6 小时前
对 .NET线程 异常退出引发程序崩溃的反思
数据库·c#·.net
zcmodeltech6 小时前
智能矿井沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的感知-传输-控制一体化方案
服务器·数据库·分布式·stm32·单片机·嵌入式硬件
江晓鱼未暖7 小时前
十七、Redis 核心原理与架构详解
大数据·数据库·数据仓库·redis·缓存·架构
copyer_xyf7 小时前
PostgreSQL 做向量检索:一条单库路线
数据库·agent·nestjs
Access开发易登软件7 小时前
Access 怎么做前后端分离?用 Web API 读写 SQL Server
前端·数据库·人工智能·microsoft·excel·access
Juicedata7 小时前
腾讯云 x JuiceFS:基于 FoundationDB 的企业级统一存储实践
数据库·人工智能·科技·云计算·腾讯云
小罗水7 小时前
第13章 Redis 缓存、幂等锁与任务状态
数据库·redis·缓存
SelectDB技术团队7 小时前
当 PostgreSQL 面临性能瓶颈:80TB 电商业务迁移至 Apache Doris 的实践思考
数据库·postgresql·apache
心念枕惊7 小时前
新写了个直播录制工具,可录制抖音快手斗鱼直播
运维·服务器·数据库