朝花夕拾-5-----SQL语句(表的增删改)

 

目录

1. 第16课  创建表

1.1 知识点

1.2 练习题

2.  第17课  更改表

2.1 知识点

2.2 练习题

3. 第18课  删除表

3.1 知识点

3.2 练习题


1. 第16课  创建表

1.1 知识点

如果要在数据库中存储新实体和关系,可以使用CREATE TABLE语句创建新的数据库表,语句如下:

创建具有可选表约束和默认值的表语句
CREATE TABLE IF NOT EXISTS mytable (
    column DataType TableConstraint DEFAULT default_value,
    another_column DataType TableConstraint DEFAULT default_value,
    …
);

新表的结构由表模式定义,该模式定义一系列列,每个列都有一个名称,列的属性,插入值的可选表约束以及可选的默认值。如果已存在具有相同名称的表,则SQL实现通常会抛出错误,因此要禁止错误并跳过创建表(如果存在),则可以使用该IF NOT EXISTS子句。

  • 表的数据类型(Table data types)

不同的数据库支持不同的数据类型,但常见的类型支持数字,字符串和其他杂项,如日期、布尔值,甚至二进制数据,一下是表中的数据类型。

表的数据类型
数据类型描述
INTEGER, BOOLEAN整数数据类型可以存储整数值,例如数字或年龄的计数。在一些实现中,布尔值仅表示为仅0或1的整数值。
FLOATDOUBLEREAL浮点数据类型可以存储更精确的数值数据,如测量值或小数值。根据该值所需的浮点精度,可以使用不同的类型。
CHARACTER(num_chars)VARCHAR(num_chars)TEXT

基于文本的数据类型可以在各种语言环境中存储字符串和文本。在处理这些列时,各种类型之间的区别通常相当于数据库的效率。

CHARACTER和VARCHAR(变量字符)类型都指定了它们可以存储的最大字符数(较长的值可能被截断),因此使用大表存储和查询会更有效。

DATE, DATETIMESQL还可以存储日期和时间戳,以跟踪时间序列和事件数据。特别是在跨时区操纵数据时,它们可能很难处理。
BLOB最后,SQL可以将二进制数据存储在数据库中的blob中。这些值通常对数据库不透明,因此您通常必须使用正确的元数据存储它们以重新查询它们。
文档: MySQL, Postgres, SQLite, Microsoft SQL Server
  • 表的约束(Table constraints)

这里仅罗列了一些常见的约束,没有深入研究表约束。

表的约束
约束描述
PRIMARY KEY这意味着此列中的值是唯一的,并且每个值都可用于标识此表中的单个行。
AUTOINCREMENT对于整数值,这意味着该值会自动填充并随每行插入而递增。并非所有数据库都支持。
UNIQUE这意味着此列中的值必须是唯一的,因此您不能在此列中插入具有相同值的另一行作为表中的另一行。与“PRIMARY KEY”的不同之处在于它不必是表中行的键。
NOT NULL这意味着插入的值不能为“NULL”。
CHECK (expression)这允许您运行更复杂的表达式来测试插入的值是否有效。例如,您可以检查值是正数,还是大于特定大小,或者以特定前缀等开头。
FOREIGN KEY这是一致性检查,可确保此列中的每个值对应另一个表中列中的另一个值。
例如,如果有两个表,一个列出所有员工ID,另一个列出他们的工资单信息,`FOREIGN KEY`可以确保工资表中的每一行都对应于主员工列表中的有效员工。

1.2 练习题

#1.创建一个Database使用以下列命名的新表:
- Name描述数据库名称的字符串(文本)
- Version此数据库的最新版本的数字(浮点)
- Download_count此数据库下载次数的整数计数
该表没有约束。

SELECT TABLE FROM database(
Name TEXT,
Version FLOAT,
Download_count INTEGER
);

2.  第17课  更改表

SQL提供了一种方法,使用ALTER TABLE语句添加,删除或修改列和表约束来更新相应的表和数据库模式。

2.1 知识点

  • 添加列

添加新列的语法类似于在语句中创建新行时的语法CREATE TABLE,需要指定列的数据类型以及要应用于现有行和新行的任何潜在表约束和默认值。在某些数据库中,还可以使用FIRST或者AFTER子句指定在何处插入新列。

更改表以添加新列
ALTER TABLE mytable
ADD column DataType OptionalTableConstraint 
    DEFAULT default_value;
  • 删除列

删除列就如同指定要删除的列一样,但是,一些数据库不支持此功能,相反,可能必须创建一个新表并迁移数据。

更改表以删除列
ALTER TABLE mytable
DROP column_to_be_deleted;
  • 重命名表

可以使用RENAME TO语句的子句来完成。

改变表名
ALTER TABLE mytable
RENAME TO new_table_name;

注意:每个数据库实现都支持不同的更改表的方法,因此在继续之前最好先查阅数据库文档: MySQLPostgres, SQLite, Microsoft SQL Server

2.2 练习题

#1.添加名为Aspect_ratio的列,其中包含FLOAT数据类型,以存储每个影片发布的宽高比

ALTER TABLE FROM movies
ADD Aspect_ratio FLOAT OptionalTableConstraint 
    DEFAULT default_value;

正确的:
ALTER TABLE Movies
  ADD COLUMN Aspect_ratio FLOAT DEFAULT 2.39;

#2.添加另一个名为Language的列,其中包含TEXT数据类型,以存储发布影片的语言。确保此语言的默认值为英语

ALTER TABLE Movies
  ADD COLUMN Language  TEXT DEFAULT English;

3. 第18课  删除表

3.1 知识点

极少数情况下,可能需要删除包含所有数据和与数据的整个表,并为此,可以适用于该DROP TABLE不同的语句DELETE,将表从数据库中删除。

删除表语句
DROP TABLE IF EXISTS mytable;

与CREATE TABLE语句相同,如果指定的表不存在,数据库可能存在错误,防止错误,可以使用IF EXISTS子句。另外,如果有另外一个表依赖于要删除的表中的列,则必须首先更新多有相关表以删除相关行或完全删除这些表。

3.2 练习题

#1. 我们遗憾地走到了课程的最后,让我们通过删除Movies表进行清理

DROP TABLE IF EXISTS Movies;


#2. 并删除BoxOffice表

DROP TABLE  Boxoffice;

以上为基础课程,以全部过完!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值