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函数

字符串函数


数值函数


日期函数


流程函数


相关推荐
OceanBase数据库官方博客1 分钟前
滔搏基于OceanBase实现 15TB到0.9TB“无痛切换”与“系统瘦身”
数据库·oceanbase·分布式数据库
Jess077 分钟前
MySQL内置函数
数据库·mysql
OceanBase数据库官方博客8 分钟前
爱奇艺基于OceanBase实现百亿级卡券业务的“单库双擎”架构升级
数据库·架构·oceanbase·分布式数据库
weixin1997010801611 分钟前
锦程物流item_get - 获取详情接口对接全攻略:从入门到精通
数据库·python
AC赳赳老秦14 分钟前
DeepSeek 辅助科研项目申报:可行性报告与经费预算框架的智能化撰写指南
数据库·人工智能·科技·mongodb·ui·rabbitmq·deepseek
2501_9277730714 分钟前
Linux系统编程——sqlite数据库
数据库
mahailiang18 分钟前
codeblocks+wxWidgets Projects中引用第三方库(sqlite3)
数据库·sqlite·wxwidgets·codeblocks
cyforkk39 分钟前
09、Java 基础硬核复习:异常处理(容错机制)的核心逻辑与面试考点
java·数据库·面试
CC.GG1 小时前
【Linux】进程控制(二)----进程程序替换、编写自主Shell命令行解释器(简易版)
linux·服务器·数据库
2301_765703141 小时前
开发一个简单的Python计算器
jvm·数据库·python