读SQL学习指南(第3版)笔记03_创建和填充数据库

news2025/1/12 8:50:37

 

1. 创建数据表

1.1. sql

CREATE TABLE person
 (person_id SMALLINT UNSIGNED,
  fname VARCHAR(20),
  lname VARCHAR(20),
  eye_color CHAR(2),
  birth_date DATE,
  street VARCHAR(30),
  city VARCHAR(20),
  state VARCHAR(20),
  country VARCHAR(20),
  postal_code VARCHAR(20),
  CONSTRAINT pk_person PRIMARY KEY (person_id)
 );

1.2. eye_color CHAR(2) CHECK (eye_color IN ('BR','BL','GR')),

1.2.1. MySQL允许在定义列时关联检查约束

1.3. eye_color ENUM('BR','BL','GR'),

1.3.1. MySQL提供了另一种名为enum的字符数据类型,将检查约束并入了数据类型定义

1.4. sql

CREATE TABLE person
 (person_id SMALLINT UNSIGNED,
  fname VARCHAR(20),
  lname VARCHAR(20),
  eye_color ENUM('BR','BL','GR'),
  birth_date DATE,
  street VARCHAR(30),
  city VARCHAR(20),
  state VARCHAR(20),
  country VARCHAR(20),
  postal_code VARCHAR(20),
  CONSTRAINT pk_person PRIMARY KEY (person_id)
 );

1.5. 查看数据表定义

1.5.1. mysql> desc person;

2. 什么是null?

2.1. 不适用

2.2. 未知

2.3. 空集

3. 数值型主键数据

3.1. 找到当前数据表中的最大值,然后加1

3.2. 由数据库服务器提供

3.2.1. 所有的数据库服务器都提供了一种安全稳健的方法来生成数值型主键

3.2.2. Oracle Database,使用称为序列(sequence)的独立模式对象(schema object)

3.2.3. MySQL中,只需简单地为主键列启用自增(auto-increment)特性

3.2.3.1. ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;

4. XML格式的数据

4.1. 对于MySQL,可以在调用mysql工具时使用--xml选项,所有查询的输出都会自动转换成XML格式

4.1.1. sql

C:\database> mysql -u lrngsql -p --xml bank
Enter password: xxxxxx
Welcome to the MySQL Monitor...
Mysql> SELECT * FROM favorite_food;
<?xml version="1.0"?>
<resultset statement="select * from favorite_food"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
        <field name="person_id">1</field>
        <field name="food">cookies</field>
  </row>
  <row>
        <field name="person_id">1</field>
        <field name="food">nachos</field>
  </row>
  <row>
        <field name="person_id">1</field>
        <field name="food">pizza</field>
  </row>
</resultset>
3 rows in set (0.00 sec)

4.2. 对于SQL Server

4.2.1. SELECT * FROM favorite_food FOR XML AUTO, ELEMENTS

5. 常见错误及响应

5.1. 非唯一的主键

5.1.1. ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

5.1.2. 由于数据表定义中包含主键约束,因此MySQL会确保重复的主键值不会被插入数据表中

5.2. 不存在的外键

5.2.1. ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraintfails ('sakila'.'favorite_food', CONSTRAINT 'fk_fav_food_person_id' FOREIGNKEY('person_id') REFERENCES 'person' ('person_id'))

5.2.2. 仅当使用InnoDB存储引擎创建数据表时,外键约束才是强制的

5.3. 列值违规

5.3.1. ERROR 1265 (01000): Data truncated for column 'eye_color' at row 1

5.3.2. 服务器对所提供的eye_color列的值不满意

5.4. 无效的日期转换

5.4.1. ERROR 1292 (22007): Incorrect date value: 'DEC-21-1980' for column 'birth_date' at row 1

5.4.2. 最好是明确指定格式化字符串,而不是依赖默认格式

5.4.3. str_to_date函数指定了格式化字符串

5.4.3.1. sql

mysql> UPDATE person
    -> SET birth_date = str_to_date('DEC-21-1980' , '%b-%d-%Y')
    -> WHERE person_id = 1;
