数据库 从入门到实践开发

mysql

存储数据的方法

  1. 内存:速度快;但容量有限、非永久存储。
  2. 自定义结构的文件:使用简单直接,但不便于大量数据查找
  3. Excel/Access等格式化文件:使用广泛;灵活性不足
  4. 专用文件服务器:网络存储/云存储,可靠性高;操作复杂
  5. 数据库服务器:存取效率高,尤其合适海量数据;操作复杂

常见的关系型数据库

  • SQList
    微型数据库,常用于移动设备
  • MySQL
    开发中小型数据库,可用于各种操作系统
  • MariaDB
  • PostagreSQL
    开源中小型数据库
  • Oracle
    Oracle公司开发的中大型数据库,可用于各种操作系统
  • DB2
    IBM公司开发的中大型数据库,常于IBM服务器搭配

关系型数据库结构
Server = > Database - > table -> row - > column

数据库的好处

  • 实现数据持久化
  • 使用完整的管理系统统一管理,易于查询

数据库软件的种类

  • 关系型数据库(relational DB)
  • 非关系型数据库

数据库的相关概念

DB:数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。
DBMS:数据库管理系统(Database Management System)。数据库是通过 DBMS 创建和操作的容器
SQL:结构化查询语言。(Structure Query Language):专门用来数据库通信的语言。

SQL 的优点:
1、通用性
2、简单易学

数据库的特点

1、将数据放到表中,表再放到库中。
2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。
3、表由列组成,也称为字段。所有表都是一个或多个列组成的。
4、表中的数据是按行存储的。

MySQL 产品的特点

优点:

  • 成本低;开源,免费。
  • 性能高:执行很快
  • 简单:容易安装和使用

DBMS 分为两类:

  • 基于共享文件系统的 DBMS(Access)
  • 基于客户机 —— 服务器的 DBMS (MySQL、Oracle、SqlServer)

MySQL 卸载

卸载程序 MySQL Server
MySQL 的安装路径删掉 MySQL 文件夹
ProgramData下的 MySQL 删掉
运行 regedit 打开注册表,清理注册表

MySQL 安装

经典安装:服务端外加自带客户端
自定义安装
完全安装:所有的
安装方式

选择 自定义安装

安装路径

配置 C:\Program Files\MySQL\MySQL Server 5.5\bin\MySQLInstanceConfig.exe

安装过程截图

安装过程截图
开发选择第一个就行,越往下占用内存越多

安装过程截图

安装过程截图

实际应用过程中需要改端口防止攻击,学习不用改就行。

安装过程截图

字符集选最后一个,然后选择 utf8。

安装过程截图

勾选添加至环境变量,启动命名。

安装过程截图

设置 root 密码。

配置文件:C:\Program Files\MySQL\MySQL Server 5.5\my.ini

MySQL 服务

第一种启动方式
安装过程截图

第二种启动方式:管理员运行命令行
停止:net stop mysql
启动:net start mysql

MySQL 的登录和退出

第一中
点击 MySQL 5.5 command line client 进入输入 root 密码。

第二种命令行
mysql.exe -h服务器地址 -P服务器端口 -u登陆用户名 -p登陆密码
进入客服端 mysql.exe -uroot -p 退出 quit;

如果登录不了检查环境变量并配置。

Mysqld.exe
demon:守护者、守护程序、服务器程序

mysql管理命令

  • MySQL管理命令
  • SQL管理命令

MySQL 的常见命令

quit; 退出服务器的连接
show databases; 显示数据库
use 数据库名称; 进入/切换数据库
show tables; 显示表
desc 表名; 描述一下指定表的列(描述表头)
show tables from mysql; 查看其他库的所有表
select databases(); 查看当前所在库
create table 表名( 创建表
Uid INT,
name VARCHAR(64),
Age INT,
Phone VARCHAR(64)
);
select verslon() 登录到 MySQL 查看服务器版本
mysql –version 未登录 MySQL 查看服务器版本
mysql -V

MySQL 的语法规范

