化妆品品牌推广方案,做网站seo优化的公司,南宁手机平台网站建设,网站宽屏背景目录 1、MySQL启动2、MySQL客户端连接3、SQL3.1、SQL语句分类3.2、DDL#xff08;数据库定义语言#xff09;3.2.1、操作数据库3.2.2、操作数据表 3.3、DML#xff08;数据库操作语言#xff09;3.3.1、增加 insert into3.3.2、删除 delete3.3.3、修改 update 3.4、DQL数据库定义语言3.2.1、操作数据库3.2.2、操作数据表 3.3、DML数据库操作语言3.3.1、增加 insert into3.3.2、删除 delete3.3.3、修改 update 3.4、DQL数据库查询语言3.4.1、基本查询3.4.2、条件查询3.4.3、聚合函数3.4.5、分组查询3.4.6、排序查询3.4.7、分页查询3.4.8、多表关系多表查询 3.4.9、内连接查询3.4.10、外连接查询3.4.11、自连接和联合查询3.4.12、子查询 3.5、DCL数据库控制语言3.5.1、管理用户3.5.2、权限管理 1、MySQL启动
管理员的身份运行cmd
net start mysql80 #80指的是安装的时候指定的注册到Windows中的系统服务的系统名称
net stop mysql80
2、MySQL客户端连接 方式一:MySQL自带的客户端命令行 方式二Windows系统自带的命令行工具执行指令
mysql -u root -p #输入密码即可在cmd命令行窗口使用mysql注意 使用这种方式时需要配置PATH环境变量 添加环境变量
3、SQL
3.1、SQL语句分类 3.2、DDL数据库定义语言
3.2.1、操作数据库
--创建库
create database 库名;
--创建库时判断库是否存在不存在则创建
create database if not exists 库名;
--查看所有数据库
show databases;
--使用指定数据库
use 库名;
--查看当前指定数据库包含的数据表
show tables;
--查看数据库的结构定义信息
show create database 库名;
--删除数据库
drop database 库名;
--修改数据库的字符集为utf8
alter database 库名 character set utf8;3.2.2、操作数据表
--创建表
create table 表名 (字段1 字段1类型[comment 字段1注释],字段2 字段2类型[comment 字段2注释],字段3 字段3类型[comment 字段3注释],......字段n 字段n类型[comment 字段n注释]
)[comment 表注释];
-- 查看表结构
desc 表名;
-- 查看创建表的SQL语句
show create table 表名;
-- 修改表名
alter table 表名 rename to 新的表名;
--添加一个新的字段
alter table 表名 add 字段; 字段类型;
--修改字段名
alter table 表名 rename column 字段名 to 新的字段名;
--修改字段类型(注意类型修改前后数据是否兼容)
alter table 表名 modify column 字段名 新的字段类型;
--删除一个字段
alter table 表名 drop 字段名;
--删除表
drop table 表名;
--删除表时判断表是否存在,若存在则删除
drop table if exists 表名;数据类型数值类型、字符串类型、日期时间类型 数值类型 egage TINYINT UNSIGNEDscore DOUBLE(4,1)小数一共4位保留一位小数 字符串类型 日期时间类型
3.3、DML数据库操作语言
3.3.1、增加 insert into
-- 写全所有列名
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
-- 不写列名所有列全部添加
insert into 表名 values(值1,值2,...值n);
-- 插入部分数据
insert into 表名(列名1,列名2) values(值1,值2);3.3.2、删除 delete
-- 删除表中数据
delete from 表名 where 列名 值;
-- 删除表中所有数据
delete from 表名;
-- 删除表中所有数据高效 先删除表然后再创建一张一样的表。
truncate table 表名;3.3.3、修改 update
-- 不带条件的修改(会修改所有行,更新整张表)
update 表名 set 字段名1值1,字段名2值2;
-- 带条件的修改
update 表名 set 字段名1值1,字段名2值2 where 列名值;举例 3.4、DQL数据库查询语言 3.4.1、基本查询
--查询多个字段
select 字段1,字段2,字段3…… from 表名;
select * from 表名;--设置别名
select 字段1 [as 别名1],字段2 [as 别名2]…… from 表名;
#select workadderss as 工作地址 from emp;
#select workadderss 工作地址 from emp;--去除重复记录
select distinct 字段列表 from 表名;
#select distinct workadderss 工作地址 from emp;3.4.2、条件查询
select 字段列表 from 表名 where 条件列表;BETWEEN…AND 在什么之间和 IN( 集合) -- 查询年龄大于等于20 小于等于30
SELECT * FROM student WHERE age 20 age 30;
SELECT * FROM student WHERE age 20 AND age 30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;-- 查询年龄22岁18岁25岁的信息
SELECT * FROM student WHERE age 22 OR age 18 OR age 25
SELECT * FROM student WHERE age IN (22,18,25);is not null(不为null值) 与 like模糊查询、distinct去除重复值 -- 查询英语成绩不为null
SELECT * FROM student WHERE english IS NOT NULL;_:单个任意字符%多个任意字符
-- 查询姓马的有哪些 like
SELECT * FROM student WHERE NAME LIKE 马%;
-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE _化%;
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE ___;
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE %德%;-- 关键词 DISTINCT 用于返回唯一不同的值。
-- 语法SELECT DISTINCT 列名称 FROM 表名称
SELECT DISTINCT NAME FROM student ;3.4.3、聚合函数
将一列数据作为一个整体进行纵向计算。 注意null值不参与所有聚合函数运算
select 聚合函数(字表列段) from 表名;# 聚合函数
# 统计企业的员工数量
select count(*) from emp;
select count(*) from emp# 统计该企业员工的平均年龄
select avg(age) from emp;# 统计该企业员工的最大年龄
select max(age) from emp;# 统计该企业员工的最小年龄
select min(age) from emp;# 统计西安地区员工的年龄之和
select sum(age) from emp where workadderss 西安;3.4.5、分组查询
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过来条件];# 分组查询
# 根据性别分组统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;# 根据性别分组统计男性员工和女性员工的平均年龄
select gender,avg(age) from emp group by gender;# 查询年龄小于45的员工并根据工作地址分组获取员工数量大于等于3的工作地址
select workadderss ,count(*) from emp where age 45 group by workadderss having count(*) 3; where和having的区别: 执行时机不同where是分组之前进行过滤不满足where条件不参与分组而having是分组之后对结果进行过滤。判断条件不同where不能对聚合函数进行判断而having可以。 注意 执行顺序where 聚合函数 having。分组之后查询的字段一般为聚合函数和分组字段查询其他字段无任何意义。 3.4.6、排序查询
select 字段列表 from 表名 order by 字段1 排序方式,字段2 排序方式2; 3.4.7、分页查询
select 字段列表 from 表名 limit 起始索引,查询记录数;# 分页查询
# 查询第1页员工数据每页展示10条记录
select * from emp limit 0,10;select * from emp limit 10;# 查询第2页员工数据每页展示10条记录 ------页码 - 1* 页展示记录数
select * from emp limit 10, 10;注意 起始索引从0开始起始索引 (查询页码 - 1)*每页显示记录数。分页查询是数据库的方言不同的数据库有不同的实现MySQL中是limit。如果查询的第一页数据起始索引可以省略直接简写为limit 10。 3.4.8、多表关系 多表查询 select * from emp, dept; # 笛卡尔积
select * from emp, dept where emp.dept_id dept.id; 3.4.9、内连接查询
相当于查询A、B交集部分数据 1.隐式内连接使用where条件消除无用数据
-- 语法
select 字段列表 from 表名1,表名2 where 条件;
-- 查询员工表的名称性别。部门表的名称
SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.dept_id dept.id;SELECT t1.name, -- 员工表的姓名t1.gender,-- 员工表的性别t2.name -- 部门表的名称
FROMemp t1,dept t2
WHERE t1.dept_id t2.id;2.显式内连接
-- 语法
select 字段列表 from 表名1 [inner] join 表名2 on 连接条件;
-- 例如
SELECT * FROM emp INNER JOIN dept ON emp.dept_id dept.id;
SELECT * FROM emp JOIN dept ON emp.dept_id dept.id; 3.4.10、外连接查询
左外连接查询左表所有数据以及两张表交集部分数据
-- 语法
select 字段列表 from 表1 left [outer] join 表2 on 条件
-- 例子
-- 查询所有员工信息如果员工有部门则查询部门名称没有部门则不显示部门名称
SELECT t1.*,t2.name FROM emp t1 LEFT JOIN dept t2 ON t1.dept_id t2.id;右外连接查询右表所有数据以及两张表交集部分数据
-- 语法
select 字段列表 from 表1 right [outer] join 表2 on 条件
-- 例子
SELECT * FROM dept t2 RIGHT JOIN emp t1 ON t1.dept_id t2.id;3.4.11、自连接和联合查询
1、自连接
--语法:
select 字段列表 from 表A 别名A join 表名A 别名B on 条件……;
--例子
select a.name 员工, b.name 领导 from emp a join emp b on a.managerid b.id;
2、联合查询 对于union查询就是把多次查询的结果合并起来形成一个新的查询结果集
--语法
select 字段列表 from 表A ……
union [all]
select 字段列表 from 表B ……;
对于联合查询的多张表的列数必须保持一致字段类型也需要保持一致。 union all会将全部的数据直接合并在一起union会对合并之后的数据去重
3.4.12、子查询
SQL语句中嵌套select语句称为嵌套语句又称子查询
--语法
select * from t1 where column1 (select column1 from t2); 1、标量子查询 子查询返回的结果是单个值数字、字符串、日期等最简单地形式这种子查询称为标量子查询 常用的操作符
# a. 查询”销售部“部门ID
select id from dept where name 销售部;# b. 根据销售部门ID查询员工信息
select * from emp where dept_id 4;
select * from emp where dept_id (select id from dept where name 销售部);
2、列子查询 子查询返回的结果是一列可以是多行这种查询称为列子查询
常用的操作符 in、 not in、 any 、some 、all
# 查询 销售部 和 市场部 的部门ID
select id from dept where name 销售部 or name 市场部;
# 根据部门ID查询员工信息
select * from emp where dept_id in (select id from dept where name 市场部 or name 销售部);
3、行子查询 子查询返回的结果是一行可以是多列这种子查询称为行子查询。
常用的操作符 、 、 in、 not in
# 行子查询
# 查询 张无忌 的薪资及直属领导相同的员工信息
select salary, managerid from emp where name 张无忌;# 查询与 张无忌 的薪资及直属领导相同的员工信息
select * from emp where (salary, managerid) (select salary, managerid from emp where name 张无忌);
4、表子查询 子查询返回的结果是多行多列这种子查询称为表子查询。
常用的操作符in
# 表子查询
# 查询 鹿杖客、宋远桥 的职位和薪资
select job, salary from emp where name 鹿杖客 or name 宋远桥;# 查询与 鹿杖客、宋远桥 的职位和薪资相同的员工信息
select * from emp where (job, salary) in (select job, salary from emp where name 鹿杖客 or name 宋远桥);
3.5、DCL数据库控制语言
3.5.1、管理用户
---查询用户
use mysql;
select * from user;
---添加用户
CREATE USER 用户名主机名 IDENTIFIED BY 密码;
---删除用户
DROP USER 用户名主机名;3.5.2、权限管理
-- 查询权限
SHOW GRANTS FOR 用户名主机名;
SHOW GRANTS FOR lisi%;-- 授予权限
grant 权限列表 on 数据库名.表名 to 用户名主机名;
-- 给张三用户授予所有权限在任意数据库任意表上
GRANT ALL ON *.* TO zhangsanlocalhost;-- 撤销权限
revoke 权限列表 on 数据库名.表名 from 用户名主机名;
REVOKE UPDATE ON db3.account FROM lisi%;