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

posted @ 2017-07-04 10:59  Guangqin_Hu  阅读(184)  评论(0编辑  收藏  举报