本学习笔记为阿里云天池龙珠计划SQL训练营的学习内容,学习链接为https://tianchi.aliyun.com/forum/postDetail?spm=5176.20222307.J_9059755190.2.29d94cb37pEvFf&postId=163421
一、学习知识点概要
1.介绍数据库
2.介绍SQL的建表语句
二、学习内容
1.简单介绍了数据库的定义和目前比较常见的数据库类型。
其中主要是围绕关系型数据库,常见的比如MySql、Oracle、SqlServer、DB2等等
2.本节主要介绍了SQL的DDL和DML;
- 创建表语句:
CREATE TABLE < 表名 > (
< 列名 1> < 数据类型 > < 该列所需约束 > ,
< 列名 2> < 数据类型 > < 该列所需约束 > ,
< 列名 3> < 数据类型 > < 该列所需约束 > ,
< 列名 4> < 数据类型 > < 该列所需约束 > ,
. . . < 该表的约束 1> , < 该表的约束 2> ,……);
- 删除表
DROP TABLE <表名>
- 添加列或删除列
ALTER TABLE <表名> ADD COLUMN <列的定义>;---列的定义包括<列名> <数据类型> [所需约束]
ALTER TABLE <表名> DROP COLUMN <列名>
- 数据的更新
UPDATE <表名>
SET <列名> = <表达式> [, <列名2>=<表达式2>...];
[WHERE <条件>; ]
[ORDER BY 子句; ]
[LIMIT 子句; ]
- 数据的插入
INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
//如果插入所有列名 则可以省略:
INSERT INTO <表名>- VALUES (值1, 值2, 值3, ……);
//如果插入多条数据 根据数据库类型的不同大致有以下两种:
//DB2、SQL、SQL Server、 PostgreSQL 和 MySQL的多行插入
INSERT INTO <表名>
VALUES(值1, 值2, 值3, ……),
(值1, 值2, 值3, ……),
(值1, 值2, 值3, ……);
//Oracle
INSERT ALL INTO <表名> VALUES (值1, 值2, 值3, ……)
INTO productins VALUES (值1, 值2, 值3, ……)
INTO productins VALUES (值1, 值2, 值3, …)
SELECT * FROM DUAL;
三、学习问题与解答
下图是本次课后练习的作业
--3.1 创建addressbook表
CREATE TABLE Addressbook (
regist_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)
);
--3.2 添加一列postal_code
ALTER TABLE Addressbook ADD postal_code char(9) NOT NULL;
--3.3 删除addressbook表
DROP TABLE ADDRESSBOOK
--3.4 恢复Addressbook表
CREATE TABLE Addressbook (
regist_no integer NOT NULL,
name varchar(128) NOT NULL,
address varchar(256) NOT NULL,
tel_no char(10),
mail_address char(20),
postal_code char(8) NOT NULL,
PRIMARY KEY (regist_no)
);
四、学习思考与总结
我用的是Oracle数据库 所以语言上有点不一样
在插入时间数据时会出现报错,需要加一个to_date()函数
以及在新增列名时 原式写的是
ALTER TABLE Addressbook ADD COLUMN postal_code char(9) NOT NULL;
会出现提示[标识符错误]
这里需要把COLUMN关键字删除 虽然参考答案中有oracle格式的语句 但我试了一下还是不可以