窥探SQL: 1.环境搭建与基本介绍

  • MySQL安装与配置
    • 环境搭建
    • 通过terminal配置和访问MySQL
    • 使用MySQLWorkBench链接MySQL数据库
  • 初识数据库与SQL
    • 数据库基本介绍
    • SQL基本介绍
      • 基本概念
      • 常见语句
      • 基本书写规范
      • 数据类型
  • 练习题

MySQL安装与配置

工作之后,愈发觉得SQL编程语言的基础性与重要性,SQL虽然看似简单,但是也是需要系统化标准化的掌握也是需要投注一定精力的。
借助datawhale组队学习活动,对SQL进行一次系统化的学习。

环境搭建

MySQL 官网上社区版软件的下载地址为https://dev.mysql.com/downloads/, 选择MySQL Community Server可以进一步选择下载 macOS操作系统下的最新版 MySQL. 如果需要安装历史版本, 可以选择最后的Download Archives后选择MySQL Installer,然后在新页面里选择所需历史版本的社区版.
之前已经安装了MySQL8.0.11版本,由于MySQL的卸载较为复杂,涉及注册表等事项,故暂时不升级最新版本,依然使用8.0.11版本进行各项操作,后续如有必要会进行版本升级。
注意:下载安装过程中会要求设置“root user password”,务必牢记此密码!

通过terminal配置和访问MySQL

安装之后, 如果我们直接在终端输入mysql, 会提示找不到命令, 需要配置一下环境变量才可以, 输入以下命令:

PATH="$PATH":/usr/local/mysql/bin

再通过终端输入mysql登录命令后, 就可以看到mysql的交互式界面了。

然后输入以下内容, 将自己电脑的mysql路径配置到环境变量中, 如果在安装过程中你没修改过安装路径, 那么你的电脑上MySQL的路径应该和下述代码中所使用的路径是一致的。

export PATH=$PATH:/usr/local/mysql/bin

运行上述配置后, 通过输入下面这条命令使修改生效

source ~/.bash_profile

接下来, 在你的终端中输入命令来登录到MySQL

mysql -u root -p

之后,如果看到以下界面, 则表示你的电脑上: 1.MySQL8.0已经正确安装, 2.已经正确配置了MySQL8.0的环境变量,并且3.已经启动MySQL服务器程序. 如果并没有出现下属界面, 请按照上述三个顺序逐个检查.

注意:使用终端(或者windows下的命令行)与MySQL进行交互是非常便捷和高效的, 但是对于平时不怎么使用终端的普通人来说, 使用终端在做数据查询时, 在查询结果的显示和导出方面有诸多不便, 特别是当我们对 SQL 查询不熟练的时候, 这种方式很不利于我们进行查询语句的调试,因此更推荐使用图形化界面的数据库客户端工具,如MySQLWorkBench和Sequel Pro.

使用MySQLWorkBench链接MySQL数据库

MySQL Workbench 是 MySQL 官方的客户端工具, 支持windows, macOS和Linux. 对于windows用户。MySQL Workbench 是一款功能强大的数据库管理工具, 它既可以用于设计数据库, 也可以用于连接数据库进行查询, 我们这个课程主要使用它的连接数据库进行查询的功能。
对于macOS的用户, 可以在https://dev.mysql.com/downloads/workbench/ 选择macOS版本进行下载安装。

首次打开后的界面:

注意:MySQL Workbench客户端的版本,与MySQL server版本不必一致。

初识数据库与SQL

数据库基本介绍

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

所以人们常说的数据库,如MySQL、SQL Server、DB2这些,实际上指的是数据库管理系统。

SQL基本介绍

基本概念

数据库中存储的表结构类似于excel中的行和列,需清楚明白几个概念之间的区别:数据库单元格

常见语句

