一.数据库/数据表
数据库(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

SQL必知必会-笔记的更多相关文章

  1. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  2. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  3. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  4. 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作

    上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...

  5. 【SQL必知必会笔记(2)】检索数据、排序检索数据

    上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...

  6. 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入

    文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...

  7. 《SQL必知必会》学习笔记整理

    简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...

  8. 读书笔记--SQL必知必会--建立练习环境

    书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...

  9. 读书笔记--SQL必知必会12--联结表

    12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...

  10. 《SQL必知必会》学习笔记(一)

    这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...

随机推荐

  1. SQL 优化总结(一)

    查询速度慢的原因 查询速度慢原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. ...

  2. 七 vue学习 async/await

    1:  javaScript async/await: 调用async函数的时候,是异步的,函数后面的代码继续执行.! async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解 ...

  3. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  4. 《Java多线程编程核心技术》读后感(八)

    不使用等待/通知机制实现线程间通信 使用sleep()结合while(true)死循环来实现多个线程间通信 package Third; import java.util.ArrayList; imp ...

  5. 34.Docker安装Mysql参数及环境变量使用

    容器安装好后,通过exec进去到容器的内部, 容器安装的时候两种容器配置参数 直接在镜像的后面加配置 第二种方式 把这段代码拷贝过来.参数我们可以写在镜像的后面 我们把参数写在镜像的后面 然后我们需要 ...

  6. The Truth About GCHandles

    I've heard several people asking why GCHandle doesn't implement IDisposable, considering it wraps an ...

  7. 模板 - 动态规划 - 区间dp

    因为昨天在Codeforces上设计的区间dp错了(错过了上紫的机会),觉得很难受.看看学长好像也有学,就不用看别的神犇的了. 区间dp处理环的时候可以把序列延长一倍. 下面是 $O(n^3)$ 的朴 ...

  8. git从远程仓库gitLab上拉取指定分支到本地仓库

    例如:将gitLab 上的dev分支拉取到本地 1>与远程仓库建立连接:git remote add origin XXXXX.git 2>使用git branch 查看本地是否具有dev ...

  9. Unity ShaderLab 光照随笔

    unity camera默认3种渲染路径,unity5.50里面有4种 camera Rendering Path 1 vertexLit(逐顶点,一般在vert中处理)  2 forward (前向 ...

  10. 有线电视网(树形dp)

    有线电视网 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点.从转播站到转播站以及从 ...