一.数据库/数据表
数据库(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. Go 方法和接口

    转自:http://studygolang.com/topics/549 Go 没有类,但可以在结构体类型上定义方法. package main import ( "fmt" &q ...

  2. java枚举类型的优势在哪里?--一个实例

    最近在做一个项目,其中涉及到一组操作,命名为: 1. "add"; 2. "logicDel" 3. "physicDel" 4. &quo ...

  3. POJ-3069

    Saruman's Army Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10994   Accepted: 5555 D ...

  4. Linux下使用sendEmail发送带附件的邮件(转载)

    转载:http://www.ttlsa.com/linux/use-sendemail-send-file/ sendEmail是一个轻量级,命令行的SMTP邮件客户端.如果你需要使用命令行发送邮件, ...

  5. gridview把textbox的值修改还是旧值的解决方法

    解决方法很简单,加上if(!IsPostBack) 就OK了,因为之前加载之前都会调用InitData(). protected void Page_Load(object sender, Event ...

  6. Flask RESTful API搭建笔记

    之前半年时间,来到项目的时候,已经有一些东西,大致就是IIS+MYSQL+PHP. 所以接着做,修修补补,Android/iOS与服务器数据库交换用PHP, Web那边则是JS+PHP,也没有前后端之 ...

  7. 谷歌同声翻译Translatotron原理

    背景介绍 作为中国人,学好英语这件事从小学开始就让人苦恼,近些年随着AI的快速发展,语言差异是否会缩小甚至被消灭成了热门话题.在5月15日,谷歌AI在博客平台发出一篇文章,正式介绍了一款能保留原声的& ...

  8. ue4 weapon

    UE4版本4.17,不同版本api可能有差异 静态 1 在骨骼上加socket 在socket上右键-添加浏览资源-找到要添加的那个道具(这个只用来看效果,调位置,不会显示到最终效果中),调整sock ...

  9. Unity命令行打包

    http://www.66acg.com/?post=137 补充 unity编辑器端获取打包命令行自定义参数,这个可以获取到所有打包时的参数 string[] runArgs = System.En ...

  10. duliu——思维+线段树

    题目 [题目描述]小 `D` 喜欢出毒瘤题毒人.当然,他的毒瘤更多体现在若干个难题组合在同一场比赛时.小 `D` 脑中有 $n$ 个毒瘤题 idea,第 $i$ 个的毒值为$d_i$.当第 $i$ 个 ...