IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 详细介绍了mysql里面的sql语句如何使用 -> 正文阅读

[大数据]详细介绍了mysql里面的sql语句如何使用

MySQL登录与退出

登录: mysql -hlocalhost -P3306 -uroot -p

简写:mysql -uroot -p
-h mysql服务器ip
-P mysql端口号
-u 用户名
-p 密码

退出

exit
quit
\q

修改mysql提示符

prompt 提示符
\D 完整的日期
\d 当前数据库
\h 服务器名称
\u 当前用户
在这里插入图片描述

MySQL语法

MySQL采用结构化查询语言SQL (Structured Query Language)语言来操作数据库

  • SQL语句必须以 ; 结束
  • SQL语句分类
    1. DDL(数据定义语言): create、drop、alter、truncate
    2. DQL(数据查询语言): select、show
    3. DML(数据操作语言): insert、update、delete
    4. DCL (数据控制语言): grant、revoke、begin transaction、commit、roolback
    5. 功能函数——日期函数、数学函数、字符函数、系统函数等

MySQL中使用SQL语言几点说明

  1. 属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完。
  2. 箭头(->)代表SQL语句没有输入完
  3. 取消SQL语句使用(\c)
  4. SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)
    使用函数时,函数名和后面的括号之间不能有空格yigou_shop yigouShop

MySQL数据类型

整型
浮点型
字符型
布尔型
日期型

1. 整形

在这里插入图片描述
注意:int(10) unsigned zerofill //最大10位数字的无符号整数
整数类型的语法(以INT为例):
INT[(M)]
注意:在MySQL中,允许在整数后面带一个表示显示宽度的数字
如:INT(5),表示宽度为5 0-99999 00000-99999

2. 浮点型

在这里插入图片描述

float[(总位数,小数点后位数)] 最大精确到小数点后7位
double[(总位数,小数点后位数)] 最大精确到小数点后15位
注:超过限定长度将进行四舍五入计算

货币数据类型
decimal(P,D)
P是表示有效数字数的精度。 P范围为1?65。
D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。

3. 字符串类型

在这里插入图片描述
注意事项

CHAR的长度范围在0~255之间
VARCHAR类型的长度范围0~65535
在使用CHAR和VARCHAR类型时,当我们传入的实际的值的长度大于指定的长度,字符串会被截取至指定长度
在使用CHAR类型时,如果我们传入的值的长度小于指定长度,实际长度会使用空格补至指定长度
在使用VARCHAR类型时,如果我们传入的值的长度小于指定长度,实际长度即为传入字符串的长度,不会使用空格填补
CHAR要比VARCHAR效率更高,但占用空间较大
BLOB和TEXT类型是可以存放任意大数据的数据类型
BLOB区分大小写,TEXT不区分大小写
ENUM和SET类型是特殊的的串类型,其列值必须从固定的串集中选择
ENUM只能选择其中一个值,SET可以选择多个值

日期类型

在这里插入图片描述

布尔值

BOOLEAN或简写为BOOL
0表示假,非0表示真,一般用1表示

MySQL的操作- 按操作对象可分为:

  • 数据库操作
    数据表操作
    数据记录操作
  • 按操作类型可分为
    增加 (Create)操作
    修改 (Update)操作
    查询 (Read)操作
    删除 (Delete)操作

数据库操作

添加数据库

create database [if not exists] 库名 [[default] character set 编码方式]

查看数据库

show databases      查看MySQL下有哪些数据库
show create database 库名   查看某个数据库的详细信息

修改数据库

alter database 库名 [default] character set 编码方式

删除数据库

drop database [if exists] 库名

数据表操作

操作数据表之前需要先打开数据表所在的数据库

 use 库名

添加数据表

create table [if not exists] 表名(
字段名  数据类型  [约束],
字段名  数据类型  [约束],
......
字段名  数据类型  [约束]
)[ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci] ;

查看数据表

show tables   查看当前数据下有哪此数据表
show create talbe 表名 查看建表信息
desc 表名 查看表结构

修改数据表

/* 增加字段 */
alter table 表名 add [colum]  字段名 数据类型 [约束]
/* 修改字段名 */
alter table 表名 change 字段名  新字段名 数据类型 [约束]
/* 删除字段 */
alter table 表名 drop [colum]  字段名
/* 更改表名 */
alter table 表名 rename  [to]  新表名

删除数据表

drop table  表名

数据记录操作

添加一条数据

INSERT INTO 表名 [(字段名1,字段名2,…字段名n)] VALUES(‘值1’,‘值2’,…,’值n’);

添加多条数据

INSERT INTO 表名 [(字段名1,字段名2,…字段名n)] 
VALUES(‘值1’,‘值2’,…,‘值n’),
(‘值1’,‘值2’,…,‘值n’),
......
(‘值1’,‘值2’,…,’值n’);

删除记录

