DAY 1 task01
学习笔记
环境搭建
按照Datawhale的教程一步一步操作是很顺利的,教程的步骤写的很详细,这里点个赞
我安装的是mysql 8.0.28版本,数据库工具用的是DBeaver。
教程地址:ch00: 环境搭建.md · Datawhale/wonderful-sql - 码云 - 开源中国 (gitee.com).
创建数据库
搭建完环境,创建了第一个数据库和第一章表还是很激动的~(就像学编程语言第一次打印hello world一样)
上图是我遇到的一个小问题,红色框没有选择数据库,导致语句执行没有反应,后来才发现,要在特定数据库中执行SQL语句才行。
总结一下,创建数据库和表需要用到的语句
create database 数据库名称;
create table 表名;
创建表时每个字段会设置数据类型、约束条件。像实例中这样
CREATE TABLE product
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER ,
purchase_price INTEGER ,
regist_date DATE ,
PRIMARY KEY (product_id));
这里还会设计数据类型,int整数型、char存储定长字符、varchar存储可变长度字符、date存储日期。
约束条件目前学到的是 非空约束not null 和主键约束primary key.
下图是创建表的过程中遇到的一个错误,仔细检查发现,原来是最后少了一个括号,应该是对书写规范还不太熟悉。
创建了表如何查看呢,我百度了一个语句,这样可以查看表的完整内容了。
select * from productions P;
接下来学到了删除表和更新表
涉及的语句有:
drop table 表名:
alter table 表名 add column 列;
alter table 表名 drop colunm 列;
还有删除特定行用delete语句。这里就要加where条件了。
更新数据的语句也好理解。where条件尤为关键,可以限定要修改的条件。
UPDATE <表名>
SET <列名> = <表达式> [, <列名2>=<表达式2>...]
WHERE <条件> -- 可选,非常重要
ORDER BY 子句 --可选
LIMIT 子句; --可选
接下来是想表中插入数据。主要是insert语句。
INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
这里面涉及一个commit语句,学完还是好奇在什么情况下使用它。之后可以实验一下。
最后了解了索引的各种概念,像创建索引、主键索引、唯一索引、普通索引、前缀索引、全文索引等,也知道了创建索引后会极大提高查询效率,但还是对使用方法比较陌生。
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX [indexName] (username(length))
);
刷题时间到啦,以下就是我的答案啦
练习题
题目1:
编写一条 CREATE TABLE 语句,用来创建一个包含下表中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束
解答:
create table addressbook
(regist_no int not null,
name varchar(128) not null,
address varchar(256) not null,
tel_no char(10),
mail_address char(20),
primary key(regist_no));
题目2:
假设在创建题目1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请编写 SQL 把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL
解答:
alter table addressbook add column postal_code char(8) not null;
题目3:
请补充如下 SQL 语句来删除 Addressbook 表。
(drop) table Addressbook;
题目4:
是否可以编写 SQL 语句来恢复删除掉的 Addressbook 表?
解答:不可以。表一旦被删除,是无法恢复的。所以删除操作要慎重。(如果删库了,就准备跑路吧!)