zoukankan      html  css  js  c++  java
  • sql笔记

    Sql学习笔记

    http://www.runoob.com/sql/sql-syntax.html

    (1)、 使用单引号环绕文本值(大部分数据库也接受双引号)

                  若果是数值则不需要引号。

    (2)、

          

    数据库样表

    +----+--------------+---------------------------+-------+---------+
    | id | name         | url                       | alexa | country |
    +----+--------------+---------------------------+-------+---------+
    | 1  | Google       | https://www.google.cm/    | 1     | USA     |
    | 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
    | 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
    | 4  | 微博          | http://weibo.com/         | 20    | CN      |
    | 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
    +----+--------------+---------------------------+-------+---------+

    1、 sql 中不用区分大小写

    2、一些最重要的 SQL 命令
    select- 从数据库中提取数据
    update - 更新数据库中的数据
    delete - 从数据库中删除数据
    insert into - 向数据库中插入新数据
    create database - 创建新数据库
    alter database  - 修改数据库
    create table - 创建新表
    alter table - 变更(改变)数据库表
    drop table - 删除表
    create index - 创建索引(搜索键)
    drop index - 删除索引

     

    3、         Select语句   

    select 列名 from 表

     

    a)     SELECT column_name,column_name
    FROM table_name;

    4、         select distinct 语句

        查询某列中的值,并且去掉重复的

     

        SELECT DISTINCT column_name,column_name FROM table_name;

    5、         where

           Select 字段 , 字段 from 表 where 字段 运算符 值

           SELECT * FROM Websites WHERE country='CN';

       

    特殊:

           1、空值判断    is null

        ·Select  *  from  table_student   where   age   is  null;

        2、在什么之间 between    and    

           Select  *  from  table_student   where  age between 20 and 30;

        3、指定几个满足的值    in

           Select  *  from  table_student   where  age  in (20,25,27);

        4、 模糊查询/通配符      like

           Select  *  from  table_student  where   name  like  ‘张%’

           查询表中姓名以张开始的所有记录

                  %     表示后面可有0一个或者多个字符

               下划线表示有且只有一个字符

                  例如  ‘张_’ 表示选取名字是两个字且姓张的记录

           %天%   表示名字中包含天字即可, 刘天,刘天一,天一

           Like可以与not连用,选取不符合的,……not like……

        **********

        Where 后面带其他的, 一律0转化为false,其他的都是true

     

    6、         and   or

        Select * from table_student where name=’hhaa’ and  age=20;

        结合and  or

           Select * from table_student where age>20 and(name=’haha’or       name=’xiaoxiaoyao’)

     

    7、order by      

         asc升序(默认)    desc降序

        用于对结果集进行排序。

        select * from xxy where age>6 order by age desc

             (在xxy表中在年龄大于6的结果集中按照年龄降序排列)

    多列排序:

        Order  by   age , salary;

        (先按照age排序,遇到一样的再来比较salary)

    8、插入  insert into

           1、普通插入:(按照表的结构插入)

               inert into table_student  values(值1,值2,……)

           2、插入指定数据: (指定有效的列)

               Insert into table_student(name,age,hobby) values(……)

           3、一次插入多条数据

    insert into 表名(字段1,字段2,字段3) values(值01,值02,值03),(值11,值12,值13);

     

    9、更新   update  tableName

        在没有where时候,更新要慎重

    10、删除   

         1、Delete   删除表中的记录

            Delete from  表   where  列  操作符  值

         2、drop    删除表   (包括表和数据删得一干二净)

            drop  表名

         3、 truncate        (删光内容,但是表的定义、结构还在)

             Truncate 表名

    11、取前***条数据

           不同数据库语句不同:

        1、Sql server: (top)

               SELECT TOP 50 PERCENT * FROM Websites;

        2、Mysql: (limit)

               SELECT column_name(s)  FROM table_name
               LIMIT 5;

        3、Oracle: (rownum)

               SELECT * FROM Persons
               WHERE ROWNUM <=5;

    12、通配符

         常常与模糊查询like连用

       

     

    MySQL 中使用 REGEXP  NOT REGEXP 运算符 ( RLIKE NOT RLIKE) 来操作正则表达式。

     

     

    13、in 操作符  允许在where子句中规定多个有效值。

            Select  *  from  table  where  column_name   in                    (value1,value2,、、、、、)

     

    14、 between    and

           规定结果集是介于两者之间的任何值,且包括边界值(部分数据库)。

           Select * from table_student where age between 5 and 20

        (2)衍生出  not between

        (3)带有in的between

           选取alexa介于 1 20 之间但 country 不为 USA IND 的所有网站:

               SELECT * FROM Websites
               WHERE (alexa BETWEEN 1 AND 20)
               AND NOT country IN ('USA', 'IND');

    15、别名   

           可以为表或列指定别名

           1、列的别名

               Select 列名 as 别名  from 表名 

           2、表的别名

               Select 列名  from  表名  as  别名

        多个设置别名用逗号隔开

          

           结果集的列名会以设置的别名显示

          

    16、连接    join

               用于把两个或多个表的 行 结合起来,基于这些表的共同字段(列)。

           别名与连接查询一起使用。

        (1)inner join

           Student表 :  学号  姓名  年龄 地址

            Score  表 : 学号  课程号   成绩

          

    左右连接区别:http://www.cnblogs.com/xiaoxiaoyao/p/8668626.html

        (2)LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行

     

           左边所有的记录均与右边的进行匹配,有匹配的返回,没有匹配的将左边返回,右边对应的用null代替,总之以左边为“主体”。

          

              

        (3)RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行

              

              

           (当然不存在一个没有姓名的学生参加考试,这里仅供区别二者需要)

        (4)FULL JOIN:只要其中一个表中存在匹配,则返回行

           

                     

          

     

           总结:

               1、inner join (等同于join)

           匹配是只返回两者能够匹配上的

               2、left join

           匹配时左边所有的都要返回,遇到右边没有对应的用null填充

               3、right join

           同上  但是是,左边用null填充

               4、full join

           综合2和3.左右都返回,那一侧没有就用null填充。

     

    17、union

           Union用于合并两个或者多个select语句的结果集   

     

     

     

    18、select into

     

     

    19、 insert into  select

        INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

     

     

     

    20、创建数据库

        Create database  数据名;

    21、创建表

       

    22、约束

        例如   not null 、foreign key 等就可以看做是约束

           直接写在上面创建的 datatype 后面

          

     

     

    23、select top

        SELECT TOP 子句用于规定要返回的记录的数目。

             SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。

             注释:并非所有的数据库系统都支持 SELECT TOP 子句。

       

    24、通配符

     

        4中也有通配符

       

     

        (1)[abc] : 代表a或b或c

             [a-h] : 代表a到 h

           

            

     

    25、主键  primary key

           PRIMARY KEY 约束唯一标识数据库表中的每条记录。

                      主键必须包含唯一的值。

                      主键列不能包含 NULL 值。

                      每个表都应该有一个主键,并且每个表只能有一个主键。

     

    26、外键  frieign key

           一个表中的 FOREIGN KEY 指向另一个表中的 “PRIMARY KEY”

     

    ``````

     

         

    27、check约束

           用于限制列中的值的范围

                   

    28、default  约束

           用于向列中插入默认值

        如果在insert的时候没有规定值,那么就是默认值

        格式  : 直接在建表时的类型后面加

        City varchar(255) DEFAULT '武汉'

     

    29、create index

           用于在表中创建索引、

     

                  (暂不理解)

     

    30、alter 语句

           用于在已经存在的表中添加、删除、修改列

    ··

     

    例如

           修改  :

         goods表中的price的类型为int(原来是varchar(20))

                      alter  table goods

                      alter column price int 

                删除  :

                      Alter  table  goods

                      Alter column  price

     

    31、auto increment

           自动增长

           例如当有新纪录插入表中时候,我们通常希望序号+1,

    定义了auto increment后,在插入的时候就不用再定义值了!

          

        默认的初始值是1,每次增加1,要想改变初始值

           Alter table 表名  auto_increment=100;

          

        Oracle中就是,先定义一个递增的序列

                         

    32、时间相关的

        http://www.runoob.com/sql/sql-dates.html

     

    33、null值

        在数据库中对于可选的列,如果不写数据将会以null存下来,

    Null不能与0进行比较。

        使用  is null  或者  is  not  null  来操作。

       

        Select  * from  student  where  address is not  null、

     

    33、常用数据类型

        Varchar(n)     字符/字符串。可变长度。最大长度 n。

        Char(n)       字符/字符串。固定长度n。

        Boolean       布尔值   true/false

        Integer         整型

        Date            年月日

        Time              时分秒

    Timestamp        年月日时分秒

    Number

     

       

    34、函数

               1、    AVG() - 返回平均值                      

                                          SELECT AVG(column_name) FROM table_name

               2、    COUNT()            函数返回指定列的值的数目(NULL 不计入):              

                                          SELECT COUNT(column_name) FROM table_name

               3、    FIRST() - 返回第一个记录的值,ORDER BY 语句对记录进行排序。

                                          SELECT FIRST(column_name) FROM table_name

               4、    LAST() - 返回最后一个记录的值

                                          同上

               5、    MAX() - MAX 函数返回一列中的最大值。NULL 值不包括在计算中。

                                          SELECT MAX(column_name) FROM table_name

               6、    MIN() - 返回最小值

                                          同上

               7、    SUM() - 返回总和

                  SELECT SUM(OrderPrice) AS OrderTotal FROM Orders

           

          

        8、 Group by ----根据一个或多个列对结果集进行分组,常与sum合用

                  

       

        

       

        9、having

           在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

                  还是8中的图

                  要求:现在,我们希望查找订单总金额少于 2000 的客户。

     

          

        10、Ucase()    lcase()

           将结果转大写   小写

               Select  ucase(name) from student ;

        11、mid( 列名,起始下标,长度)         下标从1开始

           用于从结果街中选取前n个字符

           例如:Select address from student;

               的结果是  wuhan  beijing  guangzhou

           那么  select mid(address,1,3) from student;   (取前3个字符)

                  结果是: wuh  bei   gua

        12、len()

           返回文本字段中值的长度

               假设对应数据为 london   new york   beijing

           Select len(city) from person ;

           结果   6   8(空格也算)   7

     

        13、round()

               用于把数值字段舍入指定的小数位数

           Select round(列名,规定小数位数) from  表名;

          

     

        14、now()       SQL server 中用getdate()

               返回当前的日期和时间

                           OrderDate datetime NOT NULL DEFAULT NOW(),

        15、format(字段,规定格式)              格式化

               用于对字段的显示进行格式化

       

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    本人小白,博客作为在线笔记,若有错误,还望指出,转载链接截图等皆为学习,若有侵权,请告知,
  • 相关阅读:
    欠拟合、过拟合、偏差、方差
    softmax详解
    解决Windows 10笔记本接显示器分屏后没有声音的问题
    图像的表示与通道数问题
    从梯度下降到反向传播(附计算例子)
    NuGet的简单使用
    深度神经网络(DNN)是否模拟了人类大脑皮层结构?
    范数(norm) 几种范数的简单介绍
    js 页码分页的前端写法
    前端使用注意事项
  • 原文地址:https://www.cnblogs.com/xiaoxiaoyao/p/8761531.html
Copyright © 2011-2022 走看看