datawhale9月组队学习task01环境搭建,初始数据库
Posted 临风而眠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了datawhale9月组队学习task01环境搭建,初始数据库相关的知识,希望对你有一定的参考价值。
Datawhale9月组队学习 task01环境搭建,初始数据库
文章目录
datawhaleSQL教程连接:https://github.com/datawhalechina/wonderful-sql
一.环境搭建
1.mysql 8.0的安装
-
7月份已安装
-
之前发过两篇博客:👉
2. 连接 MySQL 并执行 SQL 查询
心态第一次炸裂
其实已经有navicat了,但是看到教程里推荐的jetbrain公司的datagrip,就想试一试…
其实已经用学生邮箱认证过jetbrain的优惠了,但在jetbrain网站的一个页面发现可以申请GitHub学生开发者包…
然后就这么浪费了一天…
申请那个开发者包
我试了试单独上传学生证,录取通知书,学信网学籍证明,都没通过
最后我想了想,把几张照片并在一起…
还没通过,心态崩了…
安装的是toolbox,在那里面下载的datagrip是最新版…
然后就和网上大部分教程所用的datagrip版本不一样…
还是先去命令行吧
心态第二次炸裂
- 凭着印象,
此电脑->管理->服务和应用程序->服务
-
然后打开命令行开始瞎操作了😭
net start mysql
显示:
发生系统错误5。 拒绝访问。
然后搜到了解决方案
以管理员方式运行,再输入那个
发现自己真的傻了…😅…不是已经手动在此电脑那里启动过了吗
-
下一步
乱搜一通教程,然后无数次怀疑电脑坏了…
而且每次自己密码输入的都是对的!
为了验证自己密码是不是错了,还去navicat连接了一波,能连上啊!
然后突然发现…少了 -h localhost
mysql -h localhost -u root -p
😅😅😅…今天脑子真的是😅
-
试试基本的命令
进入正题
555…前面的还算是连上了
用datagrip连接
先是折腾了很久,然后按照这个教程稀里糊涂的连上了…
忘了记录踩坑记录😓😓😓
二.初识数据库
其实也不算初始数据库,之前学了mongodb非关系型数据库
- 数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。
- 该数据集合称为数据库(Database,DB)
- 用来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)
- 本次要学到的 RDBMS 指关系型数据库管理系统,全称 Relational Database Management System
- RDBMS 是 SQL 的基础
- RDBMS 中的数据存储在被称为表的数据库对象中。
- 表是相关的数据项的集合,它由列和行组成。
1.初识SQL
SQL简介
- SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制
SQL基本书写规则
-
SQL语句要以分号结尾
-
SQL大小写不敏感
- win 系统默认不区分表名及字段名的大小写(linux/mac区分)
2.重要的SQL语句
①创建数据库(CREATE DATABASE)
CREATE DATABASE shop;
②创建表(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));
命名规则
-
只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称
-
名称必须以半角英文字母开头
数据类型
- 数据库创建的表的每一列都需要指定数据类型 ,每一列不能存储与该列指定数据类型不同的数据
- 基本数据类型
- INTERGER
- 存储整数
- CHAR
- 存储定长字符串
- 列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足,由于会浪费存储空间,所以一般不使用
- 存储定长字符串
- VCHAR
- 存储可变长度字符串
- DATE
- 存储日期(年月日)
- INTERGER
约束设置
- 对列中存储的数据进行限制或者追加条件的功能
- NOT NULL 非空约束
- 该列必须输入数据
- PRIMARY KEY 主键约束
- 该列是唯一值,可以通过该列取出特定行的数据
- NOT NULL 非空约束
③表的更新与删除
-
删除表的语法
DROP TABLE <表名>
-
删除product表
-
先显示一下
-
删除
DROP TABLE product;
-
-
添加列的 ALTER TABLE 语句
ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;
- 添加一列可以存储100位的可变长字符串的 product_name_pinyin 列
ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);
- 额,先把刚刚删除的product表恢复回来
-
删除列的ALTER TABLE 语句
ALTER TABLE < 表名 > DROP COLUMN < 列名 >;
- 删除product_name_pinyin列
ALTER TABLE product DROP COLUMN product_name_pinyin;
ALTER TABLE 语句和 DROP TABLE 语句一样,执行之后无法恢复。误添的列可以通过 ALTER TABLE 语句删除,或者将表全部删除之后重新再创建
-
清空表的内容
TRUNCATE TABLE <表名>;
- 相比
drop / delete
,truncate
用来清除数据时,速度最快
- 相比
-
数据更新
-
基本语法
-
使用 update 时要注意添加 where 条件,否则将会将所有的行按照语句修改
-
用UPDATE也可以将列更新为NULL
- 俗称NULL清空
- 只需要将赋值表达式右边的值直接写为 NULL 即可
和 INSERT 语句一样, UPDATE 语句也可以将 NULL 作为一个值来使用。 但是,只有未设置 NOT NULL 约束和主键约束的列才可以清空为NULL。如果将设置了上述约束的列更新为 NULL,就会出错,这点与INSERT 语句相同。
-
-
多列更新
-
UPDATE 语句的 SET 子句支持同时将多个列作为更新对象
-
如果没有像这样合并起来写,就会略显繁琐
-
-
④向表中插入数据(INSERT)
-
先创建一个叫productins的表作为例子
CREATE TABLE productins (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, product_type VARCHAR(32) NOT NULL, sale_price INTEGER DEFAULT 0, purchase_price INTEGER , regist_date DATE , PRIMARY KEY (product_id));
这里的DEFAULT是初始默认值
-
基本语法
INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
-
对表进行全列 INSERT 时,可以省略表名后的列清单。这时 VALUES子句的值会默认按照从左到右的顺序赋给每一列
-- 包含列清单 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 INTO 不是 INFO
- 注意约束设置PRIMARY KEY 的不能重复
-
原则上,执行一次 INSERT 语句会插入一行数据。插入多行时,通常需要循环执行相应次数的 INSERT 语句。其实很多 RDBMS 都支持一次插入多行数据
-- 多行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');
等价于:
-
查看表
SELECT * FROM 表名;
-
INSERT 语句中想给某一列赋予 NULL 值时,可以直接在 VALUES子句的值清单中写入 NULL。想要插入 NULL 的列一定不能设置 NOT NULL 约束
INSERT INTO productins (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0010', '叉子', '厨房用具', 500, NULL, '2009-09-20');
-
看看表格
-
-
可以从其他表复制数据
-
比如把productins的数据复制到product里面
INSERT INTO product (product_id,product_name,product_type,sale_price,regist_date) SELECT product_id, product_name,product_type,sale_price,regist_date FROM productins;
- 这时product就不是空表了
-
三.练习题
1.1
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));
1.2
ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;
-
可以用DESC查看一个表的结构
1.3
DROP TABLE Addressbook;
1.4
暂时只想了一个最笨的方法…重新添加表
😔😔😔
以上是关于datawhale9月组队学习task01环境搭建,初始数据库的主要内容,如果未能解决你的问题,请参考以下文章