为什么需要数据库
程序中的列表、字典等容器可以存储数据,或者保存成文件也可以存储数据,为何需要数据库呢?仔细想来,二者都有缺点,程序中的容器是将数据保存在内存中的,断电就会丢失,将数据保存成文件写到磁盘虽然克服了前者的缺点,但是对于稍大的、复杂的数据的管理就显得困难了,这个时候数据库就派上用场了:
- 数据库使得文件持久化,确保了数据的安全性
- 数据库管理系统(database management system,DBMS)使得数据有条理的组织,便于增删查改
总结说,数据库不仅永久的保存了数据,而且可以便捷的实现对数据的操作
常见的数据库系统包括Oracle(公司多用,收费)、DB2(IBM,适于处理海量数据)、Sqlite和MySQL
常用的数据库术语:
- DB(database):数据库
- DBMS(database management system):数据库管理系统,实现数据的增删查改
- SQL(structure query language)结构性查询语言,一种通用的数据库管理语言,几乎所有的DBMS都支持SQL
数据库存储数据的特点
- 按照数据的特性将数据存到不同的表中,表再存入数据库
- 每一张表有唯一的名称
- 每个表分成不同的列(字段),存储相同类型的数据
- 每行存储一个记录的不同值
MacOS MySQL安装
在Term终端执行:
brew install mysql
启动MySQL
想要使用MySQL,共需两步:
- 1.在Term终端首先开启这个服务
mysql.server start #开启mysql服务
- 2.在Term终端使用
mysql
自带命令行
mysql [-h localhost -P 3306] -uroot #使用root身份登陆mysql
# 中括号内为可选项,-h 主机,本地则是localhost;-P 端口号,数据库默认3306
可通过exit/quit;
退出mysql命令行
当操作数据库完成之后,需在终端退出mysql服务
mysql.server stop #停止mysql服务
vscode使用mysql客户端
vscode使用mysql客户端,需要两步:
- 1.必须安装
MySQL Client for vscode
和SQL server
插件,并推荐安装MySQL Syntax
便捷书写mysql语句
- 2.建立数据库连接
安装上述插件后,重启vscode,即可在左侧边栏找到mysql图标,选中之后点击右上角+
建立一个新的连接
在弹出窗口中按照提示输入信息点击connect
完成连接,对于本地连接数据库连接,其实已经默认配置了信息,例如:
host: 127.0.0.1
:主机,默认本地p地址
port: 3306
:mysql服务默认端口
username: root
:用户默认为root
password
:密码,可缺省
database
:数据库名称,可缺省
连接成功后即可看到如下界面,包括当前的用户列表、数据库列表
vscode安装问题
上述安装过程是理想状态,但是现实一般比较骨感,这里大概率遇到的一个ER_NOT_SUPPORTED_AUTH_MODE
错误,原因在于目前vscode mysql client的2.1.8
并不支持我们mysql 8.0
及以上版本的密码设置方式。简而言之,mysql更新了,但是vscode中的登陆客户端还未更新。
解决办法,在终端进入mysql命令行,执行以下语句
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'passwd';
意思是直接通过输入密码passwd
改变本地root用户的登陆方式,修改完成之后重新连接,并在password
输入重设的密码passwd
,当然这个密码你要换成你自个的
常用命令
完成安装之后,就可以在mysql命令行或者通过vscode新建.sql
文件中使用mysql语句,这里先列一些常用的语句:
select version();
:显示版本
show databases;
:显示所有数据库,以英文;
结尾,表示语句结束
create database test;
:创建名为test的数据库
use test;
:使用test数据库,随后的语句命令都是对它起作用
select database();
:显示当前使用的数据库
show tables from mysql;
:显示自带mysql数据库的所有表
desc stuinfo;
:显示表格结构
select * from stuinfo;
:显示表格所有内容,*
通配符表示选择所有
insert into stuinfo (id,name) values(1,'Jhon');
:添加值
update stuinfo set name="Bob" where id=1;
:更改值
delete from stuinfo where id=1;
:删除值
create table stuinfo(
id int, #按列创建,第一列列名、整数类型
name varchar(20) #第二列列名,字符串类型长度20
);
#创建stuinfo表,创建id和name列,分别设置对应合法的数据类型
语法规范
- 不区分大小写,建议关键字大写
- 每条命令用英文分号
;
结尾,否则即使换行也认为该语句未完成 - 每条命令可以根据需要换行、缩进
- 以
#
进行单行注释,以/* */
进行多行注释
参考
https://www.cnblogs.com/Jiangchuanwei/p/10238958.html