- 下载完之后在终端确认是否已经安装成功
-
输入cd /usr/local/mysql/bin 回车
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e69ac359011ca0a2f2a59eb26259ab9b.jpeg)
-
输入ls回车
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/79a20dd5f0edcc68f50eaeed7c3120fc.jpeg)
-
输入/usr/local/mysql/bin/mysql -uroot -p 回车
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7951e48762863a02d4d5967774cd6870.jpeg)
-
直接输入密码回车
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3a59476b0d63fce4da4806db3bdc5607.jpeg)
-
确认完成可直接使用
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c7e5813b27845eb31b2f92ea654aea49.jpeg)
- sql语句
1. sql语句就是结构化查询语句 ==>需要学习的一些指令 便于对数据库进行操作
2. sql 语句的分类 DDL DML DQL DCL
DDL:主要是针对于 数据库 以及表的操作 关键字 alter drop create
DML 主要是针对于 表里的数据进行操作,也就是 增加 删除 修改 insert delete update
DQL 主要是针对于 表里的数据进行操作 一般用于写查询语句(重点)
DCL 主要用于修改权限 运维做的
- DDL
1. 创建一个数据库
语法: create database 数据库的库名;
2. 在创建数据库的时候给其设置编码格式
语法: create database 数据库的库名 character set utf8;
3. 在创建数据库的时候 判断数据库 是否存在
语法: create database if not exists 数据库的库名;
4. 查看数据库的结构
语法: show create database 数据库的库名;
5. 修改数据库的编码格式
语法: alter database 数据库的库名 character set gbk;
6. 切换到具体的某一个数据库
语法: use 数据库的库名 ;
7. 删库 drop database 数据库的库名;
8. 查看所有的数据库 show databases;
-数据库中的表
- 数据库中的数据类型
1. int 整形
2. double 小数
3. char 字符串 不可以变的字符串 不管数据的多少 都会占 设置的长度 不够的使用""来代替 一般用于设置固定长度的字符型(性别 男 或者是女)
4. varchar ==>可变 的字符串 根据数据来设置其长度
5. date 年月日
6. datetime 年月日 时分秒
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/10bf921232ed7d71b9abbf9bde912455.jpeg)
-
语法:
create table 表明(
列名1 数据类型(长度),
列名2 数据类型(长度),
列名3 数据类型(长度)
);
注意: 一定要切入到对应的数据库 use 数据库的名字
2. 创建表结构 show create table 表名;
3. 查看表结构 desc 表名;
4. 修改标的名字 alter table 表名 rename to 新的表名;
5. 查看当前库中所有的表 show tables;
6. 新增加一列 alter table 表名 add 列名 数据类型(长度);
可视化工具 SQLyog
- DML 语句
- 插入
1. 增加(插入一条数据):
(1) insert into 表名 (sid,sname,spwd,createTime) values (值1,值2,值3,值4)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ab132b9190ff30412cd14cc61dcfb1f8.jpeg)
(2) 不指定列名 按照顺序来进行插入(不常用 容易出现错误)
insert into 表名 values (插入的值1,插入的值2)
注意: 必须所有的列都要插入值
INSERT INTO student VALUES(2,“班长”,“123456”,‘2019-01-22’): | |
---|
| |
2. 插入多条数据
语法: insert into 表名 value (第一组值), (第二组值)
注意事项 :A.列名必须是表名存在的
B.列名的类型与插入值的类型要以一对应
C. 如果插入的是事件类型 一定要加上单引号
INSERT INTO student VALUES(3,“花花”,“123452”,‘2019-06-21’),(4,“翠翠”,“123457”,‘2019-04-12’): | |
---|
| |
- 修改 关键字update
1. 修改一个列的语法 update 表名 set 列名 = 数据1 where 条件
UPDATE student SET sname=“大胖” WHERE sid =3 | |
---|
| |
2. 修改多个列 update 表名 set 列名=数据1,列名2=数据2 where 条件
UPDATE student SET sname=“小胖”,spwd=“123456” WHERE sid =3 | |
---|
| |
3. 修改表中所有的数据 update 表名 set 列名=数据1, 列名2=数据2
注意事项 :A.列名必须是表名存在的
B.列名的类型与插入值的类型要以一对应
C. 如果插入的是事件类型 一定要加上单引号
UPDATE student SET sname=“小胖”,spwd=“123456” | |
---|
| |
- 删除 关键字delete
- 语法 delete from 表名 where 条件
DELETE FROM student WHERE sid=2 | |
---|
| |
- 删除所有的数据 delete from 表名 一定要慎用
总结:增加删除修改 会对数据库的数据产生影响,查询不会对数据产生影响
- DQL 语句
- 查询语句的关键子是select * from
* 表示查询所有的数据,也可以根据具体的字段来查询指定的列
#查询product表中所有记录 | |
---|
SELECT * FROM product | |
#查询product表中pid和pname字段 | |
---|
SELECT pid,pname FROM product | |
- 在查询的过程可以做一些相应的计算
#查询结果是表达式(运算查询):将所有商品的价格+10元进行显示 | |
---|
SELECT name,prrice+10 FROM product | |
- 去重复 DISTINCT
#去重复 | |
---|
SELECT DISTINCT price FROM product | |
- 设置别名 关键字是 as as可以给表 设置 也可以列设置 as可以省略
#设置其别名 可以给表设置 也可以给列设置 关键字as | |
---|
SELECT p.pname,p.price+10 AS 商品的价格 FROM product AS p | |
- 根据条件来进行查询 关键字: where or 或者 and 并且 between and 在什么范围之类 in(20,30) 或者
#查询商品名称为“花花公子”的商品所有信息 | |
---|
SELECT * FROM product WHERE pname="花花公子“ | |
- 模糊查询 like % 匹配所以 _匹配一个字符
#查询含有‘霸’字的所有商品 | |
---|
SELECT * FROM product WHERE name LIKE “%霸%” | |
#查询以‘香’字开头的所有商品 | |
– | – |
SELECT * FROM product WHERE pname LIKE “香%” | |
#查询第二个字为‘想’的所有商品 | |
– | – |
SELECT * FROM product WHERE pname LIKE “_想%” | |
- is not null is null 这里null 并不是""
#商品没有分类的商品 is null 并不等于 空字符串 一般没有插入的数据是null | |
---|
SELECT * FROM product WHERE category_name IS NULL | |
#查询有分类的商品 | |
– | – |
SELECT * FROM product WHERE category_name IS NULL | |
- 分页查询的关键字 limit 参数1, 参数2 参数1表示数据索引 参数2表示页量
#分页查询 limit #查询出前三条数据 3表示的是页两 | |
---|
SELECT *FROM product LIMIT 3 | |
#查询第一页 0 表示的是索引 从0开始 第二个表示页量 | |
– | – |
SELECT *FROM product LIMIT 0, 3 | |
#查询第二页的数据 | |
– | – |
SELECT *FROM product LIMIT 3, 3 | |
#查询第三页的数据 公式:索引的规律=(当前页-1)*页量 | |
– | – |
SELECT *FROM product LIMIT 6, 3 | |
- 升序 与降序 order by asc 升 desc 降
#1.使用价格排序(降序) #order by desc 降序 asc升序 | |
---|
SELECT *FROM product ORDER BY price DESC | |
#若价格相同,相同价格的数据以pid降序排序 | |
– | – |
SELECT *FROM product ORDER BY price DESC, pid DESC | |
- 聚合函数 count() sum() max() min() avg()
#1. 查询商品的总条数 count(*,或者1 是列名) | |
---|
SELECT COUNT(*) AS “总记录数” FROM product | |
SELECT COUNT(1) FROM product 这个效率高于上面的语句 | |
– | – |
| |
- 分组 关键字 group by
#sum(列名)max(列名) min(列名) avg(列名) | |
---|
#查看商品总价格,最大价格,最小价格,价格的平均值 | |
SELECT SUM(price) AS 总价格,MAX(price) AS 最大值,MIN(price) AS 最小值, | |
– | – |
AVG(price) AS 平均价格 FROM product | |
#查询价格大于200商品的总条数 | |
– | – |
SELECT COUNT(1) FROM product WHERE price>200 | |
#查询分类为‘电脑办公’的所有的商品的总记录 | |
– | – |
SELECT COUNT(1) FROM product WHERE category_name=“电脑办公” | |
#查询分类为‘服装’所有商品的平均价格 | |
– | – |
SELECT AVG(price) FROM product WHERE category_name=“服装” | |
- 分组关键字 group by
#统计各个分类下商品的个数 | |
---|
SELECT COUNT(1),category_name FROM product GROUP BY category_name | |
- 过滤使用的是 having
having 过滤 与where的区别 一个是分组前where having是在分组后
#统计各个分类商品的个数,有且只显示分类名称不为空指的数据 | |
---|
SELECT COUNT(1), category_name FROM product GROUP BY category_name HAVING category_name IS NOT NULL | |
- 查询语句不能随便调换位置
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/810a852541426639aeb1e2720ba3a57e.jpeg)