0


学习大数据,需要的SQL基础(1)

文章目录

SQL语句

1.介绍:操作数据库的语言,所有关系型数据库的语句标准,是一种语法规则
2.但是不同的关系型数据库语法再遵守sql语句的前提下,也有个别不用的语法,这一类不同的语法,也叫做数据库方言

数据库语言分类

数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
数据库操作语言:简称DML(Data Manipulation Language),用来对数据库中的记录进行操作,关键字:insert,delete,update等
数据库控制语言:简称DCL(Data Control Language),用来定义数据库中的访问权限和安全级别,及创建用户
数据库查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录,关键字:select,from,where等

SQL语句的通用语法

SQL语句可以单行或多行书写,以分号结尾
可使用空格和缩进来增强语句的可读性:基本上一个单词就是一个空格
MySQL数据库的SQL语句不去分大小写,关键字建议使用大写
例如:SELECT * FROM user
同样可以使用/* */的方式i完成注释
还可以使用井号##

sql中的数据类型

类型名称说明int 整数长度整数类型double小数类型decimal指定整数位与小数位长度的小数类型date日期类型 格式为yyyy-MM-dd,包括年月日,不包括时分秒datetime日期类型,格式为yyyy-MM-DD HH:MM:SS,包括年月日时分秒timestamp日期类型,时间戳 从1970到2024varchar(字符串长度)文本类型,M为0-65535之间的整数

MySQL中的语句

DDL之数据库操作 database

创建数据库

关键字: create database
语法:create database 数据库名字 charset utf8

在创建数据库时建议用包裹 列名也可以用包裹
注意:
1.mysql默认编码,拉丁文latin-1,所以说创建数据库的时候,指定utf8
2.如果创建数据库的时候忘记夹utf8了,可以后改
3.在写sql语句的时候,如果库名,表名,列名和sql语句的关键字冲突了,可以用``包裹

查看数据库

语法 show databases
在这里插入图片描述

删除数据库

语法 drop database 数据库名;

dropdatabase sys;

在这里插入图片描述

使用数据库(切换数据库)

1.语法:
use 数据库名;

use sys;

DDL之表操作 ---- table

创建表

1.关键字 create table
2.语法:
create table 表名(
列名 数据类型(长度)[约束],
列名 数据类型(长度)[约束]
列名 数据类型(长度)[约束]
)

CREATETABLE category1(
    uid INT,
    uname VARCHAR(10));

3.注意:
定义列和列的时候,用逗号
如果是最后一列,不要用逗号

查看表

查看所有表
show tables;
查看表结构
desc 表名;

showtables;DESC category;

删除表

1.关键字 drop table
2.语法:
drop table 表名

DROPTABLE category;

修改表结构

1.添加列
alter table 表名 add 列名 类型(长度) [约束];

ALTERTABLE category add count int;

2.修改列的类型,长度以及约束
alter table 表名 modify 列名 类型(长度)[约束];

ALTERTABLE category modify count varchar(100);

3.修改列名
alter table 表名 change 旧列名 新列名 类型(长度) [约束];

ALTERTABLE category CHANGE count counts VARCHAR(12);

4.修改表名
rename table 表名 to 新表名;

RENAMEtable category to categories;

5.修改表删除列
alter table 表名 drop 列名

ALTERtable categories drop counts;

DML之数据操作语言

插入数据

1.关键字: insert into
2.语法:
a.insert into 表名(列名,列名) value (值,值)
b.insert into 表名(列名,列名) value (值,值),(值,值),(值,值),(值,值); 批量添加
c.insert into category values (值,值); -------- 如果省略列名,那么在存值时需要将所有列的值都写上
在操作数据的时候,如果时varchar类型的,建议用单引号

原因:将来我们需要用java 代码中的API去操作sql语句,而在Java中写的sql语句时字符串的
String sql = "INSERT INTO category(cid,cname) VALUES (1,“布偶”)“; ---- 双引号不明确
String sql = "INSERT INTO category(cid,cname) VALUES (1,‘布偶’)“; ---- 推荐

INSERTINTO categories(cid,cname)VALUES(1,'布偶');INSERTINTO categories(cid,cname)VALUES(2,'蓝猫');INSERTINTO categories(cid,cname)VALUES(3,'英短'),(4,'梨花');INSERTINTO categories VALUES(5,'奶牛');

