ch01: 初识数据库

练习题
1.1
编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束
表1-A 表 Addressbook (地址簿)中的列

CREATE TABLE Addressbook (
register_no int NOT NULL,
name VARCHAR(128) NOT NULL,
address VARCHAR(256) NOT NULL,
tel_no CHAR(10),
mail_address CHAR(20),
PRIMARY KEY (register_no)
);

1.2
假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请编写 SQL 把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL

ALTER TABLE addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;

1.3 填空题
请补充如下 SQL 语句来删除 Addressbook 表。
( DROP ) table Addressbook;
1.4 判断题
是否可以编写 SQL 语句来恢复删除掉的 Addressbook 表?
ALTER TABLE 语句和 DROP TABLE 语句一样,执行之后无法恢复。误添加的列可以通过 ALTER TABLE 语句删除,或者将表全部删除之后重新再创建。

待解决
还可以向表中插入默认值(初始值)。可以通过在创建表的CREATE TABLE 语句中设置DEFAULT约束来设定默认值。
CREATE TABLE productins
(product_id CHAR(4) NOT NULL,
(略)
sale_price INTEGER
(略) DEFAULT 0, – 销售单价的默认值设定为0;
PRIMARY KEY (product_id));

设置了DEFAULT 20 不知道去哪里看效果

  • 如何创建索引
    创建表时可以直接创建索引,语法如下:
    CREATE TABLE mytable(

ID INT NOT NULL,

username VARCHAR(16) NOT NULL,

INDEX [indexName] (username(length))

);

也可以使用如下语句创建:
– 方法1
CREATE INDEX indexName ON table_name (column_name)

– 方法2
ALTER table tableName ADD INDEX indexName(columnName)

  • 全文索引
    利用“分词技术”实现在长文本中搜索关键字的一种索引。
    语法:SELECT * FROM article WHERE MATCH (col1,col2,…) AGAINST (expr [ search _ modifier ])
    1、MySQL 5.6 以前的版本,只有 MyISAM 存储引擎支持全文索引;
    2、MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引;
    3、只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引。
    4、如果可能,请尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高。
  • 单列索引
    建立在单个列上的索引被称为单列索引。
  • 联合索引(复合索引、多列索引)
    建立在多个列上的索引被称为联合索引,又叫复合索引、组合索引。
    纠错
    1.2.8最后一部分有错误

单行注释应该是 –
START TRANSACTION; 中间不能没有空格

扩展
下面四条语句提供对 事务 (transactions) 使用的控制:

  • START TRANSACTION或 BEGIN开始新的事务。
  • COMMIT提交当前事务,使其更改永久化。
  • ROLLBACK回滚 (rolls back) 当前事务,取消其更改。
  • SET autocommit禁用或启用当前会话的默认自动提交模式。
    默认情况下,MySQL 在 启用自动提交 (autocommit) 模式的情况下运行。这意味着,当不在事务中时,每个语句都是atomic的,就好像它被START TRANSACTION和COMMIT包围一样。您不能使用ROLLBACK撤消效果;但是,如果在语句执行期间发生错误,the statement is rolled back.。
    roll back: restore (a database) to a previously defined state. typically to recover from an error.

参考链接:
https://dev.mysql.com/doc/refman/8.0/en/commit.html
https://dev.mysql.com/doc/refman/8.0/en/glossary.html#glos_transaction
https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1
https://github.com/datawhalechina/wonderful-sql/blob/main/ch01:%20%E5%88%9D%E8%AF%86%E6%95%B0%E6%8D%AE%E5%BA%93.md#129-%E7%B4%A2%E5%BC%95

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值