sql学习

因为之前sql学的太烂了,想整理一下

一.什么是 SQL?

SQL 是用于访问和处理数据库的标准的计算机语言。

  • SQL 指结构化查询语言
  • SQL 使我们有能力访问数据库
  • SQL 是一种 标准计算机语言

二.SQL 能做什么?

  • SQL 面向数据库执行查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插入新的记录
  • SQL 可更新数据库中的数据
  • SQL 可从数据库删除记录
  • SQL 可创建新数据库
  • SQL 可在数据库中创建新表
  • SQL 可在数据库中创建存储过程
  • SQL 可在数据库中创建视图
  • SQL 可以设置表、存储过程和视图的权限

三.sql分类

DQL(数据查询语言,用来查询记录(数据))

1.SELECT 语句

SELECT 语句用于从表中选取数据。

结果被存储在一个结果表中(称为结果集)。

复制代码
SELECT 列名称 FROM 表名称


SELECT * FROM 表名称  (* :通配符,表示所有列)

注释:SQL 语句对大小写不敏感。SELECT 等效于 select。

复制代码
SELECT TABLE_SCHEMA FROM COLUMNS

这里我们在columns这个表中查询table------schema这列
复制代码
SELECT * FROM COLUMNS
查询columns这个表

2.WHERE 子句

如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。

复制代码
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

SELECT COLUMN_NAME FROM `COLUMNS` WHERE COLUMN_NAME='TABLE_SCHEMA'

这里是在columns这个表中查找column_name这一列当COLUMN_NAME='TABLE_SCHEMA'的时候

3.GROUP BY 语句

用于结合合计函数,根据一个或多个列对结果集进行分组。

简单来说就是select两列,一列用了函数,一列没有,然后用group by来组合一下

复制代码
SELECT TABLE_NAME,sum(ORDINAL_POSITION) FROM `COLUMNS` group by TABLE_NAME

查询两列,一列是table_name,一列是ordinal_position求和

4.HAVING 语句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

所以having 一定要有group by存在

复制代码
SELECT TABLE_NAME,sum(ORDINAL_POSITION) FROM `COLUMNS` GROUP BY TABLE_NAME HAVING sum(ORDINAL_POSITION)>30

查询两列,table_name,还有ordinal_position求和,用group by来组合两列,用having来限制条件

5.limit

用来限定查询结果的起始行,以及总行数。

复制代码
SELECT * from columns limit 0,5

从0开始查询,查询5条数据

DDL(数据定义语言,用来定义数据库对象:库、表、列等;)

1.create

CREATE DATABASE 语法:CREATE DATABASE database_name

复制代码
create database mmm

创建一个名为mmm的数据库

SQL CREATE TABLE 语法

复制代码
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
复制代码
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

在mmm数据库中创建一个表名为persons 的表,其中有4列,每列容量都是255

2.drop

3.desc

查看表的结构

DML(数据操作语言,用来定义数据库记录(数据);)

1.INSERT INTO 语句

INSERT INTO 语句用于向表格中插入新的行。

语法

复制代码
INSERT INTO 表名称 VALUES (值1, 值2,....)

我们也可以指定所要插入数据的列:

复制代码
INSERT INTO 表名 (列1, 列2,...) VALUES (值1, 值2,....)

插入新的行

复制代码
insert into mmm values('1','wy','18','women')

在mmm表中插入一行数据1,wy,18,women

在指定的列中插入数据

复制代码
insert into mmm (sname,age)values('wwy','20')

在mmm表中插入一行,只有sname,age这两列有数据

2.UPDATE 语句

Update 语句用于修改表中的数据。

语法:

复制代码
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

更新某一行中的一个列

复制代码
update mmm set sname='lll' where age='18'

更新snmae的值为lll当age的值为18的时候

更新某一行中的若干列

复制代码
UPDATE mmm set sname='123',age='30' WHERE gender='women'

更新mmm表中的sname为123,age为30 当gender='women'的时候

3.DELETE 语句

DELETE 语句用于删除表中的行。

语法

复制代码
DELETE FROM 表名称 WHERE 列名称 = 值

删除行

复制代码
DELETE from mmm where sname='123'

删除mmm表中的sanme为123的这一行

删除所有行

复制代码
delete FROM mmm

删除mmm表中的所有行

DCL(数据控制语言,用来定义访问权限和安全级别;)

1.创建用户

语法:
CREATE USER '用户名'@地址 IDENTIFIED BY '密码';

复制代码
CREATE USER 'user1'@localhost IDENTIFIED BY '123'

2.给用户授权

语法:
GRANT 权限 1, ... , 权限 n ON 数据库.* TO '用户名'@地址;

复制代码
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON dvwa.* TO 'user1'@localhost;

GRANT ALL ON dvwa.* TO user2@localhost;

3.撤销授权

语法:
REVOKE 权限 1, ... , 权限 n ON 数据库.* FROM '用户名'@地址;

复制代码
REVOKE CREATE,ALTER,DROP ON dvwa.* FROM 'user1'@localhost;

4.查看用户权限

语法:
SHOW GRANTS FOR '用户名'@地址;

复制代码
SHOW GRANTS FOR 'user1'@localhost;

5.删除用户

语法:
DROP USER '用户名'@地址;

复制代码
DROP USER 'user1'@localhost

相关推荐
qq_29494019107 分钟前
清新文艺手绘学习教育培训竞标汇报PPT模版分享
学习·ppt模版·清新ppt·通用ppt模版
codeRichLife9 分钟前
Mybatisplus3.5.6,用String处理数据库列为JSONB字段
java·数据库
SunsPlanter21 分钟前
Word-- 制作论文三线表
学习
消失在人海中25 分钟前
oracle与MySQL数据库之间数据同步的技术要点
数据库·mysql·oracle
alicelovesu30 分钟前
全栈开发者的“精神分裂”:当你的本地环境需要同时运行PHP、Node.js和Python
数据库·程序员
2501_9153743530 分钟前
Cypher 查询语言完全指南(2024最新版)—— Neo4j 图数据库实战教程
数据库·neo4j
武昌库里写JAVA42 分钟前
iview组件库:当后台返回到的数据与使用官网组件指定的字段不匹配时,进行修改某个属性名再将response数据渲染到页面上的处理
java·开发语言·spring boot·学习·课程设计
CHEN5_021 小时前
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
数据库·redis·分布式·缓存
恰薯条的屑海鸥1 小时前
SQL注入篇-sqlmap的配置和使用
数据库·sql·安全·web安全·渗透测试·网络安全学习
东京老树根1 小时前
SAP学习笔记 - 开发29 - 前端Fiori开发 Custom Controls(自定义控件)
笔记·学习