一,数据库
1,基本介绍
1.1,简介
- 数据库(DataBase) 就是一个以某种有组织的方式存储的数据集合
- 是存储和管理数据的仓库
- 其本质是一个文件系统
- 数据库管理系统(DBMS)是一款管理软件
1.2,分类
- 关系型数据库(RDB: Relationship DataBase)
- 非关系型数据库(NoSQL)
1.3,常用数据库
- 关系型数据库(RDBMS):MySQL、Oracle、Postgres、SQLite、SQLServer
- NoSQL 数据库:MongoDB、Redis、HBase、Neo4j、NewSQL
1.4,使用场景
- 关系型数据库
- 需要做复杂处理数据
- 数据量不是特别大的数据
- 对安全性能要求高的数据
- 数据格式单一的数据
- 非关系型数据库(NoSQL)
- 数据模型比较简单
- 需要灵活性更强的 IT 系统
- 对数据库性能要求较高
- 不需要高度的数据一致性
2,SQL安装与分类
2.1 Mac系统安装MySQL
- 官方下载:https://dev.mysql.com/downloads/mysql/
- 网盘下载:
-
提取码:gxow
- 安装步骤:Mysql8.0.27.1安装 Win | Mac - #4,来自 haozi
环境变量配置:
- 进入 .bash_profile 文件
- 添加内容:
- export PATH=$PATH:/usr/local/mysql/bin
- export PATH=$PATH:/usr/local/mysql/support-files
2.2 Windows系统安装MySQL
- 官方下载:https://dev.mysql.com/downloads/cluster/
- 网盘下载:
-
提取码:gxow
- 安装步骤:Mysql8.0.27.1安装 Win | Mac
环境变量配置:
- 新建系统变量 mysql,值为 mysql 安装路径
- path 变量中添加
%mysql%\bin
2.3 数据库的命令行操作
- 开启 mysql 服务:
net start mysql
- 登录:
mysql -h主机IP -u用户名 -p密码
- 修改密码:
alter user 'root'@'localhost' identified by '密码';
- 退出:
exit
- 关闭 mysql 服务:
net stop mysql
2.4 sql介绍
目录结构:
数据库表:
- 表:包含数据库中所有数据的数据库对象
- 表名:每个表的唯一标识
- 模式(schema):关于数据库和表的布局及特性的信息
- 列:表中每列称为一个字段
- 行:表中的一个记录
2.5 分类
- 数据定义语言(DDL):用来定义数据库对象,比如数据库,表,列等
- 数据操作语言(DML):用来对数据库中表的记录进行更新
- 数据查询语言(DQL):用来查询数据库中表的记录
- 数据控制语言(DCL):用来定义数据库的访问权限和安全级别及创建用户
3,数据库操作
3.1 DDL 数据库操作 - 增删改查
————————————————————————————————————————————
创建
-
创建数据库语法:CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] 数据库名 CHARACTER SET [=] 字符集
- CREATE DATABASE student; (创建一个名为student的数据库)
- CREATE DATABASE person CHARACTER SET utf8; (创建一个名为person 的数据库,指定字符集为utf8)
- CREATE DATABASE IF NOT EXISTS son CHARACTER SET utf8; (如果数据库son不存在就创建名为son的数据库)
-
创建数据库注意事项
- 不能与其他数据库重名
- 名称可以由任意字母、阿拉伯数字、下划线(_)和“$”组成,但不能使用单独的数字
- 名称最长可为 64 个字符,别名最长为 256 个字符。
- 不能使用 MySQL 关键字作为数据库名
- 建议采用小写来定义数据库名
————————————————————————————————————————————
查看
- 查看表名语法:SHOW TABLES;
- 查看表结构语法:
- 查看表结构:DESCRIBE 数据表名; / DESCRIBE 数据表名 列名;
- 查看表结构简写:DESC 数据表名; / DESC 数据表名 列名;
- 实例
- 选择数据库:USE db1;
- 查看数据库中的表:SHOW TABLES;
- 查看学员表的表结构:DESC student;
- 查看学员表中 name 列的信息:DESC student name;
————————————————————————————————————————————
修改
- 添加新列:ALTER TABLE 表名 ADD 列名 列属性;
- ALTER TABLE student ADD email varchar(50) NOT NULL;
- 修改列定义:ALTER TABLE 表名 MODIFY 列名 列属性;
- ALTER TABLE student modify score int;
- 修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
- ALTER TABLE student CHANGE COLUMN name stu_name VARCHAR(30) DEFAULT NULL
- 删除列:ALTER TABLE 表名 DROP 列名;
- 修改表名:ALTER TABLE 旧表名 RENAME AS 新表名; / RENAME TABLE 旧表名 To 新表名;
————————————————————————————————————————————
删除
- 删除表语法:DROP TABLE [IF EXISTS] 数据表名
————————————————————————————————————————————
3.2 DML 数据库表操作 - 增删改
————————————————————————————————————————————
插入数据
- 表数据插入语法:INSERT INTO 数据表名 (列名1, 列名2…) VALUES(值1, 值2…);
- 完整插入数据
- INSERT INTO user (id,name,age,sex,address) VALUES(1,‘张三’,20,‘男’,‘北京’);
- INSERT INTO user VALUES (2,‘李四’,22,‘女’,‘上海’);
- 插入数据记录的一部分
- INSERT INTO user (id,name,address) VALUES(3,‘王五’,‘深圳’);
- 插入多条记录
- INSERT INTO user (id,name,address) VALUES(4,‘赵六’,‘天津’),(5,‘小红’,‘成都’),(6,‘小白’,‘杭州’);
- 注意事项
- 值与字段必须要对应,个数相同并且数据类型相同
- 值的数据大小,必须在字段指定的长度范围内
- VARCHAR ,CHAR, DATE 类型的值必须使用单引号包裹
- 如果要插入空值,可以忽略不写,或者插入 NULL
- 如果插入指定字段的值,必须要上写列名
————————————————————————————————————————————
修改数据
- 表数据修改语法:PDATE 数据表名 SET 列名1=值1 [, 列名2=值2…] [WHERE 条件表达式]
————————————————————————————————————————————
删除数据
- 通过 DELETE 语句删除数据:DELETE FROM 数据表名 WHERE 条件表达式
- 通过 TRUNCATE TABLE 语句删除表中所有数据:TRUNCATE TABLE 数据表名
————————————————————————————————————————————
3.2 DQL 数据库表操作 - 查询
————————————————————————————————————————————
-
单表查询:SELECT * FROM 表名;
-
字段查询:SELECT 列名 FROM 表名;
-
起别名:
- 为表起别名: SELECT 列名 FROM 表名 表别名;
- 为字段起别名:SELECT 列名 AS 别名 FROM 表名;
-
去重:SELECT DISTINCT 列名 FROM 表名;
-
运算查询: SELECT (列名 运算表达式) FROM 表名;
- SELECT emp_no , salary + 1000 FROM salaries;
-
条件查询:SELECT 列名 FROM 表名 WHERE 条件表达式
-
比较运算符:
- 符号 > , <, <=, >=, =, <>, != : 大于、小于、小于等于、大于等于、等于、不等于
- BETWEEN…AND… : 范围限定
- IN :子集限定
- LIKE ‘%or%’ :模糊查询
- IS NULL :
-
逻辑运算符:
- AND 、 && :多个条件同时成立
- OR 、| :多个条件任一成立
- NOT:不成立
-
通配符:
- % : 匹配任意多个字符
- ‘- ’ :匹配1个字符 :SELECT FROM employees WHERE first_name LIKE ‘fa_’;