数据库的基本概念
- 数据库的英文单词:DataBase 简称DB
- 什么是数据库?
用来存储和管理数据的仓库 - 数据化的特点
- 持久化存储数据。
- 方便存储和管理数据
- 使用了统一的方法操作数据库 SQL
- 常见的数据库软件
- Oracle
- MySQL
- DB2
- SQLServer
MySQL
MySQL安装卸载
MySQL配置
mySQL服务启动
-
启动服务
net start mysql
-
关闭服务
net stop mysql
mySQL登录退出
- 登录
mysql -u用户名 -p密码;
mysql -u用户名 -p;
mysql --host=ip --user=用户名 --password=链接目标的密码
MySQL目录
配置文件:my.ini
SQL
什么是SQL?
Strctured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则,每一种数据库操作的方式都存在不一样的地方
SQL通用语法
- SQL语句可以单行或多行书写,分号结尾;
- 可使用空格和缩进来增强语句的可读性;
- MySQL数据库的SQL语句不区分大小写,关键字建议使用大写;
- 3种注释
- 单行注释 – 注释内容 或# 注释内容
- 多行注释 /注释内容/
SQL分类
- DDL(操作数据库表)
- DML(增删改表中的数据)
- DQL(查询表中的数据)
- DCL(授权)
DDL:操作数据库,表
操作数据库:CRUD
-
C(create):创建
-
创建数据库
create database 数据库名称;
-
创建数据库前判断该数据库是否存在,存在则不创建,不存在则创建
create database if not exists 数据库名称;
-
创建数据库并且设置字符集
create database 数据库名称 character set 字符集名称;
-
-
R(retrieve):查询
-
查询所有数据库的名称
show databases;
-
查看某个数据库的字符集(查询创建数据库的SQL语句)
show create database 数据库名称;
-
-
U(update):修改
-
修改数据库字符集
alter database 数据库名称 charater set 字符集名称;
-
-
D(delete):删除
-
删除数据库
drop database 数据库名称;
-
删除前判断该数据库是否存在,存在再删除
drop database if exists 数据库名称
-
-
使用数据库
-
查询当前正在使用的数据库名称
select database();
-
使用数据库
use 数据库名称
-
操作表
-
C(create):创建
-
语法
create table 表名( 列名1 数据类型1, 列名2 数据类型2, 列名3 数据类型3, ...... 列表n 数据类型n /*最后一行不需要加,逗号*/ )
-
数据库类型
- int :整数类型
- double:小数类型 double(这个小数的位数,小数后面保留几位)
- date:日期,只包含年月日
- datetime:日期,包含年月日时分秒
- timestamp:时间戳类型,如果不给这个类型赋值,会默认使用当前的系统时间,自动赋值
- varchar:文本型,按照字符设置大小
-
创建表
create table student( id int, name varchar(32), age int, score double(4,1), birthday date, insert_time timestamp )
-
复制表
create table 新表 like 要复制的表;
-
-
R(Retrieve):查询
-
查询某个数据库中所有的表名称
show table;
-
查询表结构
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,列名3.....列名n) values(值1,值2,值3,值4...值n);
列名和值要一一对应
如果表名后,不定义列名,则默认给所有列添加值
insert into 表名 values(值1,值2,值3,值4...值n);
除了数字类型,其他类型都需要使用引号(建议使用单引号)引起来
-
-
删除数据
-
基本语法
delete from 表名 where 条件; delete from 表名;
如果不添加where 条件,则删除表中所有记录—不推荐使用,有多少条记录,就会执行多少次操作
第二种删除数据的方法
这种方法会删除表,然后在创建一个一模一样的空表
truncate table stu;
-
-
修改数据
-
基本语法
update 表名 set 列名1 = 值1 , 列名2 = 值2, ..... [where 条件]: update stu set age = 17 where id = 3; update stu set age = 18,score = 100 where
如果不加任何条件,则会将表中所有记录全部修改
-
DQL:查询表中的记录
select * from 表名;
-
基础查询
- 语法
-
排序查询
-
语法
select * from 表名 order by 排序字段1 排序方式1,排序字段2 排序方式2
//升序排列 order by 字段 ASC; //降序排列 order by 字段 DESC;
排序方式:
ASC:升序,默认的
DESC:降序。
如果有多个排序条件,则前面的条件值一样时,才会判断第二条件
-
-
聚合函数(将一列数据作为一个整体,进行纵向的计算)—类似求和,求平均数
-
count:计算个数
select count(聚合字段) from 表名; select count(ifnull(聚合字段,0)) from 表名; select count(*) from 表名
null值不会被计算出来,尽量选择非空字段,或者主键
-
max:计算最大值
select max(聚合字段)from 表名;
-
min:计算最小值
select min (聚合字段) from 表名;
-
sum:计算和
select sum(聚合字段) from 表名;
-
avg:计算平均值
select avg(聚合字段) from 表名;
聚合函数的计算,会排除null值
-
-
分组查询
-
语法
group by 分组字段
select 分组字段,聚合函数
-
注意
- 分组之后查询的字段,分组字段,聚合函数
- where 和 having 的区别
- where在分组之前进行限定,如果不满足条件,则不参与分组 ,having在分组之后进行限定,如果不满足结果,则不会被查询出来
- where后不可以跟聚合函数,having可以进行聚合函数的判断
-
-
分页查询
-
语法 limit 开始的索引,每页查询的条数
-
公式 开始的索引 = (当前的页码-1)*每页显示的条数
每页显示3条记录 SELECT * FROM 表名 LIMIT 0,3; SELECT * FROM 表名 LIMIT 3,3; SELECT * FROM 表名 LIMIT 6,3; SELECT * FROM 表名 LIMIT 9,3;
limit是一个mySQL方言,只能在MySQL中使用
-