当前位置: 首页 > news >正文

【SQL学习进阶】从入门到高级应用(一)

文章目录

  • MySQL命令行基本命令
  • 数据库表的概述
  • 初始化测试数据
  • 熟悉测试数据

🌈你好呀!我是 山顶风景独好
💝欢迎来到我的博客,很高兴能够在这里和您见面!
💝希望您在这里可以感受到一份轻松愉快的氛围!
💝不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

欢迎大家订阅本专栏!本专栏旨在为SQL初学者提供一条逐步迈向高级应用的学习之路,带您从零开始,一步一步练习,逐步掌握SQL的精髓,实现技能的提升与飞跃!

MySQL命令行基本命令


  1. 列出当前数据库管理系统中有哪些数据库。
show databases;

image.png

  1. 创建数据库,起名bjpowernode。
create database bjpowernode;

image.png

  1. 使用bjpowernode数据库。
use bjpowernode;

image.png

  1. 查看当前用的是哪个数据库。
select database();

image.png

  1. 查看当前数据库中有哪些表。
show tables;

image.png
image.png

  1. 删除数据库bjpowernode。
drop database bjpowernode;

image.png

  1. 退出mysql
    1. exit
    2. quit
    3. ctrl + c
  2. 查看当前mysql版本
select version();

image.png
还可以使用mysql.exe命令来查看版本信息(在没有登录mysql之前使用):mysql --version
image.png

数据库表的概述


nameagegender
张三20
李四22
  • 以上就是数据库表格的直观展示形式。
  • 表格英文单词table。
  • 表是数据库存储数据的基本单元,数据库存储数据的时候,是将数据存储在表对象当中的。为什么将数据存储在表中呢?因为表存储数据非常直观。
  • 任何一张表都有行和列:
    • 行:记录(一行就是一条数据)
    • 列:字段(name字段、age字段、gender字段)
  • 每个字段包含以下属性:
    • 字段名:name、age、gender都是字段的名字
    • 字段的数据类型:每个字段都有数据类型,比如:字符类型、数字类型、日期类型
    • 字段的数据长度:每个字段有可能会有长度的限制
    • 字段的约束:比如某些字段要求该字段下的数据不能重复、不能为空等,用来保证表格中数据合法有效

初始化测试数据


为了方便后面内容的学习,老师提前准备了表以及表中的测试数据,以下是建表并且初始化数据的sql脚本

DROP TABLE IF EXISTS EMP;
DROP TABLE IF EXISTS DEPT;
DROP TABLE IF EXISTS SALGRADE;CREATE TABLE DEPT(DEPTNO int(2) not null ,DNAME VARCHAR(14) ,LOC VARCHAR(13),primary key (DEPTNO)
);
CREATE TABLE EMP(EMPNO int(4)  not null ,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT(4),HIREDATE DATE  DEFAULT NULL,SAL DOUBLE(7,2),COMM DOUBLE(7,2),primary key (EMPNO),DEPTNO INT(2) 
);CREATE TABLE SALGRADE( GRADE INT,LOSAL INT,HISAL INT
);INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 10, 'ACCOUNTING', 'NEW YORK'); 
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 20, 'RESEARCH', 'DALLAS'); 
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 30, 'SALES', 'CHICAGO'); 
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 40, 'OPERATIONS', 'BOSTON'); INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7369, 'SMITH', 'CLERK', 7902,  '1980-12-17', 800, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7499, 'ALLEN', 'SALESMAN', 7698,  '1981-02-20', 1600, 300, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7521, 'WARD', 'SALESMAN', 7698,  '1981-02-22', 1250, 500, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7566, 'JONES', 'MANAGER', 7839,  '1981-04-02', 2975, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7654, 'MARTIN', 'SALESMAN', 7698,  '1981-09-28', 1250, 1400, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7698, 'BLAKE', 'MANAGER', 7839,  '1981-05-01', 2850, NULL, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7782, 'CLARK', 'MANAGER', 7839,  '1981-06-09', 2450, NULL, 10); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7788, 'SCOTT', 'ANALYST', 7566,  '1987-04-19', 3000, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7839, 'KING', 'PRESIDENT', NULL,  '1981-11-17', 5000, NULL, 10); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7844, 'TURNER', 'SALESMAN', 7698,  '1981-09-08', 1500, 0, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7876, 'ADAMS', 'CLERK', 7788,  '1987-05-23', 1100, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7900, 'JAMES', 'CLERK', 7698,  '1981-12-03', 950, NULL, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7902, 'FORD', 'ANALYST', 7566,  '1981-12-03', 3000, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,DEPTNO ) VALUES ( 7934, 'MILLER', 'CLERK', 7782,  '1982-01-23', 1300, NULL, 10); INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 1, 700, 1200); 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 2, 1201, 1400); 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 3, 1401, 2000); 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 4, 2001, 3000); 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 5, 3001, 9999); 
commit;
  • 什么是sql脚本:文件名是.sql,并且该文件中编写了大量的SQL语句,执行sql脚本程序就相当于批量执行SQL语句。

  • 你入职的时候,项目一般都是进展了一部分,多数情况下你进项目组的时候数据库的表以及数据都是有的,项目经理第一天可能会给你一个较大的sql脚本文件,你需要执行这个脚本文件来初始化你的本地数据库。(当然,也有可能数据库是共享的。)

  • 创建文件:bjpowernode.sql,把以上SQL语句全部复制到sql脚本文件中。

  • 执行SQL脚本文件,初始化数据库

    • 第一步:命令窗口登录mysql

    • 第二步:创建数据库bjpowernode(如果之前已经创建就不需要再创建了):create database bjpowernode;

    • 第三步:使用数据库bjpowernode:use bjpowernode;

    • 第四步:source命令执行sql脚本,注意:source命令后面是sql脚本文件的绝对路径。

      image.png

    • 第五步:查看是否初始化成功,执行:show tables;

      image.png

  • 使用其他的mysql客户端工具也可以执行sql脚本,比如navicat。使用source命令执行sql脚本的优点:可支持大文件

