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

这篇具有很好参考价值的文章主要介绍了读SQL学习指南(第3版)笔记03_创建和填充数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读SQL学习指南(第3版)笔记03_创建和填充数据库文章来源地址https://www.toymoban.com/news/detail-665448.html

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位数字表示的年份

到了这里,关于读SQL学习指南(第3版)笔记03_创建和填充数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 读SQL学习指南(第3版)笔记01_背景知识

    2.1.3.1. 单根层次结构 2.1.5.1. Microsoft的Active Directory 2.1.5.2. 开源的Apache Directory Server 3.1.3.1. 大型共享数据银行的数据关系模型 3.2.2.1. 不用操心跟踪已分配的数字 3.2.4.1. 由两个或多于两个列组成的主键 4.4.1.1. 用于定义存储在数据库中的数据结构 4.4.1.2. 通过SQL模式语句所创

    2024年02月12日
    浏览(41)
  • 读SQL学习指南(第3版)笔记06_连接和集合

    1.1.2.1. 两个数据表的所有排列组合 1.1.3.1. 使用频率并不高 1.1.5.1. 涉及交叉连接、外连接、日期函数、分组、集合运算(union all)和聚合函数(count()) 1.1.5.2. sql 1.1.5.3. mysql 1.1.5.4. 如果生成{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}、{0, 10, 20, 30, 40, 50, 60, 70, 80, 90}和{0,100, 200, 300}这3个集合的

    2024年02月11日
    浏览(31)
  • 读SQL学习指南(第3版)笔记08_视图和索引

    3.1.3.1. Oracle Database用户另一种选择可以保护数据表的行列数据安全 3.1.3.2. VPD允许用户对数据表施加策略,服务器据此对用户的查询进行修改 5.10.4.1. sql 5.12.1.1. 平衡树索引(balanced-tree index) 5.12.1.1.1. B树索引(B-tree index) 5.12.1.2. MySQL、Oracle Database和SQL Server均默认采用B树

    2024年02月10日
    浏览(40)
  • 读SQL学习指南(第3版)笔记09_条件逻辑与事务

    1.3.1.1. Oracle的decode()函数 1.3.1.2. MySQL的if()函数 1.3.1.3. SQL Server的coalesce()函数 1.3.2.1. 在Oracle Database、SQL Server、MySQL、PostgreSQL、IBM UDB等数据库中实现 1.3.3.1. 用于select、insert、update和delete语句 1.3.4.1. sql 1.3.4.2. mysql 1.3.5.1. simple case expression 1.3.5.2. 类似于搜索型case表达式,但

    2024年02月10日
    浏览(39)
  • 读SQL学习指南(第3版)笔记07_分组和子查询

    2.1.1.1. 查询返回的每个值都是由聚合函数生成的 2.1.1.2. 没有使用group by子句 2.1.1.3. 只有一个隐式分组 2.1.1.3.1. payment数据表中的所有行 2.2.1.1. 添加一个group by子句来指定聚合函数应该应用于哪个分组 2.6.2.1. 因为在评估where子句时,分组尚未生成,因而必须将分组过滤条件

    2024年02月11日
    浏览(39)
  • 读SQL学习指南(第3版)笔记12_时间函数和分析函数

    1.6.3.1. SQL Server的getutcdate() 1.6.3.2. MySQL的utc_timestamp() 1.8.2.1. 对于每个登录的用户可能有所不同 1.8.2.2. 改变当前会话的时区设置 1.8.2.3. mysql> SET time_zone = \\\'Europe/Zurich\\\'; 2.4.1.1. 年份,包括世纪 2.4.1.2. 1000--9999 2.4.2.1. 月份 2.4.2.2. 01 (1月)~12 (12月) 2.4.3.1. 日 2.4.3.2. 01~31 2.4.4.1

    2024年02月10日
    浏览(42)
  • 读SQL学习指南(第3版)笔记10_元数据与大数据

    1.3.19.1. system catalog 5.7.2.1. 服务器会检查数据表的元数据,以确定实际需要包含哪些分区 5.7.3.1. 只有那些包含查询所需数据的分区才会被包含在内 5.7.4.1. 财务数据可能需要在线保存7年,如果数据表已根据事务日期进行分区,就可以撤销数据保存时长超过7年的分区 5.9.1.1. 

    2024年02月10日
    浏览(37)
  • 读SQL学习指南(第3版)笔记11_字符串函数和数值函数

    2.5.3.1. SQL Server 2005还包括varchar(max)数据类型,并建议使用其代替text类型,text类型将在未来的某个版本中被删除 2.9.7.1. 如果使用的是MySQL,可以通过内建函数quote()来实现,该函数会将整个字符串放入引号内并对其中任意的引号/撇号进行转义 2.9.7.2. mysql 2.9.7.3. 在检索数据用

    2024年02月10日
    浏览(43)
  • SQL学习笔记——创建数据库和表

    一、创建数据库和表 1、创建数据库 打开 SSMS(Microsoft SQL Server Management Studio)→新建查询→输入如下图的sql语句→点击执行 成功后可以看到左侧数据库中成功创建了“CPXS”产品销售数据库。对应路径下新增数据库文件。 说明: 主数据库文件扩展名为.mdf,表示Main Data File;

    2024年02月01日
    浏览(48)
  • 2023 年如何学习 SQL:初学者终极指南

    什么是 SQL,它的用途是什么? SQL 在 2023 年仍然适用吗? 你应该学习 SQL 吗? 学习 SQL 的不同方法 SQL 入门 SQL初学者可能害怕问的问题 学习 SQL 的先决条件是什么,我需要有任何编码经验吗? SQL 有哪些实际应用,哪些行业依赖于此技能? 学习SQL需要多长时间,我应该投入多

    2024年02月03日
    浏览(102)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包