Experiment1
实验1
1.1.5 思考1
SQL 语法规定,双引号括定的符号串为对象名称,单引号括定的符号串为常量字符串,那么什么情况下需要用双引号来界定对象名呢?请实验验证。
实验目的
验证双引号在ANSI_QUOTES 模式下有不同的作用。如果启用了 ANSI_QUOTES 模式,则双引号不能用来表示字符串,而只能用来表示对象;如果没有启用 ANSI_QUOTES 模式,则双引号可以用来表示字符串。
实验内容
MySQL 不是默认了 ANSI_QUOTES 模式,这个模式需要手动设置。可以通过以下语句来查看或修改当前的 sql_mode:
1 | -- 查看当前的 sql_mode |
完整代码如下:
1 | SET sql_mode = 'ANSI_QUOTES'; |
简写代码如下
1 | SET sql_mode = 'ANSI_QUOTES'; |
实验结果
- 在ANSI_QUOTES模式下时,双引号所代表的都是对象,可以从
employees
表中取到各种数据 - 在空白模式下,双引号所代表的是字符串,无法从
employees
表中取到各种数据 - 不论在ANSI_QUOTES模式下还是在空白模式下,反引号所代表的都是对象,单引号所代表的都是字符串
结论与分析
- 验证的方法是在 SQL 语句中使用双引号来界定对象名,并执行 SQL 语句,看是否能正确运行。如果能正确运行,说明双引号的作用是有效的;如果报错,说明双引号的作用是无效的或者不被支持
- 在 MySQL 中,对象名就是指数据库中的组成部分,比如表,索引,视图等的名字
- 对象是用来标识和引用数据库中的组成部分,字符串是用来表示文本或者其他数据
1.1.5 思考2
数据库对象的完整引用是“服务器名.数据库名.模式名.对象名”,但通常可以省略服务器名和数据库名,甚至模式名,直接用对象名访问对象即可。请设计相应的实验验证基本表及其列的访问方法。
实验目的
验证可以省略服务器名和数据库名,甚至模式名,直接用对象名访问对象
实验内容
1 | SELECT * FROM new_schema.dept_emp; -- 省略服务器名和数据库名,得到所有的数据 |
实验结果
输入上面两行代码,所得到的结果都是一样的,这说明我们可以使用完整引用,也可以使用省略的引用来访问表中的数据
结论与分析
在 SQL Server 中,数据库对象的完整引用是“服务器名.数据库名.模式名.对象名”。
- 数据库名:指定了包含该对象的数据库的名称。
- 模式名:指定了包含该对象的模式的名称。模式是一组逻辑结构,用于组织和管理数据库中的对象。
- 对象名:指定了要访问的对象(例如表、视图或存储过程)的名称。
我们既可以使用完整引用,也可以使用省略部分引用的方式来访问数据。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 丁丁的小窝(*^_^*)!