Mysql数据库
数据库的基本概念
1.什么是数据库
存储数据的仓库,本质是一个文件系统。
2.数据库的特点
优点:1.数据可以存储到存储设备中,可以进行数据的持久化。
2.方便进行数据的管理
3.快速查询
3.常见的数据库软件
Oracle,mysql,DB2,Sqllate
Mysql的安装配置
安装:
选择自定义安装(custom)。
配置:
选择标准配置,选择开发(develop)机器,选第一个事务,自定义20并发数,选择第三个自定义utf-8字符集,默认安装到windows的服务,自定义密码。
卸载:
打开控制面板,卸载mysql。将mysql的文件夹(默认在隐藏文件C:\ProgramData中)删除。然后可以重新安装。如果安装失败,需要删除mysql对应的注册表。
服务的启动
1.找到服务(搜索services.msc)启动或停止
2.cmd(以管理员身份运行)中net start/stop mysql
客户端登陆
1.本地登陆mysql -u+你的用户名 -p+你的密码
2. 远端登陆mysql -h+数据库的ip地址 -u+你的用户名 -p+你的密码
3.mysql --host=localhost --user=你的用户名 --password=你的密码
SQL
是一种关系型数据库的查询规范,不同数据库的差异叫方言
三种注释
1./* 注释*/
2.-- 注释 (有空格)
3.# 注释
分类
1.DDL 数据库定义语言
用来定义数据库对象,库,表,列 关键字 create drop alter
#1.操作数据库
#创建数据库
create database db1;
#判断是否存在,不存在则创建
create database if not exists db1;
#创建数据库时指定字符集
create database db2 default character set utf8;
#检索数据库
#查询所有数据库
show databases;
#查看某个数据库的创建语句
show create database db1;
#修改字符集,默认为选中数据库
alter database (数据库名) defalut character set utf8;
#使用数据库
use db2;
#删除数据库
drop database db1;
#2.操作数据表
#创建表
create table table2(
age int,
name varchar(20),
birthday date
);
#复制表结构
create table tablecopy like table2;
#检索表
#查看当前数据库下的所有表
show tables;
#查看表结构
desc student;
#查看表的创建语句
show create table student;
#更新表
rename table student to stu;
#指定表字符集
create table stu2(
age int,
name varchar(20)
) defalut charset=gbk;
#修改表字符集
alter table student character set utf8;
#添加列
alter table student add column remark varchar(20);
#修改列
alter table student modify remark varchar(100);
#改变列名
alter table student change remark intor varchar(100);
#删除列
alter table student drop column intor;
#删除表
drop table student;
#不存在时删除
drop table if exists student;
2.DML 数据库操作语言
用来操作数据库中的数据。 关键字:insert delete update
#1.插入数据(字段与值顺序一致)
insert (into) student (id,name,birthday) values (1,"张三",'2019-08-07'),(2,"李四",'2013-02-05');
#2.修改表字段(不加条件默认全部改)
update student set birthday = '2015-06-16' where id =2;
#3.删除表字段(不加条件默认全删)
delete from student where id =3;#删除表数据
truncate student; #删除表数据和结构
3.DQL 数据查询语言
用来查询数据库中的数据 关键字: select where group by
#语法
select * from 表名
where 条件
group by 分组字段
having 分组后条件过滤
order by 排序字段 排序类型
limit 限制条件(起始位置, 长度,分页)
#简单查询(查询所有)
select * from student;
#指定列查询
select id,name from student;
#别名查询
select id,name,math as 数学,English as 英语 from student;
#去除重复查询
select distinct address from student;
#查询结果参与计算(只要有一个为null那么计算结果则为null)
select id,`name` math+ifnull(English,0) as total from student;# ifnull(实际值,预期值)
#条件过滤
#where关键字
select * from student where math >80;
#and 与关键字
select * from student where math >80 and English >70;
#or 或关键字
select * from student where id=1 or id=2 ;
#is IS关键字
select * from student where name is not null;
#like关键字
select * from student name like '%马_' # %为通配符,_为一个占位符
#between and 不仅而且关键字
select * from student where math between 80 and 90;
#in关键字
select * from student where id in(1,3,5);
#排序 desc 降序 asc 升序|order by默认为升序
select * from student order by math desc;
select * from student order by math desc,English asc; #如果第一个相等,则根据第二个排序
#聚合函数
#count() 计算数量
select count(id) from student;
select count(*) from student;
select count(1) from student;
#max() 计算最大值
select max(math) from student;
#min() 计算最小值
select min(math) from student;
#avg() 计算平均值
select avg(math) from student;
#sum() 计算总和
select sum(math) from student;
#分组 group by
select sex,count(*) from student group by sex
#分页 limit 开始位置 长度 开始位置 = (当前页-1)*页大小
select * from student limit 0,4;
4.DCL 数据控制语言
用来管理用户授权用户的 关键字 grant revoke
#创建用户 create user 用户名@主机名identified by密码
create user 'user1'@ 'localhost' identified by'123'
create user 'user2' @ '%' identified by '123' %表示任意主机
#给用户授权 grant 权限1,权限2... on 数据库.表名 to 用户名 @主机名
grant create,update,delete on db4.student to 'user2' @ 'localhost'
grant all on *.* to 'user2' @ '%'
#撤销权限 revoke 权限1,权限2... on 数据库.表名 from 用户名 @主机名
revoke create,update,delete on db4.student from 'user2' @ 'localhost'
#查看权限 show grants for '用户名' @ '主机名'
show grants for '用户名' @ '主机名'
#删除用户 drop user '用户名' @ '主机名'
drop user 'user2' @ 'localhost'
#修改管理员密码 未登陆状态下 | mysqladmin -u用户名 -p password 新密码 回车然后输入旧密码
mysqladmin -uroot -p password 123456
123
#修改普通用户密码 set password for '用户名' @ '主机名'=password("新密码")
set password for 'user2' @ 'localhost' = password("123456")