Query OK, 1 row affected (0.12 sec)
Rows matched: 1  Changed: 1  Warnings: 0

5.4.3.2. %a 星期几的简写,比如Sun、Mon、...

5.4.3.3. %b 月份名称的简写,比如Jan、Feb、...

5.4.3.4. %c 月份的数字形式(0…12)

5.4.3.5. %d 月份中的天数(00…31)

5.4.3.6. %f 微秒数(000000…999999)

5.4.3.7. %H 24小时制中的小时(00…23)

5.4.3.8. %h 12小时制中的小时(01…12)

5.4.3.9. %i 小时中的分钟数(00…59)

5.4.3.10. %j 一年中的天数(001…366)

5.4.3.11. %M 月份的全称(January…December)

5.4.3.12. %m 月份的数值形式

5.4.3.13. %p AM或PM

5.4.3.14. %s 秒数(00…59)

5.4.3.15. %W 星期几的全称(Sunday…Saturday)

5.4.3.16. %w 一星期中的天数(0=周日;6=周六)

5.4.3.17. %Y 4位数字表示的年份

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/917585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试技术分享丨使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…

凯迪正大—变比测试仪

一、产品简介 KDB-II全自动变比组别测试仪是根据 《中华人民共和国电力行业标准》制造的高电压测试设备,按通用技术条件 DL/T963-2005设计,依据《电力设备交接和预防性试验规程》,可有效监督变压器产品出厂及使用过程中的质量,防…

java.lang.IllegalStateException: Failed to load ApplicationContext异常

错误原由 今天在编写SpringBoot项目整合MyBatis框架的过程中,产生了这个错误 java.lang.IllegalStateException: Failed to load ApplicationContextat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheA…

Flutter性能揭秘之RepaintBoundary

作者:xuyisheng Flutter会在屏幕上绘制Widget。如果一个Widget的内容需要更新,那就只能重绘了。尽管如此,Flutter同样会重新绘制一些Widget,而这些Widget的内容仍有部分未被改变。这可能会影响应用程序的执行性能,有时…

04架构管理之分支管理实践-一种git分支管理最佳实践

专栏说明:针对于企业的架构管理岗位,分享架构管理岗位的职责,工作内容,指导架构师如何完成架构管理工作,完成架构师到架构管理者的转变。计划以10篇博客阐述清楚架构管理工作,专栏名称:架构管理…

Sentinel 控制台(集群流控管理)

规则配置 要通过 Sentinel 控制台配置集群流控规则&#xff0c;需要对控制台进行改造。我们提供了相应的接口进行适配。 从 Sentinel 1.4.0 开始&#xff0c;我们抽取出了接口用于向远程配置中心推送规则以及拉取规则&#xff1a; DynamicRuleProvider<T>: 拉取规则Dy…

面试官问我Redis怎么测,我一脸懵逼!

有些测试朋友来问我&#xff0c;redis要怎么测试&#xff1f;首先我们需要知道&#xff0c;redis是什么&#xff1f;它能做什么&#xff1f; redis是一个key-value类型的高速存储数据库。 redis常被用做&#xff1a;缓存、队列、发布订阅等。 所以&#xff0c;“redis要怎么测试…

单片机的ADC

如何理解ADC。ADC就是将模拟量转换成数字量的过程&#xff0c;就是转换为计算机所能存储的0和1序列&#xff0c;比如将模拟量转换为一个字节&#xff0c;所以这个字节的大小要能反应模拟量的大小&#xff0c;比如一个0-5V的电压测量量&#xff08;外部输入电压最小0V,最大为5V&…

Lnton羚通视频算法算力云平台如何快速了解pandas(下)

