1、数据库:
1)仓库(按照数据结构来组织、存储、管理数据)
2)集合(数据)
3)文件系统(本质)
数据库本身不方便直接操作,数据厂商将数据库封装成一个系统(软件),该软件可以提供便捷的操作内部数据库的方式,这种软件叫DBMS。
数据库(DB):按照一定结构组织的数据集合,由存储数据的文件组成。
数据库管理系统(DBMS):管理软件。
2)数据库分类:
关系型数据库(RDB:Relationship DataBase):创建在关系模型上的数据库。
关系模型:有明确行和列的二维表格模型。
软件:MySQL、Oracle、Microsoft SQL Server、Access、PostgreSQL、DB2等。
非关系型数据库(NoSQL)
软件::Hbase、MongoDB、Redis(k/v)、CouchDB等。
3)关系型数据库主要对象:
与Excel对比:
Excel:创建(Excel文档)-> 创建(sheet)->在sheet中进行数据操作。
Mysql数据库:创建(数据库)-> 创建(数据表:二维表格)->在表中记录数据
4)关系型数据库的使用架构:
5)MySQL数据类型
1)数值类型(整型、浮点型):
tinyint:1字节,可带符号。
int:4字节,可带符号。
bigint:8字节,可带符号。
float:float(M,D)--> M:长度 D:小数位数 默认10,2
double:double(M,D) 默认16,4
2)字符串类型:
char(M):固定长度,字符长度范围1~255。 M:字符长度,默认1。
varchar(M):可变长度,字符长度范围1~255。
blob/text:字段最大长度65535,不用指定长度
blob:存储大的二进制数据,大小写敏感。
text:不区分大小写。
一个字符占一个字节
3)日期时间类型:
date:日期格式“YYYY-MM-DD”,范围“1000-01-01”~“9999-12-31”
datetime:日期格式“YYYY-MM-DD”,范围“1000-01-01 00:00:00”~“9999-12-31 00:00:00”
year(M):范围1901-2155。 M:2或4,默认为4。
6)SQL语句操作:
增删改查(CRUD)create/retrieve/update/delete
6.0 NAVICAT中常用的快捷键
ctrl + / 快速注释
ctrl + shift + / 解除注释
ctrl + R 快速执行
6.1 SQL语法
分号结尾,不区分大小写。
6.2 注释
单行注释:--空格 或 #
多行注释:/* */
6.3 DDL操作数据库
数据定义语言(Data Definition Language)
增查改删
6.3.1 创建数据库
create database DBname (character set utf8);
6.3.2 查看/选择数据库
use DBname; # 切换数据库
select database(); # 查看当前数据库
show databases; # 查看所有数据库
show create database DBname; # 查看数据库定义信息
6.3.3 修改数据库字符集
alter database DBname character set utf16;
6.3.4 删除数据库
drop database DBname;
6.4 DDL操作数据表
数据库可以包含多个数据表,数据表由字段和记录组成;
6.4.1 创建表/查看表
# 1 创建表
create table category( # 表名
cid int, # 字段名 字段类型
cname varchar(30)
);
# 2 复制表结构
create table category_1 like category;
# 3 查看表结构
desc category;
# 4 查看当前数据库所有表
show tables;
6.4.2 删除表
drop table (if exists) category_1;
6.4.3 修改表
# 1 改表名
rename table category to m_category;
------------------------------------------------------------
# 2 添加列
alter table m_category add cdesc varchar(20);
# 3 修改字段数据类型
alter table m_category modify cdesc varchar(50);
# 4 修改列名称
alter table m_category change cdesc description varchar(30);
# 5 删除列
alter table m_category drop description;
6.5 DML操作表中数据
数据操纵语言(Data Manipulation Language)
6.5.1 插入数据
# 1 创建一个学生表
create table student(
sid int,
sname varchar(30),
sage int,
sex char(1)
);
# 2 插入数据
/*
char,varchar,date类型:需“ ”包裹
空值:不写,或插入null
*/
# 方法一:
insert into student values(001,"张三",16,“男”);
# 方法二:
insert into student(sid,sname,sex) values(002,"李梅",""女);
6.5.2 更改数据
# 一次修改多个列、带条件修改
update student set sage = 20(, cid = 003) (where sex = "男");
6.5.3 删除数据
# 1 删除所有数据/带条件删除(一条一条删除符合条件的记录)
delete from student (where sex = "男");
# 2 删除所有数据(直接删除表,重新创建表结构)
truncate table student;
6.6 DQL查询表中数据
数据查询语言(Data Query Language)
执行顺序:from - > where -> group by -> having -> select -> order by
# 1 准备数据
# 1.1 创建表
create table emp(
eid int,
ename varchar(20),
sex char(1),
salary double,
hire_date date,
dept_name varchar(20)
);
# 1.2 插入数据
INSERT INTO emp VALUES(1,'孙悟空','男',7200,'2013-02-04','教学部');
INSERT INTO emp VALUES(2,'猪八戒','男',3600,'2010-12-02','教学部');
INSERT INTO emp VALUES(3,'唐僧','男',9000,'2008-08-08','教学部');
INSERT INTO emp VALUES(4,'白骨精','女',5000,'2015-10-07','市场部');
INSERT INTO emp VALUES(5,'蜘蛛精','女',5000,'2011-03-14','市场部');
INSERT INTO emp VALUES(6,'玉兔精','女',200,'2000-03-14','市场部');
INSERT INTO emp VALUES(7,'林黛玉','女',10000,'2019-10-07','财务部');
INSERT INTO emp VALUES(8,'黄蓉','女',3500,'2011-09-14','财务部');
INSERT INTO emp VALUES(9,'吴承恩','男',20000,'2000-03-14',NULL);
INSERT INTO emp VALUES(10,'孙悟饭','男', 10,'2020-03-14',财务部);
----------------------------------------------------------------------------------
# 2 准备数据
# 2.1 查询全部数据/部分字段
select */(eid,ename) from emp;
# 2.2 去重操作
select distinct dept_name from emp;
# 2.3 运算查询
select ename,salary+1000 as new_salary from emp;
----------------------------------------------------------------------------------
# 2.4 条件查询
# 2.4.1 不等于:<>/!=
select * from emp where salary != 5000;
# 2.4.2 之间:between ... and .... 注意:前后闭区间
select * from emp where salary between 5000 and 10000;
# 2.4.3 or/and/not
select * from emp where salary = 3600 or salary = 20000;
# 2.4.4 in()
select * from emp where salary in(3600,7200,20000);
# 2.4.5 模糊匹配 %多个字符 _单个字符
select * from emp where ename like "%精%";
select * from emp where ename like "_兔%";
# 2.4.6 is null/is not null
select * from emp where dept_name is (not) null;