SQL相关总结

2020-01-17  本文已影响0人  夏_8a64

DDL(数据定义语言)语句:

                ### create database  -- 创建新数据库

                ### alter database -- 修改数据库

                ### create table -- 创建新表

                ### alter table -- 变更数据库表

                ### create index -- 创建索引

                ### drop index -- 删除索引

DML(数据操作语言)部分

               ### select - update - delete - insert into

               注意:SQL对大小写不敏感!

SQL特殊用法:

             例1:从Persons表中选取居住的城市已‘A’或‘L’或'N'开头的人

                        select  * from Persons Where city Like '[ALN]'

            例2: Inner join,在表中存在至少一个匹配时,inner join关键字返回行。

                    注意:Inner join 与 join是相同的。

            例3:left join,关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。同理right join.

            例4:full join,结合的左,右外连接的结果。连接表将包含的所有记录来自两个表,并使用null作为两侧确实匹配结果

                  ELECT table1.column1,table2.column2...FROM table1 FULL JOIN table2 ON table1.common_field=table2.common_field; 

                如果你的数据不支持Full join,如mysql不支持 full join ,那么可以使用union all子句。 

                SQL>select id,name,amount,date from customers left join orders on customers.id = orders.customer_id 

                        union all

                        select id,name,amount,date from customers left join orders on customers.id = orders.customer_id 

            例5、Union,操作符用于合并两个或多个select语句的结果集,请注意,union内部的select语句必须拥有相同数量的列,列

                    也必须拥有相似的数据类型。同时,每条select语句中的列的顺序必须相同。

                    注释:默认地,union操作符选取不同的值,如果允许重复的值,请使用Union all,另外,Union结果集中的列名总是等于

                    union 中第一个select 语句中的列名。

            例6、Select into语句从一个表中选取数据,然后把数据插入另一个表中

                    select * into new_table_name [ IN externaldatabase] from old_tablename

                    select column_name(s) into new_table_name [IN externaldatabase] from old_tablename

            例7、Default,约束用于向列中插入默认值

                    如果没有规定其他的值,那么会将默认值添加到所有的新记录

                    create table persons

                    (

                        Id_P int NOT NULL,

                        LastName varchar(255) NOT NULL,

                        FirstName varchar(255),

                        Address varchar(255),

                        City varchar(255) Default 'Sandnes'

                    )    

            SQL Nulls

                    查询的时候,如数据表中列带有Null值的记录,必须使用 IS NULL操作符。

                    不带有Null值的记录,必须使用 IS NOT NULL操作符

            SQL ISNULL()

                    Oracle使用NVL()函数将表中的Null值转化为0

            SQL functions

            函数的基本类型是:Aggregate函数:Aggregate函数的操作面向一系列的值,并返回一个单一的值

                                            Scalar函数:Scalar函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。

                 1、 SQL avg(),AVG函数返回数值类的平均值,Null值不包括在计算中

                         Select avg(column_name) from table_name

                   2、Count(column_name)函数返回指定指定列的值的数目(Null不计入)

                        1、Select Count(column_name)  from table_name    (f返回指定列的数目,null不计入)

                        2、Select Count(*) from table_name(返回表中的记录数)

                        3、Select Count(Distinct column_name) from table_name(函数返回指定列的不同值的数目)

                   3、first() 函数返回指定的字段中第一个记录的值,提示:可使用ORDER BY语句对记录进行排序

                        Select first(column_name) from table_name

                    4、last() 函数返回指定的字段中最后一个记录的值,可使用order by语句对记录进行排序

                        Select last(column_name)  from table_name

                    5、max函数返回一列中的最大值。null值不包括在计算中

                        Select max(column_name) from table_name

                    6、min 函数返回一列中的最小值。null值不包括在计算中

                        Select min(column_name) from table_name

                    7、sum()  函数返回数值列的总数(总额)

                        Select SUM(column_name) from table_name

                    8、group by 合计函数(比如SUM)常常需要添加group by 语句

                        group by 语句用于结合合计函数,根据一个或多个列对结果绩进行分组

                    9、Having 在SQL中增加Having子句原因是,Where关键字无法与合计函数一起使用

                        Select column_name,aggregate_function(column_name) From table_name where column_name operator value

                        group by column_name Having aggregate_function(column_name) operator value    

                        Select customer,SUM(OrderPrice) From Orders group by Customer Having SUM(OrderPrice) < 2000

                    10、ucase () 函数把字段的值转换为大写

                        Select Ucase(colummn_name) from table_name

                    11、lcase()函数把字段的值转换为小写

                            Select LCASE(column_name) From table_name

                    12、mid() 函数用于从文本字段中提取字符(MySQL,Sql Server不可用)

                            Select MID(column_name,start[,length]) From table_name

                            column_name 必须。要提取字符的字段

                            start 必须。规定开始位置(起始值是1)

                            length可选。要返回的字符数。如果省略,则Mid()函数返回剩余文本。

                            Select MID(city,1,3)  as SmallCity From Persons

                    13、len() 函数返回文本字段中值的长度(mysql→Length()、Sql Server →len())

                            Select LEN(column_name) From table_name 

                      14、round() 函数用于把数值字段舍如为指定的小数位数

                             Select  Round(column_name,decimals) From table_name 参数 描述

                            -column_name 必须。要舍入的字段

                            -decimals 必须。规定要返回的小数位数

                        15、now() 函数返回当前的日期和时间(mysql→now(),Sql server→getdate())

                                Select now() from table_name 

                                Select getdate() from table_name

                        16、format() 函数用于对字段的显示进行格式化

                                Select  Format(column_name,format) From table_name

                                column_name 必须,要格式化的字段

                                format,必须,规定格式。

                                SELECT FORMAT(getdate(),'yyyy-MM-dd HH:mm:ss') From table_name(→Sql Server)

                                SELECT DATE_FORMAT(Now(),'%Y-%m-%d %H:%i:%S') FROM table_name(→Mysql)

                                

上一篇 下一篇

猜你喜欢

热点阅读