SQL概述
数据分析流程:明确目的→获取数据→数据清洗(重复、空缺……)→分析数据→得出结论
企业数据存在哪里?数据库(存储空间大、可通过扩充硬件扩大空间、数据库管理系统便于操作)
SQL结构化查询语言
SQL语句用来操作、管理数据库中的数据
数据库Database如何存储数据?按照特定格式以文件的方式进行存储
特定格式:包含行、列的二维数据表
数据表:若干1字段和2记录组成
1字段:数据类型相同的列(有几列就是几个字段),表头即字段名称
特殊字段:主键是唯一标识一行记录的字段
2记录:一条数据(有几行就是几条记录)
关系型数据库?数据表之间存在关联关系
主流关系数据库产品:MySQL(国内份额大)、SQLite(体量小适用手机)、SQLServer(微软)、DB2(IBM)、ORACLE(甲骨文公司,贵安全)
数据库管理系统DBMS?对数据库文件和数据进行【统一管理】的【软件系统】
管理:增加、删除、修改、查询、数据安全、维护……
MySQL环境搭建
mysqld --remove
mysqld --initialize-insecure
mysqld --install
net start mysql
--操作数据库
--数据格式(数值、字符串、日期时间、枚举)
--修改表结构
--创建表
Creat table 表名(
字段1 字段类型,
字段2 字段类型,
字段3 字段类型
);
--查看表结构
DESC表名;
--查看表创建语句
SHOW CREATE TABLE 表名;
复制粘贴运行
--删除表
DROP TABLE 表名;
--全字段插入(插入值必须与表字段顺序完全一致)
INSERT INTO 表名 VALUES(
‘字符串’,
数字,
‘时间2000-01-15 10:00:00’
);
--部分字段插入(插入值必须与指定字段顺序完全一致)
INSERT INTO 表名(字段1,字段2)
VALUES(
‘字符串’,
数字
);
--全字段一次插入多行数据插入
INSERT INTO 表名 VALUES
(‘字符串’,数字,‘时间2000-01-15 10:00:00’),
(‘字符串’,数字,‘时间2000-01-15 10:00:00’),
(‘字符串’,NULL,‘时间2000-01-15 10:00:00’);
--部分字段一次插入多行数据插入
INSERT INTO 表名(字段1,字段2) VALUES
(‘字符串’,数字),
(‘字符串’,数字),
(‘字符串’,数字);
--测试数据,验证数据类型对字段内容的限制
INSERT INTO 表名 VALUES
(‘字符串’,错误类型数字,‘时间2000-01-15 10:00:00’);
运行结果:Out of range value for colum ‘字段2’ at row 1(提示插入不成功的原因)
--数据表约束规则
--非空
Creat table 表名(字段1 字段类型 NOT NULL);
--插入空数据后提示:字段1没有默认值,插入不成功
Field ‘字段1’ does’t have a default value
--设置默认值,当非空字段未插入值时,用默认值补充
Creat table 表名(字段1 字段类型 NOT NULL default 0);
--唯一性:字段1为唯一标识一行的主键,如果插入重复数据,提示错误,插入不成功
Creat table 表名(字段1 字段类型 NOT NULL UNIQUE);
Creat table 表名(PRIMA KEY字段1 INT NOT NULL UNIQUE );
--自动增长:自动生成编号为1234……的主键
Creat table 表名(字段1 INT NOT NULL UNIQUE AUTO_INCREMENT);
--主键字段,插入数据,可以用NULL占位,也可以直接忽略字段
INSERT INTO 表名(字段1,字段2) VALUES(NULL,数字);
--外键
--删除员工表Employees和部门表Department
DROP TABLE IF EXISTS Employees;
DROP TABLE IF EXISTS Department;
--创建部门表
CREAT TABLE IF NOT EXISTS Department(
DeptID INT PRIMARY KEY AUTO_INCREMENT,
DeptName VARCHAR(10) NOT NULL UNIQUE
);
INSERT INTO Department(Deptname)VALUES
(‘管理部’),(‘开发部’),(‘咨询部’);
--创建员工表,当插入数据时,DeptID必须在部门表中存在,否则就会报错
CREAT TABLE IF NOT EXISTS Employees(
……
DeptID INT NOT NULL,
FOREIGN KEY(DeptID) REFERENCES Department(DeptID)
);