当前位置: 首页 > news >正文

MySQL从0到1全教程【2】SQL语言的通用语法及分类

1 SQL语言的通用语法格式

无论是那种数据库的产品,SQL语法都是通用的。

  • SQL语句可以单行编写也可以多行编写,以分号结尾。
  • SQL语句可以使用空格或者缩进的方式来增强语句的可读性,空格和缩进的数量没有限制。
  • MySQL数据库的SQL语句是不区分大小写的,关键字还是建议使用大写,较为规范,当然也看个人习惯。
  • 关于注释方面有两种情况:
    ①单行注释:–注释内容或者#注释内容(#号注释是MySQL特有的写法)
    ②多行注释:/**注释内容**/

2 SQL语言的几种分类

2.1 DDL(Data Definition Languages)

DDL指的是数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。

主要的语句关键字包括create、drop、alter等。

注意: 在生产环境中,DDL类操作需要慎用,因为不能做roolback操作,一旦执行无法回退

例如:

--创建一个student表
create table student(id int identity(1,1) not null,name varchar(20) null,course varchar(20) null,grade numeric null
)
--student表增加一个年龄字段
alter table student add age int NULL--student表删除年龄字段,删除的字段前面需要加column,不然会报错,而添加字段不需要加column
alter table student drop Column age--删除student表
drop table student --删除表的数据和表的结构
truncate table student -- 只是清空表的数据,,但并不删除表得结构,student表还在只是数据为空

2.2 DML(Data Manipulation Language)

DML指的是数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。

主要的语句关键字包括insert、delete、update、select等。

例如:

--向student表中插入数据
--数据库插入数据 一次性插入多行多列 格式为INSERT INTO table (字段1, 字段2,字段3) VALUES (值1,值2,值3),(值1,值2,值3),...;
INSERT INTO student (name, course,grade) VALUES ('张飞','语文',90),('刘备','数学',70),('关羽','历史',25),('张云','英语',13);--更新关羽的成立
update student set grade='18' where name='关羽'--关羽因为历史成绩太低,要退学,所以删除关羽这个学生
delete from student where name='关羽'

2.3 DQL(Data Query Language)

DQL指的是数据查询语句,用来进行数据库中数据的查询的,即最常用的select语句

例如:

--从student表中查询所有的数据
select * from student--从student表中查询姓名为张飞的学生
select * from student where name='张飞'

注意:复杂的DQL语句需要以索引做为支撑,如果在条件列内没命中索引,且查询的数据量较大,那么查询的时间将很长

2.4 DCL(Data Control Language)

DCL指的是数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别,比如常见的授权、取消授权、回滚、提交等等操作

主要的语句关键字包括grant、revoke等

①创建用户

CREATE USER 用户名@地址 IDENTIFIED BY '密码';
--创建一个testuser用户,密码111111
create user testuser@localhost identified by '111111';

②给用户授权

GRANT 权限1,, 权限n ON 数据库.对象  TO 用户名;
--将test数据库中所有对象(表、视图、存储过程,触发器等。*表示所有对象)的create,alter,drop,insert,update,delete,select赋给testuser用户
grant create,alter,drop,insert,update,delete,select on test.* to testuser@localhost;

③撤销授权

REVOKE权限1,, 权限n ON 数据库.对象 FORM 用户名;
--将test数据库中所有对象的create,alter,drop权限撤销
revoke create,alter,drop on test.* to testuser@localhost;

④查看用户权限

SHOW GRANTS FOR 用户名;
--查看testuser的用户权限
show grants for testuser@localhost;

⑤删除用户

DROP USER 用户名;
--删除testuser用户
drop user testuser@localhost;

⑥修改用户密码

USE mysql;
UPDATE USER SET PASSWORD=PASSWORD(‘密码’) WHERE User=’用户名’ and Host=’IP’;
FLUSH PRIVILEGES;
--将testuser的密码改为123456
update user set password=password('123456') where user='testuser' and host=’localhost’;
flush privileges; 
http://www.lryc.cn/news/279489.html

相关文章:

  • 【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分
  • Unity组件开发--相机跟随角色和旋转
  • JavaScript系列——Proxy(代理)
  • QT第三天
  • Jetpack Compose -> 声明式UI Modifier
  • windows10 装docker和docker compose
  • 第二次面试总结 - 宏汉科技 - Java后端开发
  • GPT-4:人工智能的新纪元与未来的无限可能
  • 2.右值引用和移动语义
  • 深入浅出线程原理
  • openssl3.2 - 官方demo学习 - saccept.c
  • JavaScript基础(26)_dom增删改练习
  • mac上部署单体hbase
  • 【RV1126 学习】SDK/ U-Boot/kernel/rootfs 编译学习
  • Golang 使用 AST 获取方法和参数名以及应用举例
  • DC-DC变换集成电路芯片B34063——工作电压范围宽,静态电流小
  • 强力推荐:本地文件加密软件—超详细加密步骤来了!
  • 在qml中,ListModel可以与WorkerScript一起使用,从多个线程访问列表模型
  • rocketmq实现延迟消息
  • vue倒计时60秒改变按钮状态效果demo(整理)
  • 多区域isis配置实验
  • Ubuntu 22.04.3 LTS arm64 aarch64 ISO jammy-desktop-arm64.iso 下载
  • 软件测试面试必备知识
  • 4.4 媒资管理模块 - 分布式任务处理介绍、视频处理技术方案
  • K8S集群重新初始化--详细过程
  • 服务器 Linux常见指令
  • C++合并K个有序链表
  • win10在启动游戏时报错,提示“d3dx9_25.dll文件丢失”,怎么办?d3dx9_25.dll丢失如何自动修复
  • 16. 蒙特卡洛强化学习基本概念与算法框架
  • QT中程序执行时间精准计算的三种方法及对比