首页 > 数据库 >SQL语句复习

SQL语句复习

时间:2023-01-14 12:02:16浏览次数:37  
标签:语句 存储 复习 distinct 列名 SQL 数据类型 表名 SELECT

数据库定义语言(DDL)

数据库操作

  • 创建数据库
    create database 数据库名
  • 为了能够支持中文,我们在创建时可以设定编码格式:
    CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  • 删除数据库:
    drop database 数据库名

创建表

create table 表名(列名 数据类型[列级约束条件],
             列名 数据类型[列级约束条件],
             ...
             [,表级约束条件])

SQL数据类型

以下的数据类型用于字符串存储:

  • char(n)可以存储任意字符串,但是是固定长度为n,如果插入的长度小于定义长度时,则用空格填充。
  • varchar(n)也可以存储任意数量字符串,长度不固定,但不能超过n,不会用空格填充。

以下数据类型用于存储数字:

  • smallint用于存储小的整数,范围在 (-32768,32767)
  • int用于存储一般的整数,范围在 (-2147483648,2147483647)
  • bigint用于存储大型整数,范围在 (-9,223,372,036,854,775,808,9,223,372,036,854,775,807)
  • float用于存储单精度小数
  • double用于存储双精度的小数

以下数据类型用于存储时间:

  • date存储日期
  • time存储时间
  • year存储年份
  • datetime用于混合存储日期+时间

列级约束

列级约束有六种:主键Primary key、外键foreign key 、唯一 unique、检查 check (MySQL不支持)、默认default 、非空/空值 not null/ null

表级约束条件

表级约束有四种:主键、外键、唯一、检查

修改表

ALTER TABLE 表名[ADD 新列名 数据类型[列级约束条件]]
                         [DROP COLUMN 列名[restrict|cascade]]
                         [ALTER COLUMN 列名 新数据类型]

我们可以通过ADD来添加一个新的列,通过DROP来删除一个列,不过我们可以添加restrict或cascade,默认是restrict,表示如果此列作为其他表的约束或视图引用到此列时,将无法删除,而cascade会强制连带引用此列的约束、视图一起删除。还可以通过ALTER来修改此列的属性。

删除表

DROP TABLE 表名[restrict|cascade]

数据库操纵语言(DML)

插入数据

INSERT INTO 表名 VALUES(值1, 值2, 值3)
如果插入的数据与列一一对应,那么可以省略列名,但是如果希望向指定列上插入数据,就需要给出列名:
INSERT INTO 表名(列名1, 列名2) VALUES(值1, 值2)
一次性向数据库中插入多条数据:
INSERT INTO 表名(列名1, 列名2) VALUES(值1, 值2), (值1, 值2), (值1, 值2)

修改数据

UPDATE 表名 SET 列名=值,...WHERE 条件

删除数据

DELETE FROM 表名 WHERE 条件

数据库查询语言(DQL)

单表查询

-- 查询某列数据
SELECT 列名[,列名] FROM 表名
-- 以别名显示该列
SELECT 列名 别名 FROM 表名
-- 查询所有数据
SELECT * FROM 表名
-- 只查询不重复的值
SELECT DISTINCT 列名 FROM 表名
-- 添加限定条件
SELECT * FROM 表名 WHERE 条件

常用查询条件

  • 一般的比较运算符,包括=、>、<、>=、<=、!=等
  • 是否在集合中:in、not in
  • 字符模糊匹配:like,not like
  • 多重条件连接查询:and、or、not

排序查询

SELECT * FROM 表名 WHERE 条件 ORDER BY 列名 ASC|DESC
使用ASC表示升序排序,使用DESC表示降序排序,默认为升序。
我们也可以可以同时添加多个排序:
SELECT * FROM 表名 WHERE 条件 ORDER BY 列名1 ASC|DESC, 列名2 ASC|DESC
这样会先按照列名1进行排序(主要关键字),每组列名1相同的数据再按照列名2排序(次要关键字)。

聚集函数

聚集函数一般用作统计,包括:

  • count([distinct]*)统计所有的行数(distinct表示去重再统计,下同)
  • count([distinct]列名)统计某列的值总和
  • sum([distinct]列名)求一列的和(注意必须是数字类型的)
  • avg([distinct]列名)求一列的平均值(注意必须是数字类型)
  • max([distinct]列名)求一列的最大值
  • min([distinct]列名)求一列的最小值
    使用示例:
    SELECT count(distinct 列名) FROM 表名 WHERE 条件

标签:语句,存储,复习,distinct,列名,SQL,数据类型,表名,SELECT
From: https://www.cnblogs.com/HsiaYuBing/p/17051524.html

相关文章

  • PostgreSQL数据库事务系统——phenomena
    读写并发操作引发的数据异常现象TheisolationlevelspecifiesthekindofphenomenathatcanoccurduringtheexecutionofconcurrentSQL-transcations.Thefollo......
  • PostgreSQL数据库FDW——读取parquet文件用例
    以下打开存储在S3上Parquetfile的代码来自于定义在parquet_s3_fdw_connection.cpp文件中parquetGetFileReader函数(该函数由DefaultParquetReader类的有参open函数调用)。其......
  • PostgreSQL数据库FDW——Parquet S3 DefaultParquetReader类
    S3RandomAccessFileS3RandomAccessFile类定义在parquet_s3_fdw.hpp,用于访问s3对象存储的类。其成员函数定义在parquet_s3_fdw.cpp文件中,S3RandomAccessFile构造函数用于初始......
  • PostgreSQL数据库FDW——Parquet S3 Foreign Data Wrapper
    ThisPostgreSQLextensionisaForeignDataWrapper(FDW)foraccessingParquetfileonlocalfilesystemandAmazonS3.Thisversionofparquet_s3_fdwcanwork......
  • PostgreSQL数据库FDW——Parquet S3 ParallelCoordinator
    ParallelCoordinator类定义在src/reader.hpp文件中,该类用于支持postgresparallelforeignscan能力。ParallelCoordinator类支持单个parquet文件扫描并行PC_SINGLE和多个pa......
  • PostgreSQL数据库FDW——Parquet S3 CachingParquetReader
    CachingParquetReader类继承自ParquetReader类,相对于DefaultParquetReader类,其新增is_active成员用于控制next函数的返回值RS_INACTIVE。新增column_data和column_nulls成员......
  • 认真研究MySQL的主从复制(一)
    【1】主从复制概述①如何提升数据库并发能力在实际工作中,我们常常将Redis作为缓存与MySQL配合使用,当有请求的时候,首先会从缓存中进行查找。如果存在就直接取出,如果不存在再......
  • QSqlite 使用记录
    QSqlite使用记录一个QSqlDatabase的实例表示着一个对数据库的连接setDatabaseName("");指定文件路径,就可以操作指定的文件插入sqlite在没有显式使用事务的时候会为每......
  • ### Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
    前言使用MyBatis进行SQL查询,报出SQL异常,原因为SQL语句最后结束加了分号(?)(?)org.springframework.jdbc.BadSqlGrammarException:###Errorqueryingdatabase.Cause:j......
  • SQL_11_数据库设计范式
    为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则,即为范式。 第一范式:列不可再分割,保证其具有原子性。第二范式:表中每一列都和主键相关,......