熟悉测试数据


emp dept salgrade三张表分别存储什么信息

  • emp:员工信息
  • dept:部门信息
  • salgrade:工资等级信息

查看表结构:desc或describe,语法格式:desc或describe +表名
image.png
以上的结果展示的不是表中的数据,而是表的结构。

  • Field是字段名
  • Type是这个字段的数据类型
  • Null是这个字段是否允许为空
  • Key是这个字段是否为主键或外键
  • Default是这个字段的默认值

对以上表结构进行解释说明:

  • emp表
    • empno:员工编号,int类型(整数),不能为空,主键(主键后期学习约束时会进行说明)
    • ename:员工姓名,varchar类型(字符串)
    • job:工作岗位,varchar类型
    • mgr:上级领导编号,int类型
    • hiredate:雇佣日期,date类型(日期类型)
    • sal:月薪,double类型(带有浮点的数字)
    • comm:补助津贴,double类型
    • deptno:部门编号,int类型
  • dept表
    • deptno:部门编号,int类型,主键
    • dname:部门名称,varchar类型
    • loc:位置,varchar类型
  • salgrade表
    • grade:等级,int类型
    • losal:最低工资,int类型
    • hisal:最高工资,int类型

对于以上表结构要提前了解,后面学习的内容需要你马上反应出:哪个字段是什么意思。
查看一下表中的数据,来加深一下印象(以下SQL语句会在后面课程中学习):
image.png

下一篇:【SQL学习进阶】从入门到高级应用(二)

相关文章:

  • 什么是GPT-4o,推荐GPT-4o的获取使用方法,使用GPT4o模型的最新方法教程(2024年5月16更新)
  • 【算法】Angelic Jelly天使果冻
  • Vue从入门到实战Day12~14 - Vue3大事件管理系统
  • 数据挖掘与机器学习——回归分析
  • LeetCode---链表
  • 串口环保212设备 转 profinet IO协议项目案例
  • Diffusion Model, Stable Diffusion, Stable Diffusion XL 详解
  • 前后端分离跨域问题解决方案
  • MagicPose4D:解锁AI驱动的3D模型动作新纪元
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • 【Qt秘籍】[003]-Qt环境变量配置-磨刀不误砍柴工
  • [FlareOn6]Overlong
  • 知识分享:大数据信用花导致的评分不足多久能恢复
  • 领域驱动设计(DDD)学习笔记之:基础理论与概念
  • return _VF.meshgrid(tensors, **kwargs) 的参考解决方法
  • 2017-09-12 前端日报
  • 5、React组件事件详解
  • Electron入门介绍
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • javascript从右向左截取指定位数字符的3种方法
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • k8s如何管理Pod
  • mongodb--安装和初步使用教程
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • SOFAMosn配置模型
  • TypeScript迭代器
  • vue-cli3搭建项目
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • zookeeper系列(七)实战分布式命名服务
  • 测试开发系类之接口自动化测试
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 老板让我十分钟上手nx-admin
  • 排序(1):冒泡排序
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​io --- 处理流的核心工具​
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (Python第六天)文件处理
  • (二) 初入MySQL 【数据库管理】
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)Java算法:二分查找
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)大型网站架构演变和知识体系
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net core控制台应用程序初识
  • .NET Framework与.NET Framework SDK有什么不同?
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [AutoSar NVM] 存储架构