zoukankan      html  css  js  c++  java
  • sql 学习笔记-1

    sql 学习笔记1

    SQL语句种类

    DDL

    DDL(Data Definition Language,数据定义语言)用来创建或删除存储数据用的数据库以及数据库中的表等对象。

    • CREATE:创建数据库和表等对象
    • DROP:删除数据库和表等对象
    • ALTER:修改数据库和表等对象的结构

    DML

    DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录。

    • SELECT:查询表中的数据
    • INSERT:向表中插入新数据
    • UPDATE:更新表中的数据
    • DELETE:删除表中的数据

    DCL

    DCL(Data Control Language,数据控制语言)用来确认或者取消对数据中的数据进行的变更。除此之外,还可以对RDBMS的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL包含以下几种指令。

    • COMMIT:确认对数据库中的数据进行的变更
    • ROLLBACK:取消对数据库中的数据进行的变更
    • GRANT:赋予用户操作权限
    • REVOKE:取消用户的操作权限

    实际使用的SQL语句中有90%属于DML。


    SQL 的基本书写规则

    1. SQL语句要以分号(;)结尾
    2. SQL语句不区分大小写(不成文的规矩如下:)
      • 关键字大写
      • 表名的首字母大写
      • 其余(列名等)小写
      • 插入到表中的数据是区分大小写的
    3. 常数的书写方式是固定的
      • 字符串和日期常数需要使用单引号(')括起来
      • 数字常数无需加注单引号(直接书写数字即可)
    4. 单词需要用半角空格或者换行来分隔
      • 如: CREATE TABLE Product(正确的)

    基于 postgresql 学习 sql

    数据库的创建(CREATE DATABASE语句)

    • CREATE DATABASE <数据库名>;
      • CREATE DATABASE shop;
      • 最后数据库的库名只能使用小写字母。

    登录数据库

    登录方式共三种:

    1. 打开cmd,执行C:postgresql10inpsql.exe -U postgres -d shop
      • 这里的 -U 指 user,因为默认设置的是 postgres
      • 这里的 -d 指 database,所以后面跟库名shop。
    2. 直接打开postgresql的shell
    3. 直接使用pg4admin打开

    表的创建(CREATE TABLE语句)

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

    该语法清楚地描述了我们要创建一个包含<列名1>,<列名2>,...的名称为<表名>的表,很容易理解。
    每一列的数据类型(后述)是必须要指定的,
    还要为需要的列设置约束(后述)。
    约束可以在定义列的之后进行设置,也可以在语句的末尾进行设置。
    但是 NOT NULL 约束只能以列为单位进行设置。

    CREATE TABLE Product
    (product_id CHAR(4) NOT NULL,
    product_name VARChAR(100) NOT NULL,
    product_type VARChAR(32) NOT NULL,
    sale_price INTEGER  ,
    purchase_price INTEGER ,
    regist_date DATE ,
    PRIMARY KEY (product_id));
    

    命名规则

    我们只能使用半角英文字母、数字、下划线(_)所谓数据库、表和列的名称。且只能以字母作为开头。名称还不能重复。

    1. 数据库名称、表明和列名等可以使用以下三种字符:
      1. 半角英文字母
      2. 半角数字
      3. 下换线(_)
    2. 名称必须以半角英文字母作为开头。
    3. 名称不能重复。

    数据类型的指定

    数据类型表示数据的种类,包括数字型、字符型和日期型等。每一列不能存储与该列数据类型不符的数据。
    最基本的四种数据类型:

    1. INTEGER型
      • 用来指定存储证书的列的数据类型(数字型),不能存储小数。
    2. CHAR型
      • CHAR 是CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符型)。
      • CHAR(10),在括号中指定该列可以存储的字符串的长度(最大长度),字符串超出最大长度部分是无法输入到该列中的。
      • 不同RDBMS,长度单位可能不同,存在字符个数、字节长度的情况。
      • 字符串以定常字符串的形式存储在被指定的CHAR型的列中。即:字符串长度达不到最大长度的时候,使用半角空格在后面进行补足。
    3. VARCHAR型
      • 同CHAR类型一样,用来指定存储字符串的列的数据类型(字符串类型)。
      • 也可以通过括号内的数字来指定字符串的长度(最大长度)。
      • 该类型的列是可变长字符串的形式来保存字符串的。
      • 可变长字符串类型,即使字符数未达到最大长度,也不会使用半角空格在后面补足。如:VARCHAR(8)类型存储'abc'的时候,保存的就是'abc',而不是'abc口口口口口'。
      • Oracle中使用 VACHAR2 型(oracle也有varchar类型,但并不推荐使用)
    4. DATE型
      • 用来指定存储日期(年月日)的列的数据类型(日期型)。

    约束的设置

    约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。

    1. 数据类型的右侧设置了 NOT NULL 约束。
      • NULL是代表空白(无记录)的关键字。在前面加 NOT 表示不能为空。
      • 如 Product 表中的 product_id 和product_name 两列都不能为空。
    2. 主键约束
      • PRIMARY KEY (product_id) 是给 product_id 列设置 主键约束的。
      • :在指定特定数据时使用的列的组合。键的种类很多。
      • 主键(primary key):就是可以特定一行数据的列,或者说是为一样确定数据的列。
        如:把 product_id 列指定为主键,就可通过该列去除特定的商品数据了。如果向 product_id 列中输入了重复数据,就无法取出唯一的特定数据了(因为无法确定唯一的一行数据)。这样就可以为某一列设置为主键约束了。

    表的删除和更新

    表的删除(DROP TABLE语句)

    DROP TABLE <表名>

    1. 删除了的表是无法恢复的
    2. 在执行 FROP TABLE 语句之前请务必仔细确认。

    表定义的更新(ALTER TABLE语句)

    有时候好不容易吧表穿件出来之后才发现少了几列,其实这时无需把表删除在重新创建,只需使用变更表定义的 ALTER TABLE 语句就可以了。

    1. 添加列: ALTER TABLE <表名> ADD COLUMN <列的定义>;

    例如:向 product 表中添加 product_name_pinyin 列代码如下:

    ALTER TABLE Product ADD COLUMN porduct_name_pinyin VARCHAR(100);
    
    1. 删除列:ALTER TABLE <表名> DROP COLUMN <列名>;

    ALTER TABLE 语句和 DROP TABLE 语句一样,执行之后无法恢复。

    • 表定义变更后无法恢复
    • 在执行 ALTER TABLE 语句之前请务必仔细确认。

    向表中插入数据

    BEGIN TRANSACTION;
    INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');
    INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
    INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
    INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
    INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
    INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
    INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
    INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL,'2009-11-11');
    COMMIT;
    
    • 使用插入行的指令语句 INSERT 就可以插入数据
    • 开头的 BEGIN TRANSACTION 语句是开始插入行的指令语句
    • 结尾的 COMMIT 语句是确定插入行的指令语句。

    hare
    2021.1.21

  • 相关阅读:
    sql子查询
    java中entity和object的区别
    eclipse F3可以查询某个方法的具体定义
    SQL语句的MINUS,INTERSECT和UNION ALL
    jquery 循环获取checkBox的值,以及对复选框选中,取消,操作按钮
    jQuery 函数位于一个 document ready 函数中
    <script>的用法
    jquery ui-----弹出窗口 dialog
    util包就是用来放一些公用方法和数据结构的
    BigDecimal
  • 原文地址:https://www.cnblogs.com/hare1925/p/14307492.html
Copyright © 2011-2022 走看看