zoukankan      html  css  js  c++  java
  • SQL必知必会-笔记

    一.数据库/数据表
    数据库(DATABASE):存储有组织的数据的容器;
    数据库管理系统(DBMS):数据库软件.开发者通过 DBMS 操纵 DATABASE
    表(TABLE):表是一种结构化的文件,用来存储特定类型的数据.注意表中的数据是特定类型,不能将顾客清单与订单清单存放于同一个表中;同一数据库中表名唯一;
    列(COLUMN):表的一个字段,所有表都由COLUMN构成;每个列都有相应的数据类型.
    行(ROW):表中的数据是按行存储,每个记录存储在自己的行内,也可以称作数据库记录(RECORD);
    主键(PRIMARY KEY):表的一个字段(即一列),用来唯一标识表中的每一行;主键必不可少;
                 充当主键的条件:
                     1.任意两行不能具有相同的主键值;
                     2.每一行都必须具有一个主键值(且不能为NULL);
                     3.主键列中的值不允许修改或更新
                     4.主键值不能重用(如果某行从表中删除,它的主键不能赋予以后的新行);   
                 补充:可以使用多列作为主键,使用多列时,上述条件必须应用到所有列,所有列值的组合必须唯一(单个列的值可以不唯一);
    外键:

    二.SQL语句按照功能不同,分为四类:
    DDL:(DATA DEFINATION LANGUAGE),SQL语句中负责定义数据结构与数据库对象的语言,关键字有CREATE,ALTER,DROP;
    DCL:数据库控制语言,用来设置或者更改数据库用户或者角色权限的语句;
    DML:(DATA MANIPULATION LANGUAGE)数据操纵语言,实现对数据库的基本操作,如对表中数据的插入/删除和修改;
    DQL:(DATA QUERY LANGUAGE)数据查询语言,关键字SELECT;

    三.常用命令:
         CREATE DATABASE 库名    :创建数据库
         SHOW CREATE DATABASE 库名 :查看所创建库的信息
         SHOW DATABASES    :显示所有数据库;
         USE 数据库名    :进入指定数据库;
         SELECT DATABASE():    查看正使用的数据库;
         DROP DATABASE 库名    :删除数据库;

        SHOW TABLES:查询当前数据库下所有数据表;
         DESC 表名:查看指定数据表的表结构;
         DROP TABLE 表名:删除表
         注释:--注释之后的内容
             #:这一行是注释
             /* */:多行注释

    四.创建数据库/创建数据表
    1.创建数据库
         CREATE DATABASE 数据库名;
         CREATE DATABASE 数据库名 CHARSET UTF8;创建指定编码的数据库,注意UTF8之间没有-

    1.创建表语句:
         CREATE TABLE 表名
             (
                 列中的名字和定义,用逗号隔开
             );
         举例:
             CREATE TABLE products
             (
                 prod_id        CHAR(10)     NOT NULL,
                 vend_id     CHAR(10)    NOT NULL,
                 prod_name    CHAR(10)     NOT NULL,
                 prod_price    CHAR(8,2)    NOT NULL,
             );
         注意:NULL是指没有值,""(空字符串)是有效值;
    2.指定默认值:DEFAULT
         举例:
             CREATE TABLE orderItems
             (
                 order_num    INTEGER        NOT NULL,
                 orer_item    INTEGER        NOT NULL,
                 quantity    INTEGER        NOT NULL     DEFAULT 1,
             );
             对于quantity列,如果不给出,则默认为1;默认值经常用于日期或时间戳列.
         补充:DEFAULT比NULL更为常用,对于计算或分组的列更是如此;
    3.执行SQL脚本创建表并插入数据的步骤:直接粘贴到sqlyog或者workbench中执行.....

    4.约束:NULL     PRIMARY KEY     UNIQUE      DEFAULT

    五.查询
         1.SELECT     列名     FROM     表名:    从一个表中返回需要查找的列-检索单列;
         2.SELECT 列1, 列2, 列3    FROM    表名:    从一个表中返回需要查找的多列信息-检索多列;
         3.SELECT *    FROM    表名 :使用通配符返回表中所有列
         4.SELECT DISTINCT 列名     FROM     表名:返回该列中不同的值(相同的只显示一个);
         5.SELECT DISTINCT    列1,列2 FROM     表名:如果两行中列1,列2都相同,则只显示一个
         6.SELECT 列名 FROM 表名 LIMIT 5:从表中返回该列的前5行数据(MYSQL);
         6.SELECT 列名 FROM 表名 WHERE ROWNUM <= 5:从表中返回该列的前5行数据(ORACLE)
         7.SELECT 列中 FROM 表名    LIMIT 2 OFFSET 1:从第1行起(不包含第1行)显示2行(MYSQL);
             可简写为 LIMIT 1,2;
         8.ORDER BY 列1,列2:按照先按列1,再按列2的自然顺序排充(ORDER BY子句应在WHERE子句之后)
         9.ORDER BY     列1 DESC:按照列1的降序排(DESC语句仅对其前面的列有效,多列排序需在每个列后加DESC关键字);
         10.WHERE :创建规则过滤数据(无法返回NULL值),如 SELECT cust_id, cust_name FROM customers where cust_age>=20, 选择年龄在20岁以上的顾客ID和姓名
             WHERE子句中可使用AND/OR/IN/NOT等子句,以创建过滤规则
             IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配.IN取一组由逗号分隔,括在圆括号中的合法值.
         11.% 通配符:表示任意字符出现任意字数;但是不匹配NULL;
         12._ 通配符:与%不同的是,它只匹配单个字符;即一个_代表一个字符,可匹配空格;
         13.[] 通配符:用来指定一个字符集,必须匹配指定位置(通配符位置)的一个字符;
         14.拼接字段:+ 或者 ||
         15.聚集函数:AVG():返回某列的平均值;
                 COUNT():返回某列的行数
                 MAX():返回某列的最大值
                 MIN():返回某列的最小值
                 SUM():返回某列值之和
             以上聚集函数可以组合使用;给合使用时,FROM前的最后一个函数后不加逗号!!!
         16.创建数据分组:GROUP BY
             分组语句会将NULL作为一个分组返回;
             分组语句应在WHERE之后,ORDER BY 之前;
         17.过滤分组语句:HAVING
         18.内联结:INNER JOIN    ON 连接等值字段
         19.BETWEEN...AND...取之间的值,含头含尾,且小数在前,大数在后

    六.更新
         1.更改表结构语句:
         增加列(字段):
             ALTER TABLE 要更改的表名    做出的更改;
             举例:
             ALTER TABLE orderItems
             ADD order_totalPrice     DOUBLE(8,2)        NOT NULL;
             在orderItems表中增加一列order_totalPrice列,使用DOUBLE类型,且不为空;

        删除列(字段):
             ALTER TABLE orderItems
             DROP    COLUMN order_totalPrice;
             在orderItems表中删除列oreder_totalPrice;
         注意:数据库表中的更改不可撤销,操作前应进行完整的备份(模式和数据的备份);

        修改列(字段)的数据类型和约束
             ALTER TABLE 表名
             MODIFY 列名 数据类型 约束;

        修改列(字段)名
             ALTER TABLE 表名
             CHANGE 原字段名 新字段名 新类型 新约束;

        修改表中的记录(行):其后可加WHERE子句
             UPDATE 表名
             SET 字段=新值;

        2.重命名表语句:
             RENAME TABLE 原表名 TO 新表名;

        3.插入数据语句:
             INSERT    INTO
             举例:插入完整/部分的行
                 INSERT INTO customers
                 (
                     cust_id,
                     cust_name,
                     cust_email
                 )
                 VALUES(
                     '10000007',
                     'philip',
                     'philip@outlook.com'
                 );
             举例:插入检索出的数据
                 INSERT INTO    customers
                 (
                     cust_id,
                     cust_contacts,
                     cust_email,
                     cust_name,
                     cust_address,
                     cust_city,
                     cust_state,
                     cust_zip,
                     cust_country
                 )
                 SELECT    cust_id,
                 cust_contacts,
                 cust_email,
                 cust_name,
                 cust_address,
                 cust_city,
                 cust_state,
                 cust_zip,
                 cust_country
                 FROM    custNew;
             说明:
                 1.这个例子的用途:将custNew表中的相应数据插入到customers表中;
                 2.INSERT SELECT语句可以插入多行,即不管SELECT语句返回多少行,都将被插入;
                 添加数据:
            
             INSERT INTO 表名 VALUES();

    七.删除表/删除库
         1.删除表(整个表)语句
             DROP TABLE    custcCopy;
         注意:执行该语句将永久删除该表;

        删除数据:其后可加WHERE子句
             DELETE FROM 表名:将表中所有数据删除

    八.常用数据类型:4种
         整数: int
         小数:double
         字符串:varchar
         日期:date
         long类型:big int

        字符串的值需要使用单引号或双引号包裹起来;
         定义字符串类型的字段时,需要指定字符串的长度;
         日期期进行比较时,需用单引号包裹;

    sql的执行顺序:
         from--where/having--order by/group by/limit--select

  • 相关阅读:
    实时web应用方案——SignalR(.net core) 理论篇
    Performance Improvements in .NET Core 3.0
    在Asp.NET Core中如何管理用户机密数据
    NetCore 配置文件---直接读取及选项模式读取
    NetCore WebApi 及 搭建Swagger
    奇妙的 CSS MASK
    基于Docker安装并使用Elastic APM实现指标监控
    记录HBase手动删除Hadoop备份(archive)文件后,引发Hbase写入数据出错等一系列问题处理
    arm-linux-gcc 规定 char 为 unsigned char 导致程序运行出错
    linux下生成core dump文件方法及设置
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7115576.html
Copyright © 2011-2022 走看看