WonderfulSQL-task1

WonderfulSQL-task1

(Datawhale28期组队学习)

基础点

  • 下载+安装使用
  • 客户端初识
  • 关系数据库管理系统(RDBMS)基础
  • SQL基础
    • 库创建
    • 表创建、更新、删除

知识点

ch00
1 下载+安装

在这里插入图片描述

2 连接
  1. MySQL服务:通过开始菜单->控制面板->管理工具->服务中查找并开启或关闭MySQL服务. 开启服务后, MySQL Server将以后台服务的形式在你的电脑上运行

  2. 使用客户端MySQL Workbench 连接 MySQL
    在这里插入图片描述

  3. HeidiSQL ,采用 Delphi 语言开发, 支持 Windows 操作系统. 支持 MySQL、Postgresql、MariaDB、Percona Server 和微软的 SQL Server, 官网下载地址:https://www.heidisql.com/download.php, 下载 portable 版本后, 解压缩就可以使用

  4. DBeaver ,基于 JAV 开发的免费和开源(GPL)的通用数据库管理工具和 SQL 客户端, 提供windows, macOS和Linux全平台支持, 能够连接包括 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby 等主流数据库软件在内的绝大多数兼容 JDBC 驱动的数据库. DBeaver 提供一个图形界面用来查看数据库结构、执行 SQL 查询和脚本, 浏览和导出数据, 处理 BLOB/CLOB 数据, 修改数据库结构等等

  5. Navicat ,包含了一系列的功能强大的数据库管理软件, 主要有: 完整功能版的 Navicat Premium, 以及专门用于MySQL数据库管理的 Navicat for MySQL, 用于PostgreSQL数据库管理的 Navicat forPostgreSQL, 用于SQL Server数据库管理的 Navicat for SQL Server, 用于Oracle数据库管理的 Navicat for Oracle, 等等, 但它提供的免费的版本 Navicat Lite 已足够本次课程使用, 除此之外, 上述的其他软件均为收费软件

  6. SQLyog,业界著名的 Webyog 公司出品的一款简洁高效、功能强大的图形化 MySQL 数据库管理工具. SQLyog 的企业版是收费软件, 但该软件也提供了社区版供大家使用, 虽然在功能上有些限制, 但对于本课程已经足够用了. SQLyog 社区版的下载地址为https://github.com/webyog/sqlyog-community/wiki/Downloads

  7. DataGrip,JetBrains 出品的数据库工具, 支持windows, macOS和Linux操作系统
    在这里插入图片描述

ch01初识数据库
1数据库管理系统基础-知识点

数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。该数据集合称为数据库(Database,DB)。用来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)

    1. 层次数据库(Hierarchical Database,HDB)
    2. 关系数据库(Relational Database,RDB)
      • Oracle Database:甲骨文公司的RDBMS
      • SQL Server:微软公司的RDBMS
      • DB2:IBM公司的RDBMS
      • PostgreSQL:开源的RDBMS
      • MySQL:开源的RDBMS
        如上是5种具有代表性的RDBMS,其特点是由行和列组成的二维表来管理数据,这种类型的 DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS)。
    3. 面向对象数据库(Object Oriented Database,OODB)
    4. XML数据库(XML Database,XMLDB)
    5. 键值存储系统(Key-Value Store,KVS),举例:MongoDB
    6. 关系数据库管理系统(RDBMS)常见结构
      • C/S(客户端、服务器)类型