(1)所有的SQL语句必须以 ; 分号结尾。
(2)SQL语句不区分大小写。习惯上,系统预定义的关键字都大写,非关节字都小写。
(3)SQL中可以加注释 单行注释(#…)和多行注释(/……/)。
(4)SQL语法错误,后续所有的语句不会再执行。

图形化用户界面客户端

DQL 语言

SELECT ename FROM emp;
select ename,birthday FROM emp;
SELECT * FROM emp;

DML 语言

DDL 语言

TCL 语言

#丢掉数据库jd,如果存在的话 exists 存在
DROP DATABASE IF EXISTS jd;
#新建一个数据库 :jd
CREATE DATABASE jd;

#进入指定数据库
USE jd;

#创建一个员工信息表的表emp

INSERT INTO emp VALUES
(1,'abc',50,2018:10:28);

解决MySQL存储中文乱码
    sql脚本文件另存为的编码
    客户端链接服务器使用的编码
    服务器端数据库存储数据使用的编码

解决方法:保持编码统一
SET NAMES UTF8;
CREATE DATABASE jd CHARSET=UTF8;

常用的SQL语句
(1)增:INSERT INTO 表 VALUES(值,值,……)
(2)删:DELETE FROM emp WHERE lid=10;
(3)改:UPDATE 表 SET 列=值,列=值 WHERE lid=9;
(4)查:SELECT * FROM emp;

MySQL中的列类型
(1)数值类型 —— 可用,可不用引号括起来

       1汉字=2字节
       1字节(Byte)= 8 字位 = 8个二进制数 
       1字位(bit)= 1个二进制数
       1b = 8b
        1KB = 1024 B
        1MB = 1024 kB
        1GB = 1024 MB
    TINYINT占1个字符8个二进制数 +-11 11 11 1 转10进制十进制是127所以范围-128到127
    1位存正负号




​ FLOAT (M,D) 计算时可能产生四舍五入
​ DOUBLE(M,D) 计算时可能产生四舍五入
​ BOOL等价于TINYINT 布尔 取值为 TRUE(1)/FALSE(2)
​ 注意:MySQL没有真正意义上的布尔类型 TINYINT

​ (2)日期时间类型 —— 必须用引号括起来


​ (3)字符串类型 —— 必须用引号括起来


​ CHAR :比VARCHAR操作速度更块
​ VARCHAR :比 CHAR更节约空间

MySQL中的列约束
(1)主键约束 —— PRIMARY KEY
不能重复、不能有出现NULL值,排序,只有一个主键
(2)非空约束 —— NOT NULL 不能出现NULL
(3)唯一约束 —— UNIQUE 不能出现重复的值,但可以出现
NULL,且允许多个NULL,(两个NULL值是不等的)
(4)检查约束 —— CHECK
检查新插入的数据是否满足指定条件 MySQL不支持。
(5)默认值约束 —— DEFAULT
Student(sid INT,set CHAR(1) DEFAULT ‘男’);
(1)INSERT INTO student VALUES(10 DEFAULT);
(2)INSERT INTO student(sid) VALUES(20);
(6)外键约束 —— FOREIGN KEY…… REFERENCES

自增列
    AUTO_INCREMENT
        只能用于主键整形
        允许手动赋值

项目中如何存储日期时间数据
    存储的是距离计算机元年的毫秒数,使用BIGINT类型。


​ 给列取别名
​ select ename AS 姓名,salary AS 工资 from emp;
​ AS 关键字可以省略
​ select ename 姓名,salary 工资 from emp;

​ 只显示不同的值/合并相同的项
​ select distinct sex from emp;

查询时执行运算符
select salary*12 from emp;

查询的结果排序
    asc   ->  ascend      升序
    desc -> descend     降序
    默认asc
    order by 可以按照 数值、日期、字符串(字符的编码)来排序
    select * from emp order by salary asc;

条件查询
    sql语句中支持的比较运算符:= 、!=、 > 、<、 >=、 <=
    select * from emp where eid=5;

    null不能和任何值进行等于/不等于判定,包括null自己。可以使用is null 和 is not null

    and (并且)   or(或者)

    between…  and…  >= 第1个值   <= 第2个值
    not between… and…


​ 模糊条件查询
​ 示例:查询出姓名中含有字母e的员工信息
​ SELECT * FROM emp WHERE ename LIKE ‘%e%’;
​ 练习:查询出姓名以e结尾的员工信息
​ SELECT * FROM emp WHERE ename LIKE ‘%e’;
​ 练习:查询出姓名中倒数第2个字符为e的员工信息
​ SELECT * FROM emp WHERE ename LIKE ‘%e_’;

​ 通配符 描述
​ % 替代一个或多个字符
​ _ 仅代替一个字符
​ [charlist] 字符列中的任何单一字符

[^charlist]
或者 不在字符列中的任何单一字符
[!charlist]

分页查询
    SELECT * FROM emp LIMIT start,count;
        start  开始的值
        count 查询的数量

综合
    SELECT * FROM emp
          WHERE ...
          ORDER BY... 
          LIMIT…

聚合查询/分组查询
    聚合函数
    count() /sum()/avg()/max()/min()

    查询所有员工的数量
        select count(eid) from emp;
        select count(*) from emp; //推荐写法
    所有员工的工资总和
        select sum(salary) from emp;
    所有员工的平均工资
        select avg(salary) from emp; 
    查询出工资最高的员工工资最高的是多少
        select max(salary) from emp;
    查询出工资最高的员工工资最低的是多少
        select min(salary) from emp;

    分组查询
    查询出每个部门的员工数量是多少
        select deptId,count(*) from emp group by deptld;

    year(…)获取日期中的年份
    month(…)获取日期中的月份
    day(…)获取日期中的日

    查询出1991年出生员工的所有信息
        select * from emp where year(birthday)=1991;

    多表查询
        select ename,dname from emp,dept where deptld=did;

        内联表 inner join…on..
            select ename,dname from emp inner join dept on deptld=did;

        outer可以省略
        左外链接 left outer join…on..
            Select ename,dname from emp left outer join dept on deptld=did;

        右外链接 left outer join…on..
            Select ename,dname from emp right outer join dept on deptld=did;

        全连接full join 显示左侧和右侧所有记录——mysql不支持

合并 union 合并相同的项 union all 不合并相同项
(select ename from emp_us)union (select ename from emp_cn)

mongoDB


相关资料
[视频]MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷P21
navicat 用户指南

4 款 MySQL 调优工具,公司大神都在用!

作者

Fallen-down

发布于

2020-11-11

更新于

2021-08-03

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.
You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.