阿里天池龙珠计划SQL训练营Task01笔记

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

数据库(DBMS)类型共分5种:

  • 层次数据库(Hierarchical Database,HDB)
  • 关系数据库(Relational Database,RDB)
  • 面向对象数据库(Object Oriented Database,OODB)
  • XML数据库(XML Database,XMLDB)
  • 键值存储系统(Key-Value Store,KVS),举例:MongoDB

本次学习以关系数据库RDBMS为主

* Oracle Database:甲骨文公司的RDBMS
* SQL Server:微软公司的RDBMS
* DB2:IBM公司的RDBMS
* PostgreSQL:开源的RDBMS
* MySQL:开源的RDBMS

 RDBMS结构如图所示

一个在本地环境安装的RDBMS可以访问许多数据库

一个数据库里可以有许多张表

一个表里面可以设置许多字段

数据库中存储的表结构类似于excel中的行和列,在数据库中,行称为记录,它相当于一条记录,列称为字段,它代表了表中存储的数据项目。

行和列交汇的地方称为单元格,一个单元格中只能输入一条记录。

SQL语句分为三类,DDL数据库定义语言,DML数据库操纵语言,DCL数据库控制语言。

DDL用来创建删除数据库和表,还能修改数据库和表等对象的结构

DML用来增删改查表记录

DCL用来确认或者取消对数据库中的数据进行的变更,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定

基本规则:

  • SQL语句要以分号( ; )结尾
  • SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的
  • win 系统默认不区分表名及字段名的大小写
  • linux / mac 默认严格区分表名及字段名的大小写
  • 本教程已统一调整表名及字段名的为小写,以方便初学者学习使用。
  • 常数的书写方式是固定的
  • 单词需要用半角空格或者换行来分隔

基本语法:

创建数据库

CREATE DATABASE < 数据库名称 > ;

 创建表

CREATE TABLE < 表名 >
( < 列名 1> < 数据类型 > < 该列所需约束 > ,
  < 列名 2> < 数据类型 > < 该列所需约束 > ,
  < 列名 3> < 数据类型 > < 该列所需约束 > ,
  < 列名 4> < 数据类型 > < 该列所需约束 > ,
  .
  .
  .
  < 该表的约束 1> , < 该表的约束 2> ,……);

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

删除表

DROP TABLE < 表名 > ;

添加列

ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;

删除列

ALTER TABLE < 表名 > DROP COLUMN < 列名 >;

清空表    推荐使用,速度快

TRUNCATE TABLE TABLE_NAME;

更改表数据  UPDATE

UPDATE <表名>
-- 更新一个字段
SET <列名> = <表达式>
-- 更新多个字段
SET <列名> = <表达式> , <列名2>=<表达式2>...
WHERE <条件>  -- 可选,非常重要。
ORDER BY 子句  --可选
LIMIT 子句; --可选

注:在update的时候一定要注意添加where 不然所有行都会被修改

update允许将被set的列设置为NULL,但是被设置了NOT NULL约束和主键约束的列不允许

插入表数据 INSERT

INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);  

对全表进行插入时可省略列名

INSERT INTO <表名> VALUES (值1, 值2, 值3, ……);  

多行插入

INSERT INTO productins VALUES ('0002', '打孔器', 
'办公用品', 500, 320, '2009-09-11'),
('0003', '运动T恤', '衣服', 4000, 2800, NULL),
('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');  

task01作业答案:

CREATE TABLE `Addressbook` (
  `regist_no` int(11) NOT NULL,
  `name` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  `address` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  `tel_no` char(10) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mail_address` char(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`regist_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

引擎:InnoDB

字符集:uft8

核对:utf8_unicode_ci

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

删除后无法用SQL语句恢复,只能再次使用CREATE TABLE创建表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值