启动与停止
启动:net start mysql80
停止:net stop mysql80
注意:mysql默认是开机自启动的。
客户端连接
法二:命令行输入mysql -u root -p
但使用这种方式需要配置PATH环境变量
DDL
DDL - 数据库操作
查询
查询所有数据库
show databases;
查询当前数据库
select database();
创建数据库
create database [if not exists] 数据库名;
删除数据库
drop database [if exists] 数据库名;
使用数据库
use 数据库名
DDL - 表操作-查询
查询当前数据库所有表
show tables;
查询表结构
desc 表名;
查询指定表的建表语句
show create table 表名;
DDL - 表操作-创建
DDL - 表操作-数据类型
char 定长字符串
varchar 变长字符串
数值类型
字符串类型
日期时间类型
DDL - 表操作-修改
添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释];
修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释];
删除字段
alter table 表名 drop 字段名;
修改表名
alter table 表名 rename to 新表名;
DDL - 表操作-删除
删除表
drop table [if exists] 表名;
删除指定表,并重新创建该表
truncate table 表名;
DML数据操作语言
用来对数据库中表的数据记录进行增删改操作
DML-添加数据
给指定字段添加数据
insert into 表名 (字段名1,字段名2,...) values (值1,值2,...);
给全部字段添加数据
insert into 表名 values (值1,值2,...);
批量添加数据
insert into 表名 (字段名1,字段名2,...) values (值1,值2,...),(值1,值2,...),(值1,值2,...);
insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...);
注意:字符串和日期型数据应该包含在引号中
DML-修改数据
update 表名 set 字段名1= 值1, 字段名2 = 值2 ,... [where 条件];
DML-删除数据
delete from 表名 [where 条件]
DQL数据库查询语言
用来查询数据库表中的记录
-
基本查询
-
条件查询 (where)
-
聚合查询 (count、max、min、avg、sum)
-
分组查询 (group by)
-
排序查询 (order by)
-
分页查询 (limit)
DQL-基本查询
查询多个字段
select * from 表名;
select 字段1,字段2,字段3... from 表名;
设置别名
select 字段1 [as 别名1],字段2 [as 别名2],... from 表名;
去除重复记录
select distinct 字段列表 from 表名;
DQL-条件查询
select 字段列表 from 表名 where 条件列表;
eg.
查询年龄等于18或20或40的员工信息
select * from emp where age in(18,20,40);
查询姓名为两个字的员工信息
select * from emp where name like '__';
查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X';
DQL-聚合函数
聚合函数:count 统计数量
max、min、avg、sum
select 聚合函数(字段列表) from 表名;
注意:所有聚合函数运算时不计算null值
eg.
统计西安地区员工的年龄之和
select sum(age) from emp where workaddress = '西安';
DQL-分组查询
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
where与having的区别
执行时机不同:where在分组之前过滤;having在分组之后过滤
判断条件不同:where不能对聚合函数进行判断,而having可以对聚合函数进行判断
eg.
根据性别分组,统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;
查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress,count() from emp where age < 45 group by workaddress having count() >= 3;
根据工作地址进行分组,然后获取到每一个工作地址的员工数量
DQL-排序查询
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
排序方式
asc:升序 默认值
desc: 降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
DQL-分页查询
select 字段列表 from 表名 limit 起始索引,查询记录数;
注意:
起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10
eg.
查询第2页员工数据,每页展示10条记录
select * from emp limit 10,10;
查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序
select * from emp where gender = '男' and age between 20 and 40 order by age asc,entrydate asc limit 5;
DCL数据控制语言
主要用来管理数据库用户、控制数据库的访问权限
DCL-管理用户
查询用户
use mysql;
select * from user;
创建用户
create user '用户名'@'主机名' identified by '密码';
修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
删除用户
drop user '用户名'@'主机名'
eg.
创建用户itcast,只能够在当前主机localhost访问,密码123456;
create user 'itcast'@'localhost' identified by '123456';
创建用户heima,可以在任意主机访问该数据库,密码123456;
create user 'heima'@'%' identified by '123456';
修改用户heima的访问密码为1234
alter user 'heima'@'%' identified with mysql_native_password by '1234';
删除itcast@localhost用户
drop user itcast@localhost
DCL-权限控制
查询权限
show grants for '用户名'@'主机名';
授予权限
grants 权限列表 on 数据库名.表名 to '用户名'@'主机名';
eg. grants all on itcast.* to 'heima'@'%'
授予所有表所有权限
授权时,数据库名和表名可以使用*进行通配,代表所有
撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';