数据库基本操作目录
- 数据库基础
- 数据库的安装
- SQL介绍
- 数据库的连接与关闭
- 数据库操作
- 显示数据库、创建数据库
- 删除数据库
- 显示创建数据库的SQL语句
- 修改数据库、选择数据库
- 表操作
- 显示所有表、创建表
- 查看表的语句和查看表结构
- 删除表
- 修改表
- 数据操作
- 插入数值
- 一次插入多条数值
- 更新数据
- 删除数据
- 清空表
- 查询表
- 数据库扩展
- SQL语句分类
- 数据表的文件介绍
- 复制表
- 设置字符编码
一、数据库基础
01、数据的本质
- 数据库是存放数据的仓库
- 数据库:数据库中存放的是表,一个数据库中可以存放多个表
- 表:表用来存放数据的
数据库模型
- 层次模型
- 网状模型
- 关系模型
- 记录和记录之间通过属性之间的关系来进行连接
- 保证数据独立性,并形成数据集之间的关系
第一代数据库:层次模型、网状模型
- 层次模型缺点:
- 查找不同类的数据效率太低(导航结构的缺点)
- 数据的不完整性
- 层次模型缺点:
![IMAGE](resources/FD1CF17F2D7B73FB9906046F1A426728.png =916x353)
![IMAGE](resources/CE8F3EB0C6BD2607E7816E7B63DA06BF.png =1115x414)
- 第二代数据库:关系型数据库。
- 优点:解决了导航问题,并且数据完整性得到解决。
- 缺点:多表查询效率低。
- 主流的数据库一般都是关系模型的
- NoSQL(非关系型数据库)解决关系型数据库多表查询效率的问题
- 常见的NoSQL有:Redis、mongodb。
- 数据库中存储格式是键值对。
![IMAGE](resources/C69E91FE45A6C193D249ED0AD9F9FCA0.png =1286x545)
数据库分类
- 文件型数据库—access
- 关系型数据库—mysql、sql server、orical
服务器 / 数据库 / 表 / 行、列
- 服务器——档案柜
- 数据库——档案袋
- 表——单子(核心)
- 行、列——表格中的行列
02、数据库的启动
- net start 服务名: 启动Mysql服务
- net stop 服务器: 关闭Mysql服务
03、SQL介绍
Structured Query Language(结构化查询语言),用来操作关系型数据库的一门语言。这是一个关系型数据库的通用操作语言,也称为标准SQL,也叫SQL-92。
04、数据库的连接与关闭
1、通过命令行面板连接
- Local: 本地
- Host: 主机 -h
- Username: 用户名 -u
- Password: 密码 -p
- Port: 端口 -P 3306
![IMAGE](resources/AB6213D2A38C64561DA4D3B872838ACF.png =1043x78)
2、关闭连接
- 方法一:exit
- 方法二:quit
- 方法三:\q
注意⚠️:Mysql中的命令后面要加分号,windows命令行后面不要加分号。
二、数据库的操作(增删改查+选择)
- 显示数据库****(查1)
- *语法:show databases;*
- 创建数据库(增)
- *语法:creat database [if exists] 数据库名;*
- 如果数据库名是关键字和特殊字符要报错,解决:在特殊字符、关键字加上反引号。
- 没有指定字符编码,默认为utf-8。c****reat database 数据库名 charset=gbk;
- gbk: 简体中文
- gb2312:简体中文
- utf-8:通用字符编码
- 删除数据库****(删)
- *语法:drop database 数据库名;*
- ***语法:drop database if exists 数据库名;*
- *
- ****在特殊字符、关键字加上反引号。
- 显示创建数据库的SQL语句****(查2)
- *语法:show create database 数据库名;*
- CREATE DATABASE
MyGameDB
/*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION=’N’ */
- CREATE DATABASE
- *语法:show create database 数据库名;*
- 修改数据库****(改)
- *语法:alter database 数据库名 charset=字符编码; // 只能修改字符编码*
- 选择数据库 (选择)
- *语法:use 数据库名;*
三、表的操作(增删改查)
- 显示所有的表****(查)
- *语法:show tables;*
- 创建表 (增)
- **语法:create table [if not exists] 表名(字段名 数据类型,**字段名 数据类型…)
- auto_increment 自增长
- null 空
- not null 非空
- default 默认值
- ** primary key 主键**
- comment 备注/注释
- engine 引擎:引擎是决定数据存储的方式。
- innodb
- myisam
- memory
- 语法:create table [if not exists] 数据库名.表名**(字段名 数据类型,字段名 数据类型…)**
- **语法:create table [if not exists] 表名(字段名 数据类型,**字段名 数据类型…)
- 查看创建表的SQL语句****(查)
- *语法:show create table 表名*
- \G 将两个字段竖向排列
- show create table teacher\G
- *语法:show create table 表名*
- 查看表结构 (查)
- **语法:describe 表名 **describe:描述
- *语法:desc 表名*
- **删除表 ****(删)**
- **语法:drop table [if exists] 表名1, 表名2, **…
- 修改表(改)——修改表中的字段(列)
- alter table 表名
- 添加字段(增)
- *语法:alter table 表名 add [column] 字段名 数据类型 [位置] column:列*
- 默认:alter table teacher add age int (默认在最后位置添加)
- first :****alter table teacher add email varcher(30) first (在首位置添加)
- after:****alter table teacher add address varcher(20) after name (在指定字段后的位置添加)
- *语法:alter table 表名 add [column] 字段名 数据类型 [位置] column:列*
- 删除字段(删)
- *语法:alter table 表名 drop [column] 字段名*
- alter table teacher drop email
- *语法:alter table 表名 drop [column] 字段名*
- 修改字段(改)
- 改名改类型
- *语法:alter table 表名 change [column]原字段 新字段名 数据类型…*
- alter table teacher change age nanling int
- *语法:alter table 表名 change [column]原字段 新字段名 数据类型…*
- 不改名只改类型
- *语法:alter table 表名 modify 字段名 字段属性…. **** modify :修改*
- **alter table teacher modify **nailing varchar(2);
- *语法:alter table 表名 modify 字段名 字段属性…. **** modify :修改*
- 改名改类型
- 修改引擎 (改)
- *语法:alter table 表名 engine=引擎名*
- alter table teacher engine=myisam
- *语法:alter table 表名 engine=引擎名*
- **修改表名 ****(改)**
- *语法:alter table 表名 rename to 新表名*
- alter table teacher rename to teacher01
- *语法:alter table 表名 rename to 新表名*
- 添加字段(增)
- alter table 表名
- 复制表
- 语法一:create table 新表 select 字段 from 旧表
- 特点:不能复制父表的键,只能复制父表的数据
- 数据:可以拿到
- 主键:不可以拿到
- 特点:不能复制父表的键,只能复制父表的数据
- 语法二:create table 新表 like 旧表
- 特点:只能复制表结构,不能复制表数据
- 数据:不可以拿到
- 主键:可以拿到
- 特点:只能复制表结构,不能复制表数据
- 语法一:create table 新表 select 字段 from 旧表
创建表的语法
1 | create table[if not exists] 表名( |
** 1、创建简单表**
1 | #使用数据库 |
** 2、创建复杂表**
1 | mysql> create table if not exists teacher( |
四、数据的操作(增删改查)
- 插入数据(增)
- 语法:insert into 表名 (字段名,字段名)values (值1,值1,…)
- insert into stu(name,addr) values(‘rose’,’北京’);
- 自增长列的值可以为null即可。
- 插入字段个数全都有,可省略字段,值的顺序按照数据库字段的顺序依次写即可。
- 值也可以插入default默认值
- 插入多条数据
- insert into stu values (null,’辛弃疾’,default,66),(null,’岳飞’, ’河南’,77);
- 更新数据(改)
- 语法:update 表名 set 字段=值 [where 条件]
- update stu set addr=’山东’ where id=1;
- update stu set score-99 where name=‘kitty’;
- update stu set addr=’上海’, score=66 where name=‘berry’;
- 语法:update 表名 set 字段=值 [where 条件]
- 删除数据 (删)
- 语法:delete from 表名 [where 条件]
- delete from stu where id=1;
- 清空表
- **语法:truncate table 表名 **
- 清空表和删除表所有数据的区别
- id 的唯一。delete from 表名,** 删除后,再插入后,id不是原先的增长值,而是总的增长值。**
- id可覆盖。****truncate table 表名,删除后,删除了全部内容,新表。id从初识值开始。———效率更高!
- 语法:delete from 表名 [where 条件]
- 查询数据 (查)————重点中的重点
- ** 语法:select 字段名 1(列名1),字段名 2(列名2)… from 表名;**
- select * from 表名
- ** 语法:select 字段名 1(列名1),字段名 2(列名2)… from 表名;**
五、数据库拓展
1、sql分类
- DML (data manipulation language) 数据操纵语言 select、update、insert、delete
- ** DDL (data definition language) 数据库定义**语言 create、alter、drop
- ** DCL (data control language) 数据库控制**语言,是用来设置或更改数据库用户或角色权限的语句
2、数据表的文件介绍
一个数据库对应一个文件夹
一个表对应一个或多个文件
引擎是myisam,一个表对应三个文件
引擎是innodb,一个表对应一个表结构文件
所有的innodb引擎的数据统一的存放在data\ibdata1文件中。
- 如果数据量很大,MySQL会自动创建ibdata2,ibdata3,目的就是为了便于管理。
memory 内存
3、设置字符编码
- 字符集
- 字符在保存和传输时对应的二进制编码集合。
- 插入中文报错
- utf8<——>gbk(客户端发送的字符集格式)
- mysql通过utf8解释客户端的命令
- 设置服务器
- 用gbk字符编码来解释客户端的命令
- set character_set_client=gbk;
- 用gbk字符编码返回数据给客户端 (以解决“以utf8返回的结构,客户端用gbk接收,出现查询乱码”的问题)
- Set character_set_result=gbk;
- set names gbk 自动解决问
- 用gbk字符编码来解释客户端的命令
- 插入中文报错
- 字符在保存和传输时对应的二进制编码集合。
- 本文作者: 梁俊可
- 本文链接: http://ljk3d.com/2021/10/19/mySqlNote/02_MySQL_第一课_数据库基本操作/
- 版权声明: 梁俊可工作室