重学SQL:第一章 SQL基础

本文详细介绍了SQL的基础知识,包括数据定义语言(DDL)、数据操作语言(DML)和数据控制语言(DCL)的常用指令。讲解了如何创建和删除数据库、表,以及对表的更新操作。还深入探讨了各种数据类型如VARCHAR、CHAR、BLOB、TEXT等,以及约束条件如NOTNULL、UNIQUE、PRIMARYKEY等。此外,文章还提及了表的删除与更新规则,提醒用户在执行DROPTABLE命令时需谨慎。
摘要由CSDN通过智能技术生成

一、SQL基础知识

SQL全称:Structured Query Language,结构化查询语言

1.1 SQL语句及种类

  • DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象。主要包括以下指令:
    • CREATE 创建数据库和表等对象
    • DROP 删除数据库和表等对象
    • ALTER 修改数据库和表等对象的结构
  • DML(Data Manipulation Language,数据操作语言)用来查询或者变更表中的记录。主要包括以下指令:
    • SELECT 查询表中的数据
    • INSERT 向表中插入新数据
    • UPDATE 变更表中的数据
    • DELETE 删除表中的数据
  • DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更,也可用来对RDBMS的用户是否有权限操作数据库中的对象(数据库表等)进行设定。主要包括以下指令:
    • COMMIT 确认对数据库中的数据进行的变更
    • ROLLBACK 取消对数据库中的数据进行的变更
    • GRANT 赋予用户操作权限
    • REVOKE 取消用户的操作权限

1.2 SQL书写规则

  1. SQL语句要以分号 ; 结尾
  2. SQL语句不分大小写,但插入到表中的数据是区分大小写的
  3. SQL语句中常量的书写是固定的,字符串和日期要用单引号 ' ' 包裹,数字则不需要任何记号标识
  4. SQL语句中单词之间要用半角空格或换行符进行分隔

1.3 数据库的创建

CREATE DATABASE <数据库名>;

1.4 表的创建

CREATE TABLE <表名> 
(<列名1> <数据类型> <约束条件>,
 <列名2> <数据类型> <约束条件>,
 <列名3> <数据类型> <约束条件>,
 ...
 <该表的约束1>, <该表的约束2>, ... );

命名规则:只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称,并且只能以半角英文字母开头

常用数据类型

数据类型表示数据的种类,常用的主要有:

  1. 字符串型

    • VARCHAR:变长的字符串,需要在声明字段时指定能存储的最大字符数,真实占用的空间取决于存入的字符数,存入的越多占用空间越多。适合保存内容长度不定的字符类型数据。
      注意:Oracle中一般使用VARCHAR2
    • CHAR:定长字符串,需要在声明字段时指定固定字符数。即使存入的字符数少于该长度,该字段也会占用该固定长度。适合存储长度不变的字符类型数。
  2. 大数据类型

    • BLOB:大二进制类型,可以存入二进制类型的数据,通过这个字段,可以将图片、音频、视频等数据以二进制的形式存入数据库。最大为4GB。

    • TEXT:

      大文本,被声明为这种类型的字段,可以保存大量的字符数据,最大为4GB。
      注意:TEXT属于MySQL的方言,在其他数据库中为CLOB类型

  3. 数值型

    • TINYINT:占用1个字节,相对于java中的Byte
    • SMALLINT:占用2个字节,相对于java中的Short
    • INT:占用4个字节,相对于java中的Integer
    • BIGINT:占用8个字节,相对于java中的Long
    • FLOAT:4字节单精度浮点类型,相对于java中的Float
    • DOUBLE:8字节双精度浮点类型,相对于java中的Double
  4. 逻辑型

    BIT:位类型,可以存储指定位的值,可以指定位的个数,如果不指定则默认值为1位,即只能保存0或1,相当于java中的Boolean

  5. 日期型

  • DATE:日期(Oracle中Date还包含时分秒)
  • TIME:时间
  • DATETIME:日期时间
  • TIMESTAMP:时间戳

注意:DATETIME和TIMESTAMP的区别?

DATETIME和TIMESTAMP显示的结果是一样的,都是固定的"YYYY-MM-DD HH:MM:SS"的格式。但DATETIME支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。TIMESTAMP的显示范围是’1970-01-01 00:00:00’到2037年,且其实际的存储值为1970年到当前时间的毫秒数。在建表时,列为TIMESTAMP的日期类型可以设置一个默认值,而DATETIME不行。在更新表时,可以设置TIMESTAMP类型的列自动更新时间为当前时间。

约束

在 SQL 中,对表中的字段有如下约束:

  • NOT NULL:指示某列不能存储 NULL 值
  • UNIQUE: 保证某列的每行必须有唯一的值
  • PRIMARY KEY:NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录
  • FOREIGN KEY:保证一个表中的数据匹配另一个表中的值的参照完整性
  • CHECK:保证列中的值符合指定的条件
  • DEFAULT:规定没有给列赋值时的默认值

1.5 表的删除与更新

表的删除:

DROP TABLE <表名>;

注意:删除的表是无法恢复的,误删表的话只能重新建表、重新插入数据。因此在执行DROP TABLE命令时务必要仔细确认。

表的更新:

  1. 添加列的操作

    ALTER TABLE <表名> ADD COLUMN <列名> <数据类型> <约束条件>;
    

    在Oracle和SQLServer中不需要写COLUMN

    ALTER TABLE <表名> ADD <列名> <数据类型> <约束条件>;
    

    另外在Oracle中同时添加多列时可以使用括号定义多个列

    ALTER TABLE <表名> ADD (
    <列名1> <数据类型> <约束条件>,
    <列名2> <数据类型> <约束条件>,
    <列名3> <数据类型> <约束条件>,
    ……);
    
  2. 删除列的操作

    ALTER TABLE <表名> DROP COLUMN <列名>;
    

    在Oracle和SQLServer中不需要写COLUMN

    ALTER TABLE <表名> DROP <列名>;
    

    在Oracle中同时删除多列时可以使用括号指定多个列

    ALTER TABLE <表名> DROP (<列名1>,<列名2>,<列名3>, ……);
    
  3. 修改列的操作

    # 修改列的属性及约束条件
    ALTER TABLE <表名> MODIFY <列名> <数据类型> <约束条件>;
    # 修改列名称
    ALTER TABLE <表名> RENAME COLUMN <列名> TO <新列名>;
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值