delete from 表名 [where 条件子句] [order by 字段 asc|desc ] [limit 条数]

删除全部记录

truncate table 表名

更新记录

根据条件更新记录

update 表名  set  字段名=新值,字段名=新值,....... [where 条件子句] [order by 字段 asc|desc ] [limit 条数]

查询记录

单表查询

select 字段1,字段2,...... from 表名 [where 条件子句] [group by 字段][having 条件子句][order by 字段] [limit [起始值] 条数] 

where 子句是判断语句,用来设定条件,限制只更新匹配的行,如果不带where子句,则更新所有行数据

起始值从1开始

条件查询

like模糊查询通配符:
% 通配0个或多个字符 %李%
_ 通配一个字符
binary 区分大小写
[abcdef] 通配字符列中的任何单一字符
[^abcdef] 通配不在字符列中的任何单一字符

Alias 别名

通过使用 SQL,可以为字段名称和表名称指定别名

SELECT 字段名 AS 别名  FROM 表名
SELECT * FROM 表名 AS 表别名---多表查询

distinct 去重复

关键词 DISTINCT 用于返回唯一不同的值

SELECT DISTINCT 字段名称 FROM 表名称

增删改查数据

单表查询

select 字段1,字段2,...... from 表名 [where 条件子句] [group by 字段][haveing 条件子句][order by 字段] [limit [起始值] 条数]

插入记录操作

INSERT [INTO] <表名> [列名] VALUES <值列表>

如果表名后面没写字段名,则默认是向所有的字段添加值,另外字符串值应该用‘ ’或“ ”引号括起来

/* 向people表中添加一条记录: */
insert into people(name,age) values(“zhangsan”,20);

更改记录操作

UPDATE <表名> SET <列名 = 更新值> [WHERE <更新条件>]

where 子句是判断语句,用来设定条件,限制只更新匹配的行,如果不带where子句,则更新所有行数据

/* 将student表中的所有学生名称为"Alex"的改为"Tom":*/
update student set sname="Tom" where sname="Alex";

删除操作

DELETE FROM <表名> [WHERE <删除条件>]

此语句删除表中的行,如果不带where子句,则删除整个表中的记录,但是表不被删除。

/* 删除student表中的所有年龄小于18岁的记录:*/
delete from student where sage<18;
update  sudent  set  type=0 where sage<18

设定编码方式

use shop
set names utf8;(windows自带的编码方式是gbk)

多边操作

连接查询:

				1. 同时涉及多个表的查询称为连接查询;
				2. 用来连接两个表的条件称为连接条件

多表插入

将查询到的记录插入到已存在的表中

insert 表名(字段列表) select 语句

insert  brand(brand_name)   select brand_name from goods group by brand_name;

多表查询

创建新表并将查询到的记录插入到新表中

create table 表名[(
字段名 数据类型 [约束],

)] select 语句 ;

create table category(
cid smallint unsigned key auto_increment
) 
select cate_name from goods group by cate_name;

连接类型

select 字段列表 from 表1 [[as] 别名] 连接类型 表2 [[as] 别名] on 连接条件 where …

内连接 inner join
外联接
左外连接 left [outer] join
右外连接 right [outer] join

内连接

显示左表及右表中符合连接条件的记录

在这里插入图片描述

select id,goods_name,brand_name,cate_name from goods 
inner join brand on goods.brand_id=brand.bid 
inner join category on goods.cate_id=category.cid;
左外连接

显示左表全部记录及右表中符合连接条件的记录

在这里插入图片描述

select id,goods_name,brand_name,cate_name from goods 
left join brand on goods.brand_id=brand.bid 
left join category on goods.cate_id=category.cid;
右外连接

显示右表全部记录及左表中符合连接条件的记录

在这里插入图片描述

select id,goods_name,brand_name,cate_name from goods 
right join brand on goods.brand_id=brand.bid 
right join category on goods.cate_id=category.cid;

类似于内连接的多表查询

select 字段列表 from 表1,表2,表3… where 连接条件1 and 连接条件2 …

select id,goods_name,cate_name,brand_name,price from goods as g,brand as b,category as c where g.brand_id=b.bid and g.cate_id=c.cid;

多表更新

update 表1 [[as] 别名] inner join 表2 [[as] 别名] on 连接条件 [where 条件语句] set 表1.字段=表2.字段,…

update goods as g inner join category as c on g.cate_name=c.cate_name set g.cate_name=c.cid;
update goods as g inner join brand as b on g.brand_name=b.brand_name set g.brand_name=b.bid;

多表删除

delete 表名 from 数据表参照关系 where 语句

delete t1 from  goods as t1 left join 
(select id,goods_name from goods group by goods_name having count(goods_name)>1) as t2  on t1.goods_name=t2.goods_name 
where t1.id >t2.id;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-10-29 13:06:54  更:2021-10-29 13:09:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:39:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码