删除数据

1.关键字:delete from where
2.语法:
a.delete from 表名 ---- 一次全删除
b.delete from 表名 where 条件 ------ 根据条件删除
Java与mysql符号的对应
javamysql===>><<>=>=<=<=!=!= 或者 <>以下时代码的相关演示

##删除cid的记录DELETEFROM categories WHERE cid =1;##删除cid>=5的记录DELETEFROM categories WHERE cid >=5;## 删除出cid不等于1的记录DELETEFROM categories WHERE cid !=3;DELETEFROM categories WHERE cid <>3;DELETEFROM categories WHERENOT(cid=3);

修改数据

1.关键字:update set
2.语法:
a.update 表名 set 列名 = 新值 — 全部都改成指定的新值
b.update 表名 set 列名 = 新值 — where 条件

##将cname都改成s手机UPDATE categories SET cname ='手机';##将表中手机改成金渐层UPDATE categories SET cname ='金渐层'WHERE cname ='手机';##将cid为2的数据改成银渐层UPDATE categories SET cname ='银渐层'WHERE cid =2;##将cid不等于1的cname都改成布偶UPDATE categories SET cname ='布偶'where cid <>1;

约束

约束:主要是约束指定列的数据

主键约束

1.关键字 primary key
2.特点:
a.主键列的数据唯一不能重复
b.不能为NULL
c.每个表中都应该有一个主键,此列的数据能带包一行数据,相当于人的身份证号

添加方式1:在创建表时,在字段后面直接指定(重点)

在创建表的过程中,在列后面直接写约束

CREATETABLE cats(
    cid INTPRIMARYKEY,
    cname VARCHAR(20))

添加方式2:在constraint约束区域,去指定主键约束

1.什么叫做constraint域
在最后一列和右半个小括号之间
2.语法
[constraint 名字] primary key(字段名)
3.注意:[constraint 名字] 可写可不写

CREATETABLE dogs(
    cid INT,
    cname VARCHAR(20),PRIMARYKEY(cid));

添加方式3:通过修改表结构的方式

1.格式: ALTER TABLE 表名 ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)
2.注意:[CONSTRAINT 名称] 可以省略不写

ALTERTABLE category1 ADDPRIMARYKEY(uid);

联合主键

1.什么叫做联合主键:
多个列合称为一个主键
2.特点:
多个列中不能有完全重复的数据
不能为NULL

删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY ---- 删除主键约束

ALTERTABLE category1 ADDPRIMARYKEY(uid);

自增长约束

基本操作

1.关键字:auto_increment 一般情况下和主键结合使用
2.特点
自增长约束修的列,数据不用我们自己维护,mysq会自动维护
3.自增长约束和主键约束区别:
a.相同点:
此列中的数据唯一
b.不同点:
一个表只能有一个主键,可以代表一条数据
一个表可以有多个自增长列,不能代表一条数据

INSERTINTO dogs VALUES(1,'边牧');INSERTINTO dogs VALUES(NULL,'金毛');INSERTINTO dogs(cname)VALUES('泰迪');

注意:
如果不写列名,我们存数据的时候要一一对应,将所有要存的数据都写上
删除数据,如果此列为自增长列,删除之后,列号不会重新编写,会继续从被删除的那列序号往后编写
摧毁表结构
TRUNCATE TABLE 表名;

自增长是一个约束,操作起来和其他约束不太一样
如果自增长约束和主键约束合起来使用想删除,需先删除自增长约束,在删除主键约束

ALTERTABLE dogs MODIFY cid int;ALTERTABLE dogs DROPPRIMARYKEY;

truncate和delete的区别

1.truncate:清空数据,摧毁表结构,自增长列会重新标号
2.delete:删除表数据,不会摧毁表结构,自增长列不会重写编号,他会继续往下编

非空约束

1.关键字:NOT NULL
2.特点:
被NOT NULL 修饰的列不能为空
建表

CREATETABLE product(
    pid INTPRIMARYKEYAUTO_INCREMENT,
    pname VARCHAR(20)NOTNULL,
    price INT);

插入数据

