MySql学习笔记
学习2019年黑马数据库视频笔记
1.数据库的基本概念
2.MySQL数据库软件
(1)安装
(2)卸载
(3)配置
3.SQL
数据库的基本概念
1、数据库(DateBase 简称:DB)
2、什么数据库
(1)用于存储和管理数据的仓库
3、数据库的特点
(1)持久化存储数据的文件。其实,数据库就是一个文件系统;
(2)可以方便的存储、管理数据;
(3)使用了统一的方式来操作数据库;
4、常见的数据库软件
(1)Oracle;
(2)MySQL;
(3)Microsoft SQL Server;
……
MySQL数据库软件
安装MySQL数据库
参考视频介绍或其他CSDN文章
卸载MySQL数据库
参考视频介绍或其他CSDN文章
启动与关闭MySQL
MySQL服务启动(windows下)
1.手动开启
2.cmd下输入services。msc打开服务的窗口
3.使用管理权限打开cmd
(1)开启:net start mysql
(2)关闭:net stop mysql
3.使用管理权限打开cmd
登录与退出MySQL
1.MySQL登录(windows下)
(1)mysql -u root -p
(2)远程登入服务器(假设IP为127.0.0.2)的mysql
mysql -h 127.0.0.2 -root -p
(3)远程登入服务器(假设IP为127.0.0.2)的mysql
mysql --host=127.0.0.1 --user=root --password=root
2.MySQL退出(windows下)
(1)exit
(2) quit
MySQL目录结构
1.MySQL安装目录
(1)bin:可执行的二进制文件;
(2)data:数据目录,比如日志等;
(3)include:C语言的头信息;
(4)lib:mysql的库文件;
(5)share:mysql的错误信息文件;
(6)my.ini:配置文件;
2.MySQL数据目录
(1)三个概念:
a、数据库:文件夹;
b、表:文件;
c、数据:文件中存储的数据;
MySQL的操作
1.SQL
(1)什么是SQL
Structured Query Language:结构化查询语言,定义了所有关系型数据库的规则,每一种数据库操作方式存在这不一样的地点,称为“方言”
(2)SQL通用语法
1)SQL 语句可以单行或多行书写,以分号结尾;
2)SQL 语句使用空格或者Tab增加可读性;
3)SQL 语句不区分大小写,关键字建议使用大写;
4)SQL 注释;
a、单行注释:-- 注释内容或者 # 注释内容(mysql特有的)
b、多行注释:/* 注释内容 */
(3)SQL的分类
1)DDL(Data Definition Language)数据定义语句
a、 用来定义数据库对象:数据库、表、列等。;关键字:create、drop、alter等
2)DML(Data manipulation Language)数据操作语句
a、用来对数据库中表的数据进行增删改。关键字:insert、delete、update等
3)DQL(Data Query Language)数据查询语句
a、用来查询数据库中表的记录(数据)。关键字:select、where等
4)DCL(Data Control Language)数据控制语句(了解)
a、 用来定义数据库的访问权限、安全级别及创建用户。关键字:GRANT、REVOKE等
DDL(Data Definition Language)数据定义语句
操作数据库:CRUD
1.C(Create):创建
(1)创建一个新的数据库
create databases 数据库名称 character set utf8;
默认是utf8格式,character set utf8可以省略
(2)判断是否存在这个数据库,如果不存在创建一个新的数据库
create databases if not exists 数据库名称 character set utf8;
默认是utf8格式,character set utf8可以省略
2.R(Retrieve):查询
(1)查询所有数据库的名称
show databases;
(2)查询mysql数据库的字符集(查看某个数据库的创建语句)
show create databases mysql;
3.U(Update):修改
(1)修改数据库的字符集
alter databases 数据库名称 character set 字符集名称;
4.D(Delete):删除
(1)删除数据库
drop databases 数据库名称;
(2)判断数据库是否存在,如果存在则删除数据库
drop databases if exists 数据库名称 ;
5.使用数据库
(1)查询当前正在使用的数据库名称
select databases();
(2)使用数据库
use 数据库名称;
操作表
1.C(Create):创建
(1)语法
create table 表名(列名1 数据类型1,列名2 数据类型2, ……,列名n 数据类型n);
(2)常见数据类型
1)int 整数类型 age int
2)double 小数类型score double(5,2)
一共有5位小数,保留其中的2位小数
3)date 日期类型 ,只包含年月日,yyyy-MM-DD
4)datetime 日期类型 ,包含年月日时分秒,yyyy-MM-DD HH:mm:ss
5)timestamp 时间戳类型 ,包含年月日时分秒,yyyy-MM-DD HH:mm:ss
如果不给这个字段赋值或赋值为null,则默认使用当前的系统时间,自动赋值
6)varchar 字符串类型 name varchar(20)
20为最大字符长度
2.R(Retrieve):查询
(1)查询数据库中所有表的名称
show tables;
(2)查询表结构
desc 表名;
3.U(Update):修改
(1)修改表名alter table 表名 rename to 新的表名;
(2)修改表的字符集alter table 表名 character set 字符集名称;
(3)添加一例alter table 表名 add 列名 数据类型;
(4)修改列名称、类型alter table 表名 change 列名 新列名 新数据类型;或alter table 表名 modify 列名 新数据类型;
第一种方式改变列的名称和类型,第二种方式仅改变列的类型
(5)删除列alter table 表名 drop 列名;
4.D(Delete):删除
(1)删除表drop table 表名;
(2)查询是否存在该表,如果存在删除表drop table 表名 if exists;
(3)复制表create table 表名 like 原表名;
DML(Data manipulation Language)数据操作语句:增删改表中的数据
1.添加数据
(1)基本语法:insert into 表名(列名1,列名2,... ,列名n)values(值1,值2,...,值n);
(2)注意事项
1)列名和值要一一对应;
2)如果表名后不定义列名,则默认给所有列添加值;
3)除了数字类型外,其他类型需要单引号(双引号)引起来;
2.删除数据
(1)基本语法delete from 表名 [where 条件];列如 delete from stu where id=1;
(2)注意事项
1)如果不加条件则删除表中所有记录;等同于删除表,然后再创建一个一模一样的空表truncate table 表名;
2)第一种方法,不推荐。原因:有多少条记录就会执行多少次删除操作;第二种方式,之后执行两次,效率比较高。
3.修改数据
(1)基本语法updata 表名 set 列名1 = 值1 ,列名2 = 值2,....,列名n = 值n [where 条件];
(2)注意事项
1)如果不加条件,将会把表中所有记录全部修改。
DQL(Data Query Language)数据查询语句
1.查询表中记录
(1)基本语法:select * from 表名;
2.语法
(1)select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
3.基础查询
(1)多个字段的查询
1)select 字段1,字段2 from 表名;
2)查询所有字段select * from 表名;
(2)去除重复(关键字:distinct)
1)select distinct 字段1 from 表名;
(3)计算列(关键字:字段1+ifnull(字段2,0))
1)select 字段1,字段2,字段1 + 字段2 from 表名;
注:这样表示,如果字段1或字段2存在null则最终结果为null。一般可以使用四则运算,只会对数值型的进行计算
2)select 字段1,字段2,字段1 + ifnull(字段2,0) from 表名;
注:如果字段2为null则计算时替换为0
(4)起别名(关键字:as)
1)select 字段1,字段2,字段1 + ifnull(字段2,0) as 别名 from 表名;
注:计算的结果如果不做处理会按照字段1 + ifnull(字段2,0)添加一列,这样比较难看,可以使用关键字as起别名,可以使用空格代替as
(5)条件查询(关键字:where)
1)select 字段1,字段2, from 表名 where 条件列表;
注释:like:模糊查询
_:代表的是一个字符
%:代表的是多个字符
select * from 表名 where 列名 like %模糊条件%;
表示查询表中带有模糊查询条件的列
select * from 表名 where 列名 like 模糊条件_;
表示查询表中以模糊查询条件开头且后面只有一位的列
(6)排序查询 [关键字:order by、asc(ascend升序,默认)、desc(descend降序)]
1)默认排序(升序):select * from 表名 order by 排序条件;
2)升序排序:“select * from 表名 order by 排序条件 asc;
3)降序排序:select * from 表名 order by 排序条件 desc;
(7)聚合函数 [关键字:求和:sum()、平均值:avg()、统计数量:count()、最大值:max()、最小值:min()]
1)查询列1的总和:select sum(列1) from 表名;
2)查询列1的平均值:select avg(列1) from 表名;
3)查询列1的个数:select count(列1) from 表名;
4)查询列1的最大值:select max(列1) from 表名;
5)查询列1的最小值:select min(列1) from 表名;
注:where条件后面不能接聚合函数
(8)子查询
1)查询表中价格大于平均价格的所有商品:select * from product where price > (select avg(price) from product);
(9)分组(关键字:group by)
1)根据cno字段进行分组,分组后统计商品的个数:select con,count(*) from 表名 group by cno;
2)根据cno字段进行分组,分组后统计商品的平均价格,且平均商品价格 > 60:select con,avg(price) from 表名 group by cno having avg(price) > 60;
注:where条件后面不能接聚合函数,出现在分组之前;having关键字可以接聚合函数的,出现在分组之后
来源:CSDN
作者:积淀 ytu
链接:https://blog.csdn.net/weixin_42094659/article/details/100528778