数据分组 Splitting : 利用某些条件将数据进行分组Applying : 函数应用于每个单独的分组Combining : 合并最终的结果 df pd.DataFrame({"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo&q…

内网 里面安装 vue

1.先在内网电脑上安装node,跟自己电脑一样的版本 2.把自己电脑 node里面 node-cache, node_global&#xff0c;node_modules 三个文件 拷贝到内网电脑 的node 里面 3.内网在配置 node_cache的环境变量环境变量如何配置连接

傻傻分不清楚什么是无代码、零代码和低代码,这篇文章帮你弄懂

想要明白什么是零/无代码&#xff0c;就得明白低代码是什么。低代码和零/无代码都是这几年才诞生的新名词。对两者的认知&#xff0c;大家都是比较模糊的。趁今天这个机会&#xff0c;小帆给大家仔细介绍下。 零/无代码的概念 低代码开发平台与无代码开发平台 低代码开发平台…

ReoGrid.NET集成到winfrom

ReoGrid一个支持excel操作的控件,支持集成到任何winfrom项目内。 先看效果图: 如何使用&#xff1a; 使用ReoGrid自带excel模版设计工具先设计一个模版,设计器如下&#xff1a; 具体例子看官方文档 代码示例如下&#xff1a; var sheet reoGridControl1.CurrentWorksheet; …

国内有哪些认证体系?企业需要做哪些体系认证?在哪里查验?

我们经常看到一些公司在给自己打广告时&#xff0c;宣传自己通过了什么​ISO体系认证&#xff0c;听着非常的高大上&#xff0c;很令人信服。 那么&#xff0c;企业所说的体系认证是什么呢&#xff1f; iso体系是国际标准化组织&#xff08;简称iso&#xff09;建立的组织内部…

如何搭建关键字驱动自动化测试框架?

前言 那么这篇文章我们将了解关键字驱动测试又是如何驱动自动化测试完成整个测试过程的。关键字驱动框架是一种功能自动化测试框架&#xff0c;它也被称为表格驱动测试或者基于动作字的测试。关键字驱动的框架的基本工作是将测试用例分成四个不同的部分。首先是测试步骤&#…

Java入坑之 数据库编程

一、基础概念 1.1JDBC 步骤 导入驱动jar包 注册驱动 获取数据库连接对象 Connection DataSource dSource; dSource.getConnection(); 定义sql语句 String sql "update account set balance 500 where id 1"; 获取执行sql语句的对象 Statement PreparedStatement…

Linux权限维持—Strace监控Alias别名Cron定时任务

Linux权限维持—Strace监控&Alias别名&Cron定时任务 1. 前言2. 隐藏手法2.1. 时间伪造2.1.1. 修改时间 2.2. 隐藏文件2.3. chattr命令2.3.1. 命令参考2.3.2. 属性添加2.3.3. 属性解除 2.4. 历史命令2.4.1. 隐藏命令 2.5. 清除登录日志2.5.1. 清除登录成功日志2.5.2. 清…

计算机竞赛 基于LSTM的天气预测 - 时间序列预测

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 机器学习大数据分析项目 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/po…

Linux:编写编译脚本Makefile文件

一、生成可执行文件 1、一个源文件编译 本例子主要区别.c及.cpp文件及编译该文件时使用的编译链。 1).c文件 // testadd.c #include <stdio.h> int main() {int a 1;int b 2;int sum a b;printf("sum %d\n", sum);return 0; }// Makefie GXX g CC gcc…

详解!视频云存储/安防监控视频AI智能分析平台区域入侵/周界报警功能

区域入侵/周界报警入侵检测技术是TSINGSEE青犀智能分析平台推出的一种视频监控系统&#xff0c;可检测划定区域内是否有可疑人员并且在检测出这样的事件时生成警报。 视频监控/安防监控/视频存储TSINGSEE青犀视频智能分析平台可以在监控范围内划定特定区域&#xff0c;有人员入…

@Transactional注解和Mybatis缓存问题,Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致

Mybatis 查询结果 List 对List修改后再次查询&#xff0c;结果与数据库不一致 使用 Mybatis 查询&#xff0c;结果为对象的 List &#xff0c;修改List内的参数后&#xff0c;使用相同参数再次查询&#xff0c;发现查询结果与数据库不一致&#xff0c;而是第一次查询结果操作后…