根据对 RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类:

  1. DDL(Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下指令:
  • CREATE : 创建数据库和表等对象
  • DROP : 删除数据库和表等对象
  • ALTER : 修改数据库和表等对象的结构
  1. DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录。DML 包含以下几种指令:
  • SELECT :查询表中的数据
  • INSERT :向表中插入新数据
  • UPDATE :更新表中的数据
  • DELETE :删除表中的数据
  1. DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令:
  • COMMIT : 确认对数据库中的数据进行的变更
  • ROLLBACK : 取消对数据库中的数据进行的变更
  • GRANT : 赋予用户操作权限
  • REVOKE : 取消用户的操作权限

基本书写规范

SQL语法规范总得的原则是,清楚、易读并且层次清晰。
SQL的基本书写规则如下:

  1. SQL语句要以分号( ; )结尾
  2. SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的
  3. win 系统默认不区分表名及字段名的大小写
  4. linux / mac 默认严格区分表名及字段名的大小写
  5. 常数的书写方式是固定的
    ‘abc’, 1234, ‘26 Jan 2010’, ‘10/01/26’, ‘2010-01-26’…
  6. 单词需要用半角空格或者换行来分隔

注意: SQL 语句的单词之间需使用半角空格或换行符来进行分隔,且不能使用全角空格作为单词的分隔符,否则会发生错误,出现无法预期的结果。

常见注意事项如下:

  1. MySQL本身不区分大小写,但强烈要求关键字大写,表名、列名用小写;
  2. 创建表时,使用统一的、描述性强的字段命名规则保证字段名是独一无二且不是保留字的,不要使用连续的下划线,不用下划线结尾;最好以字母开头
  3. 关键字右对齐,且不同层级的用空格或缩进控制,使其区分开,见样例二;
  4. 列名少的时候写在一行里无伤大雅;多的时候以及涉及到CASE WHEN 或者聚合计算的时候,建议分行写;个人习惯是逗号在列名前面,方便之后删除某些列,放列名后亦可;
  5. 表别名和列别名尽量用有具体含义的词组,不要用a b c,不然以后review的时候会非常痛苦;
  6. 运算符前后都加一个空格;
  7. 当用到多个表时,请在所有列名前写上引用的表别名,不要嫌麻烦;
    每条命令用分号结尾;
  8. 养成随手写注释的习惯,注释方法如下:
单行注释 #注释文字
单行注释 -- 注释文字
多行注释:/* 注释文字 */

数据类型

数据库创建的表,所有的列都必须指定数据类型,每一列都不能存储与该列数据类型不符的数据。
四种最基本的数据类型,分别是:INTEGER, CHAR,VARCHAR,DATE

  • INTEGER 型
    用来指定存储整数的列的数据类型(数字型),不能存储小数。

  • CHAR 型
    用来存储定长字符串,当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足,由于会浪费存储空间,所以一般不使用。

  • VARCHAR 型
    用来存储可变长度字符串,定长字符串在字符数未达到最大长度时会用半角空格补足,但可变长字符串不同,即使字符数未达到最大长度,也不会用半角空格补足。

  • DATE 型
    用来指定存储日期(年月日)的列的数据类型(日期型)。

练习题

1.1 编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束
表1-A 表 Addressbook (地址簿)中的列


Solution:

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 假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL

Solution:

ALTER TABLE addressbook ADD COLUMN postal_code CHAR(0) NOT NULL;

1.3 编写 SQL 语句来删除 Addressbook 表。
Solution:

DROP TABLE addressbook;

1.4 编写 SQL 语句来恢复删除掉的 Addressbook 表。
Solution: SQL 语句不能恢复删除掉的表格,只能重新建立,所以在删除表格时需要尤其慎重。
重新建立的方法,可见1.1题。

窥探SQL: 1.环境搭建与基本介绍相关推荐

  1. 搭建mysql注入_常见的sql注入环境搭建

    常见的sql注入环境搭建 By : Mirror王宇阳 Time:2020-01-06 PHP+MySQL摘要 $conn = new mysqli('数据库服务器','username','pass ...

  2. 大数据介绍、集群环境搭建、Hadoop介绍、HDFS入门介绍

    大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 文章目录 大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 1.课前资料 2.课程整体介绍 3.大数据介绍 3.1 什么是大数 ...

  3. Day15(Js入门、jquery入门、ajax入门、前后端分离开发跨域问题、linux环境准备、jdk_tomcat环境搭建、docker介绍及应用(docker安装、基本命令、安装tomcat))

    js入门 js代码辅助 window–>preferences–>javaScript–>Content Assist .abcdefghijklmnopqrstuvwxyz alt ...

  4. Murano环境搭建、使用介绍和思考

    murano是OpenStack的Application Catalog服务,推崇AaaS(Anything-as-a-Service)的概念,通过统一的框架和API实现应用程序快速部署和应用程序生命 ...

  5. BurpSuite武器库打造之环境搭建和API介绍(上)

    0x00前言 在使用Burp Suite(以下简称Burp)来开展渗透工作的途中可能需要验证一些脑洞大开的想法,但Burp自带的功能可能无法满足你的需求,于是你迫切需要一个高度定制化的插件来实现这个功 ...

  6. docker运行sentinel、Docker打包Sentinel 镜像、控制台环境搭建及使用介绍

    1.Sentinel 介绍 Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理.监控(单机和集群),规则管理和推送的功能. Sentinel 控制台包含如下功能: 查看机器列 ...

  7. Sentinel(一)Linux搭建Sentinel 控制台环境搭建及使用介绍

    目录 1.概述 2.下载启动 3.配置项目说明 4.控制台介绍 5.linux自启部署 6.整合SpringCloud使用 1.概述 Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健 ...

  8. SQL注入系列(一)——超详细SQL注入环境搭建

    首先准备一台:windows2008 sever 的虚拟机(如果电脑配置较低的,可以开自己本机) phpstudy2016(个人喜好) 下载chrome浏览器(用google浏览器,存属于个人爱好哈~ ...

  9. 厦门感芯科技MC3172(1):介绍和环境搭建

    厦门感芯科技MC3172(1):介绍和环境搭建 文章目录 厦门感芯科技MC3172(1):介绍和环境搭建 1. MC3172介绍 2. MC3172的开发环境 2.1 首先安装ide 2.2 找到配置 ...

最新文章

  1. Python 标准库之 subprocesss
  2. html5中上传图片
  3. 耐寂寞谋定未来-农业大健康·国情讲坛:乡村振兴守公益心
  4. html 5笔记:理解与学习
  5. MATLAB不定积分的运算,matlab中怎么把积分函数 int 得到的不定积分式代入 solve 函数中进行计算?...
  6. 【mark】linux 终端命令行下的快捷键(自己已验证所有)
  7. mysql登录不了_登录不了MySQL的解决方法
  8. 前端学习(2164):runtimeonly和runtimecompiler
  9. 【编程好习惯】通过命名规则区分变量
  10. 【Flink】FlinkException The file LOG does not exist on the TaskExecutor
  11. Android日期控件如何兼容不同手机
  12. IOS transform的使用(移动,放大,旋转)
  13. IT小天博客APP版本
  14. arcgis之建模实现矢量图层批量按属性分割导出Kmz文件
  15. 从零开始学WEB前端——HTML理论讲解
  16. yolo批量检测图片
  17. Python求解二元二次函数梯度
  18. Ubuntu衍生发行版使用体验(lubuntu、xubuntu、kubuntu)
  19. python定义一个函数实现整数的幂运算_Leetcode练习(Python):第326题:3的幂:给定一个整数,写一个函数来判断它是否是 3 的幂次方。...
  20. Linux之open虚拟专业网安装部署

热门文章

  1. 海伯利安系列解答之 - POH混合共识机制
  2. cmd的mysql命令_MySQL cmd命令
  3. 静态数据static
  4. webpack中的 loader
  5. tomcat修改默认端口详细步骤(包含运行测试)
  6. redis 带密码重启
  7. 家具MES软件和家具工厂生产过程执行系统
  8. Win32编程实现剪贴板监控查看
  9. npm淘宝镜像切换新域名
  10. 专利:结构化大数据通信协议(2)