一些SQL基础操作

Posted 李元芳芳芳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些SQL基础操作相关的知识,希望对你有一定的参考价值。

一.DDL–操作数据库和表

1.查询

SHOW DATABASES;

2.创建
创建数据库

CREATE  DATABASE  数据库名称;

创建数据库(判断,如果不存在则创建)

CREATE DATABASE IF NOT EXISTS 数据库名称;

3.删除
删除数据库

DROP  DATABASE  数据库名称;

删除数据库(判断,如果存在则删除)

DROP DATABASE IF EXISTS 数据库名称;

4.使用数据库
查看当前使用的数据库

SELECT DATABASE();

使用数据库

USE 数据库名称;

5.查询表
查询当前数据库下所有表名称

SHOW TABLES;

查询表结构

DESC 表名称;

6.创建表

CREATE TABLE 表名 (
   字段名1  数据类型1,
   字段名2  数据类型2,
   ...
   字段名n  数据类型n,
);

7.删除表
删除表

DROP TABLE 表名;

删除表时判断表是否存在

DROP TABLE IF EXISTS 表名;

8.修改表
修改表名

ALTER TABLE 表名 RENAME TO 新的表名;

添加一列

ALTER TABLE 表名 ADD 列名 数据类型;

修改数据类型

ALTER TABLE 表名 MODIFY 列名 新数据类型;

修改列名和数据类型

ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

删除列

ALTER TABLE 表名 DROP 列名;

二.DML-- 操作数据

1.删除数据

DELETE FROM 表名 [WHERE 条件];

2.添加数据
给指定列添加数据

INSERT INTO 表名(列名1,列名2,...) VALUES(1,2,...);

给全部列添加数据

INSERT INTO 表名 VALUES(1,2,...);

批量添加数据

INSERT INTO 表名(列名1,列名2,...) VALUES(1,2,...),(1,2,...),(1,2,...)...;
INSERT INTO 表名 VALUES(1,2,...),(1,2,...),(1,2,...)...;

3.修改数据
修改表数据

UPDATE 表名 SET 列名1=1,列名2=2,... [WHERE 条件];

三.DQL
1.基础查询
查询多个字段

SELECT 字段列表 FROM 表名;
SELECT * FROM 表名;--查询所有数据

去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

起别名

AS: AS 也可以省略

2.条件查询(WHERE)
语法:

SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件:


3.排序查询(ORDER BY)

SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] ...;

排序方式:
ASC : 升序排列 (默认值)
DESC :降序排列
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
4.分组查询(GROUP BY)

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

where和having的区别:
执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤
可判断的条件不一样:where不能对聚合函数进行判断,having可以。
执行顺序:where>聚合函数>having
5.分页查询(LIMIT)

SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;

起始索引:从0开始
计算公式:起始索引=(当前页码-1)* 每页显示的条数
tips:
分页查询limit是mysql数据库的方言
Oracle分页查询使用rownumber
SQL Server分页查询使用top
6.聚合函数

SELECT 聚合函数名(列名) FROM;
--null值不参与所有聚合函数运算

count、max、min、sum、avg

四.数据类型

五.约束


外键约束
添加约束

-- 创建表时添加外键约束
CREATE TABLE 表名(
  列名 数据类型,
  ...
  [CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);
-- 建完表之后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

删除约束

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称

六.多表查询

内连接

--隐式内连接
SELECT 字段列表 FROM1,2... WHERE 条件;
--显式内连接
SELECT 字段列表 FROM1,2 [INNER] JOIN2 ON 条件;

外连接

--左外连接
SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;
--右外连接
SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;

子查询

七.事务

数据库的事务是一种机制、一个操作序列,包含了一组数据库操作命令
要么同时成功,要么同时失败
事务是一个不可分割的工作逻辑单元

-- 开启事务
START TRANSACTION
或者BEGIN;
-- 提交事务
COMMIT;
-- 回滚事务
ROLLBACK;

事务四大特征(ACID)
原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
隔离性(Isolation):多个事务之间,操作的可见性
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

MySQL事务默认自动提交

--查看事务的默认提交方式
SELECT @@autocommit;
-- 1 自动提交  0 手动提交
-- 修改事务提交方式
set @@autocommit = 0;

以上是关于一些SQL基础操作的主要内容,如果未能解决你的问题,请参考以下文章

sql Closure表操作SQL片段

spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段

mybatis入门基础----动态SQL

sql 数据操作片段

一些SQL基础操作

一些SQL基础操作