今天边肖就和大家分享一下MySQL语句的整理和汇总的介绍。边肖觉得内容挺好的,现在分享给大家,很有参考价值。有需要的朋友一起看看吧。
SQL(结构化查询语言)语句,即结构化查询语言,是操作和检索关系数据库的标准语言。SQL语句通常分为以下几类:
DCL(数据库控制语言)语句:主要由GRANT和REVOKE完成。
DDL(数据库定义语言)语句:主要由CREATE、ALTER、DROP、TRUNCATE四个关键字完成。
DML(数据库操作语言)语句:主要由插入、更新和删除完成。
查询语句:主要由SELECT语句完成
事务控制语句:主要由提交、回滚、保存点三个关键词完成。
注意:SQL语句不区分大小写,因此create和CREATE是相同的。
一.DCL语句
DCL语句是对用户授权和撤销授权的操作,可以控制不同用户的权限,增加数据库的安全性,维护数据库。一般情况下,数据库管理员使用超级用户root进行操作。
MySQL权限命令是grant,权限撤销命令是revoke;
1.grant授权格式:
图书馆授权列表。由“密码”标识的用户名@“IP”的表;
2.revoke回收权限格式:
撤消库上的权限列表。用户名@ IP中的表;
二.DDL语句
数据库对象:
表、数据字典、约束、视图、索引、函数、存储过程和触发器。
CREATE、ALTER和DELETE关键字分别用于创建、修改和删除数据库对象。这里,我们以最常用的表上操作为例。
数据库的数据类型见://www . jb51 . net/article/55853 . htm。
对于数据库的完整性约束,请参考https://www.jb51.net/article/154000.htm.
1.CREATE:
创建表[模式名。]表名(
此表中的列定义
);
例如
创建表测试(
StuId VARCHAR(8)主键,
StuName VARCHAR(30)不为空,
StuAge SMALLINT不为空,
出生日期时间
);
注意:查看表结构:描述表名;
2.ALTER:
1)添加列:
更改表表名
添加列columnName1数据类型[default expr][FIRST | AFTER colName];
ColumnName1:新添加的列名;
数据类型:数据类型;
默认表达式:完整性约束;
FIRST|AFTER colName:插入位置,默认情况下插入到最后一列,首先在第一列,然后在指定列之后的colName之后。
例如
变更表格测试
在StuName后添加列stu major VARCHAR(20)NOT NULL;
2)修改列
alter table name changeoldnamewnamedatatype;
例如
更改表测试更改学生生日年份;
3)删除列
ALTER TABLE name DROP column column name;
例如
ALTER TABLE test DROP列StuMajor
4)修改表名
将表名重命名为新的表名;
例如
将表测试重命名为学生;
3.DROP
删除表格
删除表名;
例如
掉桌子学生;
4.TRUNCATE
删除表中的所有数据但保留表的结构称为“截断”
TRUNCATE TABLE表名;
例如
截断表学生;
三.DML语句
1.INSERT
标准的SQL语句只允许一次插入一条数据,但是MySQL扩展了它,使它可以一次插入多条数据。
插入一段数据:
插入表名值(值1,值2,);
插入多条数据:
插入表格名称值(值1,值2,)、(值1,值2,)、(值1,值2,);
例如
插入学生值(' 001 ',' Lisa ',20,1997),(' 002 ',' Rose ',21,1996);
2.UPDATE
更新表名setcolumn1=value1 [,column2=value2].
[WHERE条件];
例如,将所有20岁以上的学生的年龄与1
更新学生集stu age=stu age 1 WHERE stu age 20;
3.DELETE
from表名[WHERE条件];
例如删除所有1997年出生的学生信息。
从生日=1997的学生中删除;
四.查询语句
1.单表查询:
选择列1、列2.
来自数据源
[WHERE条件]
[按列名分组]
[按列排序名称DESC|ASC]
例如,选择计算机专业的学生,并根据他们的学号按降序排列,只显示学生的姓名。
从学生中选择名字
StuMajor='CS '在哪里
由施蒂德ORDER订购;
2.多表查询:
1)简单的外部连接模式
选择值1[,值2].
来自表名1,表名2
其中tablename 1 . column 1=tablename 2 . column 2[AND.];
其中后跟连接条件和查询条件。
2)自我连接:有时候你需要和自己连接,这叫自我连接。
例如
有以下临时表
创建表emp(
id INT AUTO _ INCRETMENT主键,
姓名VARCAHR(255),
mangerId INT,
外键(managerId)引用临时(Id)
);
有四项记录。
id名称managerId
1个aaa空
2 bbb 1
3 ccc 1
4 ddd 1
查询该表:
Select雇员id,雇员姓名雇员姓名,经理姓名经理姓名
来自员工、员工经理
其中employee . manager id=manager . id;
此查询语句使用自联接显示雇员和经理之间的关系,其中:
Employee.name员工姓名、manager.name经理姓名员工姓名和经理姓名重命名,显示列时显示员工姓名和经理姓名。
从emp employee到emp manager,需要区分两个相同的表,并给它们不同的名称;
其中,employee.manager id=manager.id是连接条件。
更多多表连接,请参考:
https://www.jb51.net/article/154006.htm
五.事务处理
1.事务是由一步或几步数据库操作序列组成的逻辑执行单元。
这一系列操作要么完全执行,要么完全放弃。程序和事务是完全不同的概念。一般来说,一个程序可以包含多个事务。在MySQL中,引擎有很多种,最常用的两种引擎:InnoDB和MyISAM,其中InnoDB支持事务,MyISAM不支持,可以在config配置文件中修改。
2.事务的四个特性:
原子性:事务是应用程序中最小的执行单元。
一致性:作为事务执行的结果,数据库必须从一种一致状态变为另一种一致状态。原子性保证了一致性。
隔离:每个事务的执行互不干扰。
持久性:也称为持久性,这意味着一旦提交了事务,对数据所做的任何更改都会保存到物理数据库中。
这四种特性也被称为酸性。
3.数据库的事务由一组DML语句、一条DDL语句和一条DCL语句组成
DML语句对数据进行操作
只有一个DDL和一个DCL,因为DDL和DCL语句都提交事务。
4.事务的提交:
显示:提交
自动提交:DDL/DCL语句
默认情况下,MySQL会关闭事务(自动提交)。默认情况下,当用户输入DML语句时,操作将被提交。为了启动事务,可以通过以下语句设置自动提交
SET AUTOCOMMIT={0|1} 0表示关闭自动提交(打开事务),1表示打开自动提交(关闭事务)。
5.事务的回滚(rollback)
如果事务中包含的任何数据库操作失败,将执行回滚事务,并且事务中的所有操作都将失效。两种方式:
回滚:回滚
自动回滚:系统错误或强制退出。
6.例子:
如果只启动了一个临时事务,可以通过:start transaction或begin来启动临时事务,它之后的DML语句不会立即执行,事务直到提交或回滚后才会结束。
例如1
开始;
插入到学生值中(NULL,' 001 ',' AAA ');
插入到学生值中(NULL,' 002 ',' BBB ');
插入到学生值中(NULL,' 003 ',' CCC ');
SELECT * FROM student
回滚;
SELECT * FROM student
语句查询的结果中包含了插入的数据,但如果此时在另一个命令行窗口中执行该语句,则不会看到上述三条数据,这体现了事务的隔离性。这三段数据实际上并没有写入物理数据库;
执行回滚操作后,begin之后的三段数据在的查询语句结果中看不到。
例如2
插入到学生值中(NULL,' 001 ',' AAA ');
插入到学生值中(NULL,' 002 ',' BBB ');
保存点p;
插入到学生值中(NULL,' 003 ',' CCC ');
SELECT * FROM student
回滚到p;
SELECT * FROM student
MySQL还提供了关键字SAVEPOINT来设置中间点,可以设置回滚位置。处的查询结果包含三个数据插入结果,但处的查询结果不包含中间点p之后插入的数据,注意回滚到中间点不会结束事务。
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。