MySQL学习笔记

文章目录

        • 一、数据库概述及数据准备:
          • ①SQL、DB、DBMS:
          • ②表_table:
          • ③SQL语句分类:
          • ④导入数据:
          • ⑤查看表结构:
          • ⑥查看表中的数据:
        • 二、常用命令:
          • ①查看MySQL版本:
          • ②创建数据库:
          • ③查询当前使用的数据库:
          • ④终止语句:
          • ⑤退出MySQL:
          • ⑥查看创建表的语句:
        • 三、简单的查询
        • 四、条件查询:
        • 五、数据排序
        • 六、分组函数和分组查询
          • ①分组函数:
          • ②分组查询:
          • ③小结:
        • 七、连接查询
          • ①什么是连接查询?
          • ②连接查询的分类:
          • ③笛卡尔积现象:
          • ④内连接之等值连接:
          • ⑤内连接之非等值连接:
          • ⑥自连接:
          • ⑦外连接:
          • ⑧多张表进行操作:
        • 八、子查询:
        • 九、`union`
        • 十、`limit`
        • 十一、表及数据的增删查改
          • ①表的创建_`create`:
          • ②数据的插入_`insert`:
          • ③修改数据_`update`:
          • ④表及数据的删除:
        • 十二、表结构的增删改
          • ①添加字段:
          • ②修改字段:
          • ③删除字段:
        • 十三、创建表加上约束
          • ①非空约束_`not null`:
          • ②唯一性约束_`unique`:
          • ③主键约束:
          • ④外键约束:
          • ⑤级联更新与级联删除:
        • 十四、存储引擎
          • ①什么是存储引擎?
          • ②存储引擎的使用:
          • ③常用的存储引擎:
          • ④存储引擎的选择:
        • 十五、事务
          • ①基本介绍:
          • ②自动提交模式:
          • ③事务的隔离级别:
          • ④演示事务:
          • ⑤设置服务器缺省隔离级别:
        • 十六、索引
          • ①索引原理:
          • ②索引的相关使用:
          • ③索引的分类:
          • ④索引什么时候失效?
        • 十七、视图
          • ①视图的基本介绍:
          • ②视图的使用:
        • 十八、DBA命令
          • ①将数据库中的数据导出:
          • ②导入数据:
        • 十九、数据库设计三范式
          • ①什么是设计范式?
          • ②三范式的基本介绍:
          • ③三范式小结:
        • END

一、数据库概述及数据准备:
①SQL、DB、DBMS:
  • DB

    • DataBase——数据库,数据库实际上在硬盘上以文件的形式存在。
  • DBMS

    • D a t a B a s e M a n a g e m e n t S y s t e m DataBase Management System DataBaseManagementSystem——数据库管理系统,常见的有:MySQL、Oracle、SQLServer……
  • SQL

    • 结构化查询语言,是一门标准通用的语言,标准的 SQL 语句适合于所有的数据库产品;SQL 属于高级语言;SQL 语句在执行的时候,实际上内部也会先进行编译,然后再执行 SQLSQL 语句的编译由 DBMS 完成。
  • 彼此之间的关系

    • DBMS负责执行 SQL 语句,通过执行 SQL语句来操作 DB中的数据。
    • DBMS—(执行)—>SQL—(操作)—>DB
②表_table:
  • 什么是表?

    • table 是数据库的基本组成单位,所有的数据都以表格的形式组织,目的是可读性强。
  • 一个表包含行和列

    • 行——被称为数据/记录(data)。

    • 列——被称为字段column

      学号(int) 姓名(varchar) 年龄(int)
      20181101 张三 21
      20181103 李四 22
    • 每一个字段应该包含哪些属性?

      • 字段名、数据类型、相关的约束。
③SQL语句分类:
分类 介绍
DQL(数据查询语言) 查询语句,凡是select语句都是DQL。
DML(数据操作语言) insert delete update,对表当中的数据进行增删改。
DDL(数据定义语言) create drop alter,对表结构的增删改。
TCL(事务控制语言) commit提交事务,rollback回滚事务。(TCL中的T是Transaction)
DCL(数据控制语言) grant授权、revoke撤销权限等。
④导入数据:
  • 登录 MySQL 数据库管理系统

    mysql -uroot -p密码
    

    MySQL学习笔记_第1张图片

  • 查看有哪些数据库

    show databases;/*这个不是SQL语句,属于MySQL的命令。*/
    

    MySQL学习笔记_第2张图片

  • 创建自己的数据库

    create database 数据库名;/*这个不是SQL语句,属于MySQL的命令。*/
    

    MySQL学习笔记_第3张图片

  • 使用数据库的数据

    use 数据库名;/*这个不是SQL语句,属于MySQL的命令。*/
    

    image-20210829180603300

  • 查看当前使用的数据库中有哪些表

    show tables;/*这个不是SQL语句,属于MySQL的命令。*/
    

    image-20210829181048615

    • 因为是新建的数据库,所以内部暂时还空空如也。
  • 初始化数据

    source sql文件路径;/*可以将sql文件拖入到命令窗口*/
    

    MySQL学习笔记_第4张图片

    • test.sql,这个文件以 sql 结尾,这样的文件被称为“sql脚本”。什么是 sql 脚本呢?

    • 当一个文件的扩展名是.sql,并且该文件中编写了大量的sql语句,我们称这样的文件为sql脚本。

      • 注意:直接使用source命令可以执行sql脚本
      • sql脚本中的数据量太大的时候,无法打开,请使用source命令完成初始化。
    • test.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'); 
    commit;
     
    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); 
    commit;
     
    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;
    
    • 执行完命令之后,我们再次查看数据库中的表:

    MySQL学习笔记_第5张图片

  • 删除数据库

    drop database 数据库名字;
    
    • 这个就不演示了,整完还得我重建!/(ㄒoㄒ)/~~
⑤查看表结构:
+----------------+
| Tables_in_test |
+----------------+
| dept           |(部门表)
| emp            |(员工表)
| salgrade       |(工资等级表)
+----------------+
  • 部门表
mysql> desc dept;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| DEPTNO | int(2)      | NO   | PRI | NULL    |       |部门编号
| DNAME  | varchar(14) | YES  |     | NULL    |       |部门名称
| LOC    | varchar(13) | YES  |     | NULL    |       |部门地址
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
  • 员工表
mysql> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| EMPNO    | int(4)      | NO   | PRI | NULL    |       |员工编号
| ENAME    | varchar(10) | YES  |     | NULL    |       |员工姓名
| JOB      | varchar(9)  | YES  |     | NULL    |       |工作岗位
| MGR      | int(4)      | YES  |     | NULL    |       |上级领导编号
| HIREDATE | date        | YES  |     | NULL    |       |入职日期
| SAL      | double(7,2) | YES  |     | NULL    |       |薪资水平
| COMM     | double(7,2) | YES  |     | NULL    |       |津贴
| DEPTNO   | int(2)      | YES  |     | NULL    |       |部门编号
+----------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
  • 工资等级表
mysql> desc salgrade;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| GRADE | int(11) | YES  |     | NULL    |       |等级
| LOSAL | int(11) | YES  |     | NULL    |       |最低薪资
| HISAL | int(11) | YES  |     | NULL    |       |最高薪资
+-------+---------+------+-----+---------+-------+
3 rows in set (0.01 sec)
⑥查看表中的数据:
mysql> select* from dept;/*这个是查询语句,后面会具体说明。*/
+--------+------------+----------+
| DEPTNO | DNAME      | LOC      |
+--------+-------

你可能感兴趣的:(#,数据库学习笔记,mysql,数据库,sql)