INSERTINTO product(pname,price)VALUES('键盘',300);##相当于String s = ""INSERTINTO product(pname,price)VALUES('',300);##相当于 String s = NULL,报错INSERTINTO product(pname,price)VALUES(NULL,300);

唯一约束

1.关键字:UNIQUE
2.特点:
被UNIQUE约束的列,数据要唯一,不能重复
3.注意:
唯一约束不能当主键使用,一个表中可有多个列为唯一约束

INSERTINTO cats(pname,price)VALUES('布偶',4000);##报错INSERTINTO cats(pname,price)VALUES('布偶',4000);

删除唯一约束
ALTER TABLE person DTOP INDEX 名称 [名称时CONSTRAINT后面的名字]

ALTERTABLE cats DROPINDEX pname;

简单查询

数据准备

创建商品表

CREATETABLE product(
    pid INTPRIMARYKEY,
    pname VARCHAR(20),
    price DOUBLE);

简答查询

1.关键字:select from where
2.语法:
a.select * from 表名 — 查询所有数据,展示所有列
b.select 列名,列名 from 表名 ---- 查询所有,展示所指定的列
c.select 列名 from 表名 where 条件 ----- 根据条件查询,显示指定列的数据
3.注意:
a.查询之后,想展示哪些列的数据,就在select后面写那些列的列名
b,查询出来结国也是一张表,但是伪表,此表是只读的

SELECT*FROM product;SELECT pid,pname FROM product;## 可以给表或者列起别名SELECT pid '商品id', pname '商品名字'FROM product;

去重复值 关键字: distinct(列名)

SELECTDISTINCT(price)FROM product;

给列中的数据做计算

SELECT pname,(price +100)'newprice'FROM product;

条件查询

比较运算符< <= >= = <>大于、小于、大于(小于)等于、不等于BETWEEN …AND…显示在某一区间的值(含头含尾)字段 IN(set)显示在in列表中的值,例:price in(100,200) 查询id为1,3,7的商品: id in(1,3,7)列名 LIKE ‘张pattern’模糊查询,Like语句中,% 代表零个或多个任意字符,_ 代表一个字符, 例如:

first_name like '_a%';

比如:查询姓张的人:name like ‘张%’
查询商品名中带香的商品: pname like ‘%香%’
查询第二个字为想的商品: like ‘想%'
查询商品名为四个字的商品:like '
___’IS NULL判断是否为空逻辑运行符and (与)多个条件同时成立 全为true,整体才为trueor(或)多个条件任一成立 有真则真not(非)不成立,例:

where not(salary>100); 

相关查询语句

SELECT*FROM product WHERE pname ='花花公子';SELECT*FROM product WHERE price =800;SELECT*FROM product WHERE price >60;SELECT*FROM product WHERE price BETWEEN200AND600;SELECT*FROM product WHERE price =200or price =600;SELECT*FROM product WHERE price IN(200,600);##查询以香字开头的商品SELECT*FROM product WHERE pname LIKE'香%'##查询含有霸的商品SELECT*FROM product WHERE pname LIKE'%霸%'##查询商品名为null的SELECT*FROM product WHERE pname ISNULL;SELECT*FROM product WHERE pname ISNOTNULL;

排序查询

1.关键字:order by
2.语法:
select 列名 from 表名 order by 排序字段 asc|desc ---- 查询之后要指明那一列进行排序
asc 升序 默认
desc 降序
3.注意:先查询,后排序
书写sql语句关键字的顺序
select
from
where
group by
having
order by

执行顺序
from
where
group by
having
select
order by
先定位到要查询哪个表,然后根据什么条件去查,表确定好了,条件也确定好了,开始利用select查询,查询得出一个结果,在针对这个结果进行一个排序

##对价格进行降序排序SELECT*FROM product ORDERBY price DESC;##对价格进行升序排序SELECT*FROM product ORDERBY price ASC;SELECTDISTINCT(price)FROM product ORDERBY price ASC;
标签: 学习 大数据 sql

本文转载自: https://blog.csdn.net/weixin_46668520/article/details/136659242
版权归原作者 龙俊俊 所有, 如有侵权,请联系我们删除。

“学习大数据,需要的SQL基础(1)”的评论:

还没有评论