2SQL基础-知识点
  1. 数据库中存储的表结构类似于excel中的行和列,在数据库中,行称为记录,它相当于一条记录,列称为字段,它代表了表中存储的数据项目。
  2. 行和列交汇的地方称为单元格,一个单元格中只能输入一条记录。
  3. SQL语句:
    • DDL:(Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象
      • CREATE : 创建数据库和表等对象
      • DROP : 删除数据库和表等对象
      • ALTER : 修改数据库和表等对象的结构
    • DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录。
      • SELECT :查询表中的数据
      • INSERT :向表中插入新数据
      • UPDATE :更新表中的数据
      • DELETE :删除表中的数据
    • DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。
      • COMMIT : 确认对数据库中的数据进行的变更
      • ROLLBACK : 取消对数据库中的数据进行的变更
      • GRANT : 赋予用户操作权限
      • REVOKE : 取消用户的操作权限
  4. 书写规则
    • 要以分号( ; )结尾
    • SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的
    • linux / mac默认严格区分表名及字段名的大小写
    • 常数的书写方式是固定的 单词
    • 需要用半角空格或者换行来分隔
3 SQL语法-知识点
  1. 创建数据库
//CREATE DATABASE < 数据库名称 > ;
CREATE DATABASE shop;
  1. 创建表
CREATE TABLE product
(product_id CHAR(4) NOT NULL,
 product_name VARCHAR(100) NOT NULL,
 product_type VARCHAR(32) NOT NULL,
 sale_price INTEGER DEFAULT 0,//默认值设定为0
 purchase_price INTEGER ,
 regist_date DATE ,
 PRIMARY KEY (product_id));
  1. 命名规则
    • 半角英文字母、数字、下划线(_)作为数据库、表和列的名称
    • 名称必须以半角英文字母开头
  2. 数据类型
    • INTEGER
    • CHAR
    • VARCHAR(可变长度字符串)
    • DATE
  3. 约束:对列中存储的数据进行限制或者追加条件的功能
    • not null
    • PRIMARY KEY主键约束,该列唯一
  4. 删除、更新表
//删除表
DROP TABLE < 表名 > ;
//添加列
ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;
ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);
//删除列
ALTER TABLE < 表名 > DROP COLUMN < 列的定义 >;
//ALTER TABLE 语句和 DROP TABLE 语句一样,执行之后无法恢复

//清空表内容(truncate清数据速度快)
TRUNCATE TABLE TABLE_NAME;

//数据更新
UPDATE <表名>
   SET <列名> = <表达式> [, <列名2>=<表达式2>...];  
WHERE <条件>;  -- 可选,非常重要。//要注意添加 where 条件,否则将会将所有的行按照语句修改
ORDER BY 子句;  --可选
LIMIT 子句; --可选
//INSERT, UPDATE 语句也可以将 NULL 作为一个值来使用
//只有未设置 NOT NULL 约束和主键约束的列才可以清空为NULL
//SET 子句中的列可以是三列或者更多(合并式写法)
  1. 表,插入数据
//INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……); 
INSERT INTO productins (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
//表进行全列 INSERT 时,可以省略表名后的列清单。
INSERT INTO productins VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');  
//多行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');  
//想给某一列赋予 NULL 值时,可以直接在 VALUES子句的值清单中写入 NULL。想要插入 NULL 的列一定不能设置 NOT NULL 约束。
//创建表的CREATE TABLE 语句中设置DEFAULT约束来设定默认值

//使用INSERT … SELECT 语句从其他表复制数据
INSERT INTO productcopy (product_id, product_name, product_type, sale_price, purchase_price, regist_date)
SELECT product_id, product_name, product_type, sale_price, purchase_price, regist_date
FROM Product;  
  1. 索引
    1. 索引创建了一种有序的数据结构,采用二分法搜索数据时,其复杂度为 log2(N)
//创建索引
CREATE TABLE mytable(  
ID INT NOT NULL,   
username VARCHAR(16) NOT NULL,  
INDEX [indexName] (username(length))  
);  

//语句创建
//方法1
CREATE INDEX indexName ON table_name (column_name)
//方法2
ALTER table tableName ADD INDEX indexName(columnName)
  1. 分类
    • 主键索引:一张数据表只能有一个主键索引,索引列值不允许有空值,通常在创建表时一起创建
    • 唯一索引:建立在UNIQUE字段上的索引被称为唯一索引,一张表可以有多个唯一索引,索引列值允许为空,列值中出现多个空值不会发生重复冲突
    • 普通索引,建立在普通字段上的索引
    • 前缀索引,对字符类型字段的前几个字符或对二进制类型字段的前几个bytes建立的索引,而不是在整个字段上建索引。前缀索引可以建立在类型为char、varchar、binary、varbinary的列上,可以大大减少索引占用的存储空间,也能提升索引的查询效率。
    • 全文索引,利用“分词技术”实现在长文本中搜索关键字的一种索引
      SELECT * FROM article WHERE MATCH (col1,col2,...) AGAINST (expr [ search _ modifier ])
      //MySQL 5.6 以前的版本,只有 MyISAM 存储引擎支持全文索引;
      //MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引;
      //只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引。
      //尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高
      
    • 单列索引,建立在单个列上的索引被称为单列索引
    • 联合索引(复合索引、多列索引),建立在多个列上的索引被称为联合索引,又叫复合索引、组合索引。

练习

//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));
 
//2
//ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;
ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;

//3
DROP table Addressbook;

//4无法通过编写SQL来恢复删除掉的Addressbook表,删除的表是无法恢复的,只能重新插入。

参考

https://github.com/datawhalechina/wonderful-sql

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值