数据库 从入门到实践开发
mysql
存储数据的方法
- 内存:速度快;但容量有限、非永久存储。
- 自定义结构的文件:使用简单直接,但不便于大量数据查找
- Excel/Access等格式化文件:使用广泛;灵活性不足
- 专用文件服务器:网络存储/云存储,可靠性高;操作复杂
- 数据库服务器:存取效率高,尤其合适海量数据;操作复杂
常见的关系型数据库
- 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 用户指南
install_url to use ShareThis. Please set it in _config.yml.