SQL语言
1|0SQL语言笔记
1|1SQL语言分类
-
SQL(Structured Query Language 即结构化查询语言)
-
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
分类
-
DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER #DDL(data definition language):
-
DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE #DML(data manipulation language):
-
DQL语句 数据库查询语言: 查询数据SELECT #DQL(Data Query Language )数据查询语言 SELECT
-
DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE #DCL(Data Control Language):
Mysql默认数据库
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
-
information_schema: 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
-
performance_schema: 主要存储数据库服务器的性能参数
- 提供进程等待的详细信息,包括锁、互斥变量、文件信息;
- 保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;
- 对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期
-
mysql: 授权库,主要存储系统用户的权限信息
-
sys: 主要存储数据库服务器的性能参数
- SYS database中,可以获取mem page、io 、latch/mutex/lock等各种性能数据,方便做peformance turning 和 troubleshooting。比如可以方便获取2个sql发生 lock block,用户占用的资源等信息。
表
- 记录的管理单元
记录(行)
- 信息的载体,字段的管理单元
- 例如:张三,男,23,云计算工程师,月薪25K
字段(列)
-
字段名,字段类型(长度),字段约束组成(可选)
-
姓名,文字,不能为空
-
张三
约束
- 唯一,不能为空,自动增长

2|0DDL
2|1DDL-库
创建数据库
语法
-
CREATE DATABASE 数据库名;
-
数据库名称要求
- 区分大小写
- 唯一性
- 不能使用关键字如 create select
- 不能单独使用数字和特殊符号“如-"
- 正常的:用拼音或单词即可。
选择/进入数据库
语法
- USE 数据库名
删除数据库
语法
- DROP DATABASE 数据库名;
数据库在系统中的位置
- /var/lib/mysql/

- 数据库的实体
- 清理
- 备份
2|2数据类型
数据类型种类
- 数值类型
- 整数类型 int
- 浮点数类型 float #小数
- 字符串类型
- 字符系列 CHAR和VARCHAR #char的长度不可变。 #varchar的长度可以增加
- 枚举类型 ENUM #单选
- 集合类型 SET #多选
- 时间和日期类型
- 年 YEAR
- 日期 DATE
- 时间 TIME
- 日期和时间 DATETIME
2|3DDL-表
创建目的
- 表是数据库存储数据的基本单位
- 表由若干个字段(列)组成
- 主要用来存储数据记录(行)
创建1列的表格-id
创建2列的表格-id和name
创建4列的表格-id、name、sex、age
3|0DML
3|1插入insert into
部分插入
需要指明要插入的数据是在一个字段
语法
- INSERT INTO 表名(列名,列名) VALUES (值1,值2);
完整插入
不需要指明哪个字段,但是要注意的是需要把数据按照字段类型插入
语法
- INSERT INTO 表名 VALUES (值1,值2,值3…值n);
3|2更新-update
语法
- UPDATE 表名 SET 列名=值 WHERE CONDITION;
更新数据
更新Mysql密码-root
3|3删除数据-delete
语法
删除一行数据
- DELETE FROM 表名 WHERE CONDITION;
删除多行数据
4|0DQL
4|1准备环境
准备一张表,包含三列信息
- id int 序号
- name varchar 姓名
- age int 年龄

简单查询
查看所有列
语法
-
SELECT * FROM 表名;
-
前提是需要进入数据库,不进入数据库,就请输入库名
查看部分列
语法
- SELECT 列1,列2,列3 FROM 表名;
通过四则运算查询
条件查询
单条件查询where
查询hr部门的员工姓名
语法
- select 列名,列名,from 表名 where 列名=条件;
多条件查询and/or
查询hr部门的员工姓名,并且工资大于1000
语法
- select 列名,列名 from 表名 where 部门字段=’条件‘ and 工资字段>1000;
查询所有部门的员工姓名,并且工资是6000或者8000的员工
语法
- select 列名,列名 from 表名 where 工资字段=6000 or 工资字段=8000;
关键字between and 在什么之间
查一查薪资在5000到15000
语法
- select * from 表名 where 工资字段 between 5000 and 15000;
不在5000~15000呢?请使用NOT
语法
- select * from 表名 where 工资字段 not between 5000 and 15000;
关键字IN集合查询
工资可能是4000,也可能是5000,还有可能是9000
语法
- select 列名,列名 from 表名 where 工资字段 in (条件);
工资可能不是4000,也可能是5000,还有可能是9000,怎么查
语法
- select 列名,列名 from 表名 where 工资字段 not in (条件);
关键字IS NULL
没有岗位描述的,值为空
语法
- select * from 表名 where 岗位字段 is null;
值非空
语法
- select * from 表名 where 岗位字段 is not null;
关键字LIKE模糊查询
好像有个员工姓a
语法
- select * from 表名 where 姓名字段 (a%); 通配符’%’代表多个任意字符
查询排序ORDER BY
以工资升序排列
语法
- select 列名,列名 from 表名 order by 工资字段 asc;
以工资降序排列
语法
- select 列名,列名 from 表名 order by 工资字段 desc;
工资最高的前五名
语法
- select 列名,列名 from 表名 order by 工资字段 desc limit 5;
5|0DCL
5|1权限级别
- Global level 所有库,所有表的权限
- Database level 某个数据库中的所有表的权限
- Table level 库中的某个表的权限
- Column level 表中的某个字段,的权限
5|2Mysql用户管理
5|3丢失root密码怎么办
修改Mysql启动设置文件
重启mysql程序
systemctl restart mysqld
跳过密码
登陆mysql
mysql -uroot
修改root用户密码
5|4Mysql权限原理
语法
- grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with option参数];
权限列表
-
all: 所有权限(不包括授权权限)
-
select,update 查询更新
-
*.* 所有库下的所有表
-
test.* test库下的所有表
-
web.stu_info test库下的stu_info表
-
grant SELECT (id), INSERT (name,age) ON mydb.mytbl to 'user8'@'localhost' identified by 'QianFeng@123';
-
192.168.99.% 192.168.99.1网段的所有主机
-
192.168.99.168 指定主机
-
localhost 指定本地
-
==with_option参数 GRANT OPTION 授权选项 #默认被授权用户没有给其他用户授权的权限,加入with_option参数就会被增加为其他用户授权的操作
5|5赋权
授予admin3 对test库 所有的表,具有所有权限(不包含授权)
语法
- grant all on 库名.* to 用户名@'本地用户' identified by '密码';
- grant all on test.* to admin3@'localhost' 其实这个sql也是可以的前提是用户需要创建完成,上面语句是如果没有当前用户那么他会创建一个用户来应用这个权限
5|6回收权限
查看自己权限
语法
- 使用 show grants 或者 show grants\G
查看别人的权限
语法
- show grants for 用户名/'localhost';
用户权限回收
收回admin3的权限
语法
- REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
注意
- 5.6版本之前,先revoke all privilege再drop user
- 5.7之后,直接drop user 也可以回收权限
__EOF__

本文链接:https://www.cnblogs.com/Jqazc/p/16806114.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具