当前位置: 代码迷 >> 综合 >> datawhale-sql打卡之Task 1:初识数据库
  详细解决方案

datawhale-sql打卡之Task 1:初识数据库

热度:12   发布时间:2023-12-18 04:48:39.0

数据库

数据库是将大量数据组织起来,以便高效访问的数据集合(DB)
用来管理数据库的软件叫做数据库管理系统(DBMS)
在这里插入图片描述

SQL语句

SQL是为操作数据库而开发的语言。国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的SQL 称为标准 SQL。完全基于标准 SQL 的 RDBMS 很少,通常需要根据不同的 RDBMS 来编写特定的 SQL 语句。
在这里插入图片描述

SQL语句要以分号 ; 结尾
SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的
win系统默认不区分表名及字段名的大小写
linux / mac 默认严格区分表名及字段名的大小写

1.数据定义

数据库和表命名需要服从规范:

只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称
名称必须以半角英文字母开头

  • create
-- 创建名为shop的数据库
CREATE DATABASE shop;
-- 创建名为product的表
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));-- NOT NULL是非空约束,即该列必须输入数据。-- PRIMARY KEY是主键约束,代表该列是唯一值,可以通过该列取出特定的行的数据。-- VARCHAR用来存储可变长度字符串,相比于CHAR定长字符串会节省空间。

需要先用use dbname;指定数据库,才能进一步在里面建表,否则会报错ERROR 1046 (3D000): No database selected
在这里插入图片描述

  • alter
-- 添加一列可以存储100位的可变长字符串的 product_name_pinyin 列
ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);
-- 删除 product_name_pinyin 列
ALTER TABLE product DROP COLUMN product_name_pinyin;

ALTER TABLE 语句和 DROP TABLE 语句一样,执行之后无法恢复

  • drop
-- 删除名为shop的数据库
DROP TABLE product;

删除的表是无法恢复的请执行删除操作时无比要谨慎

2.数据操纵

  • insert
-- 包含列清单
INSERT INTO ProductIns (product_id, product_name, product_type, 
sale_price, purchase_price, regist_date) 
VALUES ('0005', '高压锅', 
'厨房用具', 6800, 5000, '2009-01-15');
-- 省略列清单
INSERT INTO ProductIns 
VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');  

原则上,执行一次 INSERT 语句会插入一行数据。插入多行时,通常需要循环执行相应次数的 INSERT 语句。其实很多 RDBMS 都支持一次插入多行数据。

-- 通常的INSERT
INSERT INTO ProductIns VALUES ('0002', '打孔器', 
'办公用品', 500, 320, '2009-09-11');
INSERT INTO ProductIns VALUES ('0003', '运动T恤', 
'衣服', 4000, 2800, NULL);
INSERT INTO ProductIns VALUES ('0004', '菜刀', 
'厨房用具', 3000, 2800, '2009-09-20');
-- 多行INSERT ( DB2、SQL、SQL Server、 PostgreSQL 和 MySQL多行插入)
INSERT INTO ProductIns VALUES ('0002', '打孔器', 
'办公用品', 500, 320, '2009-09-11'),
('0003', '运动T恤', '衣服', 4000, 2800, NULL),
('0004', '菜刀', ?'厨房用具', 3000, 2800, '2009-09-20');  

还可以向表中插入默认值(初始值)。可以通过在创建表的CREATE TABLE 语句中设置DEFAULT约束来设定默认值。

CREATE TABLE ProductIns
(product_id CHAR(4) NOT NULL,
(略)
sale_price INTEGER
(略)	DEFAULT 0, -- 销售单价的默认值设定为0;
PRIMARY KEY (product_id));  
  • update

使用 update 时要注意添加 where 条件,否则将会将所有的行按照语句修改

-- 修改所有的注册时间
UPDATE productSET regist_date = '2009-10-10';  
-- 仅修改部分商品的单价
UPDATE productSET sale_price = sale_price * 10WHERE product_type = '厨房用具';  

对某列赋空值

-- 将商品编号为0008的数据(圆珠笔)的登记日期更新为NULL  
UPDATE productSET regist_date = NULLWHERE product_id = '0008';  

UPDATE 语句的 SET 子句支持同时将多个列作为更新对象。

-- 基础写法,一条UPDATE语句只更新一列
UPDATE productSET sale_price = sale_price * 10WHERE product_type = '厨房用具';
UPDATE productSET purchase_price = purchase_price / 2WHERE product_type = '厨房用具';  
-- 合并后的写法
UPDATE productSET sale_price = sale_price * 10,purchase_price = purchase_price / 2WHERE product_type = '厨房用具';  

练习题

  • 1.1
create table Addressbook (
regidt_no integer not null,
name varchar(128) not null,
address varchar(256) not null,
tel_no char(10) ,
mail_address char(20),
primary key (regist_no));
  • 1.2
alter table Addressbook
add columns postal_code char(8) not null;
  • 1.3
drop table Addressbook;
  • 1.4

使用drop删除的表不能恢复,只能重建


Task01 初识数据库

  相关解决方案