zoukankan      html  css  js  c++  java
  • sql基础学习

    学习参考网站:http://www.runoob.com/sql/sql-tutorial.html

    一、SQL命令

    1、SELECT 语句

    用于从数据库中选取数据。

    select column_name,column_name from table_name;    #数据库中选取某个表格某几列数据
    select * from table_name;                          #数据库中选取某个表格所有列数据

    2、SELECT DISTINCT 语句

    用于返回唯一不同的值。

    select distinct column_name from table_name;             #返回某表中某列唯一不同的值
    select distinct column_name,column_name from table_name; #返回某表中多列唯一不同的值

    3、WHERE 子句

    用于过滤记录。

    select column_name,column_name from table_name where column_name operator value;       #选取满足某个条件的数据

     WHERE 子句中条件判断会使用的运算符:

    运算符描述
    = 等于
    <> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于
    BETWEEN 在某个范围内
    LIKE 搜索某种模式
    IN 指定针对某个列的多个可能值
    AND 同时满足多个条件
    OR 多条件满足其中某个条件值

    1) is null (空值判断)

    如查询 A 表中 a 列中为空的数据。

    select * from A where a is null;

    2)between and (在之间的值,包含临界值)

    如查询 A 表中 a 列中大于 100 的小于 200的数据。

    select * from A where a between 100 and 200;

    3)In(某列多个可能值)

    如查询 A 表 a 列中等于 100,200,300 的数据。

    select * from A where a in (100,200,300);

     4)like(模糊查询)

     % 表示多个字值,_ 下划线表示一个字符;

     M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的;

     %M% : 表示查询包含M的所有内容;

    %M_ : 表示查询以M在倒数第二位的所有内容。

    如查询 A 表中 a 列中有 M 的数据:

     

     

    select * from A where a like '%M%';

     5) and (多个条件同时满足查询)

     

    如查询A表中a列等于100与b列等于200的数据:

     

    select * from A where a=100 and b=200;

    6)or (多个条件满足某个条件的查询)

    如查询A表中a列等于100或b列等于100的数据:

    select * from A where a=100 or b=200;

    4、ORDER BY 关键字

    用于对结果集进行排序,可以按照一个列或者多个列进行排序,默认按照升序对数据进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。

    select column_name,column_name from table_name order by column_name,column_name asc|desc;    #语法结构

    如查询A表中按a列升序排序展示数据:

    select * from A order by a;    #默认asc升序排列

    如查询A表中按a列降序排序展示数据:

    select * from A order by a desc;

    注:多列排序时,先按第一个列排序,然后按第二个列排序。如下A表

    id a b
    1 200 10
    2 100 30
    3 100 20

     

     

     

    如: 

     

     

     

     

     

     

     

    select * from A order by a,b;

    多条件升序排序查找数据后:

    id a b
    3 100 20
    2 100 30
    1 200 10

    5、INSERT INTO 语句

    用于向表中插入新数据。

    insert into table_name values (value1,value2,value3,...);                 #无需指定列名,需要列出这一列的每个数据
    insert into table_name (column1,column2,...) values (value1,value2,...);  #指定列和被插入的值,一一对应

    如向A表中a列中插入数据123,b列中插入111:

    insert into A (a,b) values (123,111)     

    6、UPDATE 语句

    用于更新表中已存在的数据。

    update table_name set column1=value1,column2=value2,... where some_column=some_value;

    如更新A表中a=100的数据改为a=666,b=888:

    update A set a=666, b=888 where a=100;    #不加where条件会把整个表格数据相应的数据都更新掉

    注:MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决不带where的误操作,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。set sql_safe_updates=1; 表示开启该参数。

    7、DELETE 语句

    用于删除表中某行的数据。

    delete from table_name where some_column=some_value;   #不带where删除表中所以数据,但是不释放空间,需要注意

    如删除A表中a=100的那行:

    delete from A where a=100;    

    DROP:

    drop test;

    删除表test,并释放空间,将test删除的一干二净。

    TRUNCATE:

    truncate test;

    删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。

     8、GROUP BY 语句

    用于结合聚合函数,根据一个或多个列对结果集进行分组。

    select column_name, aggregate_function(column_name) from table_name where column_name operator value group by column_name;

    如下面这个access_log表:

    +-----+---------+-------+------------+
    | aid | site_id | count | date       |
    +-----+---------+-------+------------+
    |   1 |       1 |    45 | 2016-05-10 |
    |   2 |       3 |   100 | 2016-05-13 |
    |   3 |       1 |   230 | 2016-05-14 |
    |   4 |       2 |    10 | 2016-05-14 |
    |   5 |       5 |   205 | 2016-05-14 |
    |   6 |       4 |    13 | 2016-05-15 |
    |   7 |       3 |   220 | 2016-05-15 |
    |   8 |       5 |   545 | 2016-05-16 |
    |   9 |       3 |   201 | 2016-05-17 |
    +-----+---------+-------+------------+

     对site_id字段进行分类统计count:

    select site_id, sum(access_log.count) as nums from access_log group by site_id;          #sum()是聚合函数

    得到的结果是:

    site_id nums
    1 275
    2 10
    3 521
    4 13
    5 750

    二、SQL函数

    1、Aggregate 函数

    1)AVG() 

    函数返回数值列的平均值

    select avg(column_name) from table_name

    如查询A表中a列的平均值以a_average字段展示出来:

    select avg(a) as a_average from A        #如果不给出展示字段,就直接以avg为展示字段

    也可以作为一种结果作为查询条件,如查询A表中a值大于平均值的数据:

    select * from A where a > (select avg(a) from A);

    2)COUNT()

    函数返回匹配指定条件的行数

    select count(column_name) from table_name;     #返回指定列的值的数目(不包括null值的数目)
    select count(*) from table_name;               #返回表中的记录数,也就是有多少条数据

    如查看A表中a列有多少条数据:

    select count(a) from A

    如查看A表中a列有多少条不相同的数据:

    select count(distinct a) from A;

    3)FIRST() 

    返回指定的列中第一个记录的值。

    select first(column_name) from table_name;    

    只有 MS Access 支持 FIRST() 函数,其他形式的first函数效果语法:

    SQL Server 语法

    select top 1 column_namefrom table_name order by column_name asc;
    MySQL 语法
    select column_name from table_name order by column_name asc limit 1;
    Oracle 语法
    select column_name from table_name order by column_name asc where rownum <=1;

    4)LAST() 

    返回指定的列中最后一个记录的值。

    select last(column_name) from table_name;

    只有 MS Access 支持 LAST() 函数,其他形式的last函数效果语法:

    SQL Server 语法

    select top 1 column_namefrom table_name order by column_name desc;
    MySQL 语法
    select column_name from table_name order by column_name desc limit 1;
    Oracle 语法
    select column_name from table_name order by column_name desc where rownum <=1;

    5)MAX() 

    函数返回指定列的最大值。

    select max(column_name) from table_name;

    如查询A表中a列的最大值:

    select max(a) from A;

    6)MIN()

    函数返回指定列的最小值。

    select min(column_name) from table_name;

    如查询A表中a列的最小值:

    select min(a) from A;

    7)SUM() 

    函数返回数值列数值的总和,适合对数值列求和。

    select sum(column_name) from table_name;

    如查询A表中a列数值的总和:

    select sum(a) from A;

    2、Scalar 函数

    1)UCASE()

    函数把字段的值转换为大写,适合数值有字母的值转换。

    select ucase(column_name) from table_name;
    select upper(column_name) from table_name;      #用于 SQL Server 的语法

    如把A表中a列数值小写字母转换为大写字母:

    select ucase(a) from A;

    2)LCASE() 

    函数把字段的值转换为小写,适合数值有字母的值转换。

    select lcase(column_name) from table_name;
    select lower(column_name) from table_name;      #用于 SQL Server 的语法

    如把A表中a列数值大写字母转换为小写字母:

    select lcase(a) from A;

    3)MID() 

    函数用于从文本字段中提取字符。

    select mid(column_name,start[,length]) from table_name;
    参数描述
    column_name 必需。要提取字符的字段。
    start 必需。规定开始位置(起始值是 1)。
    length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

     

     

     

     

     

     

     

    如把A表中取a列中前4位字符:

    select mid(a,1,4) from A;

    4)LEN()

    函数返回文本字段中值的长度。

    select len(column_name) from table_name;
    select length(column_name) from table_name;         #MySQL中使用length()函数

    如回去A表中a列值的长度:

    select len(a) from A;

    5)ROUND() 

    函数用于把数值字段四舍五入为指定的小数位数。

    select round(column_name,decimals) from table_name;     #column_name需要舍入的字段,decimals返回的小数位数

    如:

    select round(1.298, 1);            #结果是1.3

    如把A表中a列的值按小数点后2位四舍五入处理:

    select round(a, 2) from A; 

    6)NOW()

     函数返回当前系统的日期和时间。

    select now() from table_name;

    7)FORMAT() 

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

    select format(column_name,format) from table_name;     #column_name需要格式化的字段,format规定格式

    如把A表所处的当前日期和时间格式化:

    select date_format(now(),'%Y-%m-%d') as date from A;
  • 相关阅读:
    FTP上传下载使用ASCII与binary的区别
    was日志报检测到cpu饥饿
    AIX的inittab配置文件解释
    启动和停止 IBM HTTP Server
    阿里云 centos7 设置python2 与 python3 并存
    股票---逢9必涨!华为男卖4套房炒股,2019年不能错过?
    看了电影,万箭穿心
    今天是来cnblog的第一天,值得纪念哈^v^
    函数
    集合( set )
  • 原文地址:https://www.cnblogs.com/olivexiao/p/8718368.html
Copyright © 2011-2022 走看看