【MySQL、MySQL安装使用、SQL语言】part1
基本概念
数据库(DataBase) 简称为:DB。
数据库:用于存储和管理数据的仓库。
特点:
- 持久化存储数据,其实数据库就是一个文件系统;
- 方便存储和管理数据;
- 使用了统一的方式操作数据库——SQL。
常见的数据库软件
常用的数据库软件有:MYSQL、Oracle、DB2、SQLServer、SyBase、SQLite。
在web应用中,使用的最多的就是MySQL数据库,原因如下:
- 开源、免费;
- 攻能足够强大,足以应付web应用开发(最高支持千万级别的并发访问)
MySQL数据库的基本使用
安装
根据向导安装软件,并将myspl的路径添加到环境变量的Path中。
卸载
-
去MySQL的安装目录找到my.ini文件:
复制datadir = “C:\ProgramData\MySQL\MySQL Server 8.0\Data”;
-
卸载MySQL;
-
删除C:\ProgramData下的MySQL文件夹。
配置(8.0版本)
- MySQL服务启动:
- 手动:右击计算机图标–>点击管理–>服务与应用程序–>服务
- cmd–>services.msc 打开服务的窗口
- 使用管理员身份运行cmd:
- 输入net stop mysql80关闭MySQL服务;
- 输入net start mysql80打开MySQL服务。
登录和退出
-
MySQL登录:
- 登录本地MySQL:
mysql -uroot -p本地密码
; - 登录别人的MySQL:
mysql -hip地址值 -uroot -p连接目标的密码
; - 第三种,完整的写法:
mysql --host=ip地址值 --user=root --password=连接目标的密码
。
- 登录本地MySQL:
-
MySQL退出:
- exit;
- quit。
MySQL目录结构(了解)
MySQL安装目录:C:\Program Files\MySQL\MySQL Server 8.0
;
MySQL数据目录:C:\ProgramData\MySQL\MySQL Server 8.0\Data
。
几个概念:
- 数据库:文件夹;
- 表:文件
- 数据:文件中的数据。
SQL
什么是SQL:Structured Query Language:结构化查询语言。
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,成为“方言”。
SQL通用语法
-
SQL 语句可以以单行或多行书写,以分号结尾;
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
-
可使用空格和缩进来增强语句的可读性;
-
MySQL数据库的SQL语句不区分大小写,但是关键字建议使用大写;
-
三种注释:
- 单行注释:
-- 注释内容 或 #注释内容(MySQL特有)
; - 多行注释:
/* 注释*/
- 单行注释:
SQL分类
- DDL(Data Definition Language)数据定义语言
- 用来定义数据库对象:数据库、表、列等。关键字:creat,drop,alter等
- DML(Data Manipulation Language)数据操作语言
- 用来对数据库中表的数据进行增删改。关键字:insert,delete,update等
- DQL(Data Query Language)数据查询语言
- 用来查询数据库中表的记录(数据)。关键字:select,where等
- DCL(Data Control Language)数据控制语言(了解)
- 用来定义数据库的访问权限和安全级别,及创建对象。关键字:GRANT,REVOKE等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q4wVXvGH-1590497923971)(C:\Users\hp\Desktop\javaLearning\JavaWeb笔记\pic\SQL语言分类.png)]
DDL:操作数据库、表
-
操作数据库,CRUD:
- C(Create):创建
- 创建数据库:
create database 数据库名称;
- 创建数据库前先进行是否存在的判断:
create database if not exists 数据库名称;
- 创建数据库时指定字符集:
create database 数据库名称 character set 字符集名称;
- 复合创建:
create database if not exists 数据库名称 character set 字符集名称;
- 创建数据库:
- R(Retrieve):查询
- 查询所有数据库的名称:
show databases;
- 查看某个数据库的字符集(创建语句):
show create database 数据库名称;
- 查询所有数据库的名称:
- U(Update):修改
- 修改数据库的字符集:
alter database 数据库名称 character set 字符集名称;
- 修改数据库的字符集:
- D(Delete):删除
- 删除数据库:
drop database 数据库名称;
- 删除数据库前先进行是否存在的判断:
drop database if exists 数据库名称;
- 删除数据库:
- 使用数据库:
- 查询当前正在使用的数据库名称:
select database();
- 使用数据库:
use 数据库名称;
- 查询当前正在使用的数据库名称:
- C(Create):创建
-
操作表,CRUD:
-
C(Create):创建
-
创建表:
create table 表名( 列名1 数据类型1, 列名2 数据类型2, ... 列名n 数据类型n );
注意:最后一列,不需要加逗号(,)
数据库数据类型:
- int:整数类型(如:
age int,
) - double:小数类型(如:
score double(5,2),
) - date:日期,只包含年月日,yyyy-MM-dd
- datetime:日期,包含年月日时分秒,yyyy-MM-dd HH:mm:ss
- timestamp:时间戳类型,包含年月日时分秒,yyyy-MM-dd HH:mm:ss
- 注意:时间戳类型,如果不给这个字段赋值或赋值为null,则默认使用当前的系统时间来自动赋值。
- varchar:字符串
- 如:name varchar(20):姓名最大20个字符
- int:整数类型(如:
-
示例:
create table student( name varchar(32), age int, score double(4,1),-- 最多四位数字,其中小数点后一位。 birthday date, insert_time timestamp );
- 复制表:
create table 表名 like 被复制的表名;
-
-
R(Retrieve):查询
- 查询某个数据库中所有表的名称:
show tables;
- 查询表结构:
desc 表名称;
- 查询某个数据库中所有表的名称:
-
U(Update):修改
- 修改表名:
alter table 表名 rename to 新的表名;
- 修改表的字符集:
alter table 表名 character set 字符集名称;
- 添加一列:
alter table 表名 add 列名 数据类型;
- 修改列的名称 类型:
- 修改列名与数据类型:
alter table 表名 change 要修改的列名 要改成的列名 要改成的数据类型;
- 只修改数据类型:
alter table 表名 modify 要修改的列名 要改成的数据类型;
- 修改列名与数据类型:
- 删除列:
alter table 表名 drop 列名;
- 修改表名:
-
D(Delete):删除
- 删除表:
drop table 表名;
- 删除表前先进行是否存在的判断:
drop table if exists 表名;
- 删除表:
-
DML:增删改表中的数据【重点】
-
添加数据:
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
-
注意:
-
列名与值要一一对应。
-
如果表明后,不定义列名,则默认给所有列添加值:
insert into 表名 values(值1,值2,...值n);
-
除了数字类型,其他类型的数据需要使用引号(单双都可以)引起来。
-
-
-
删除数据:
delete from 表名 [where 条件];
- 注意:
- 如果不写条件,则删除表中所有数据:
delete from 表名;
- 如果要删除所有数据:
delete from 表名;
– 不推荐使用。有多少条数据就会执行多少次删除操作,效率低下TRUNCATE TABLE 表名;
– 推荐使用,效率更高:先删除表,然后再创建一张一样的表
- 如果不写条件,则删除表中所有数据:
- 注意:
-
修改数据:
update 表名 set 列名1 = 值1,列名2 = 值2,... [where 条件];
- 注意:
- 如果不写任何条件,则会将表中所有数据全部修改。
from 表名;
– 不推荐使用。有多少条数据就会执行多少次删除操作,效率低下TRUNCATE TABLE 表名;
– 推荐使用,效率更高:先删除表,然后再创建一张一样的表
- 如果不写任何条件,则会将表中所有数据全部修改。
- 注意:
-
修改数据:
update 表名 set 列名1 = 值1,列名2 = 值2,... [where 条件];
- 注意:
- 如果不写任何条件,则会将表中所有数据全部修改。
- 注意:
客户端图形化工具
可以使用客户端图形化工具,来图形化的操作数据库,常见的客户端图形化工具有SQLyog、navicat等。