SQL语句是用于访问和处理数据库的标准的计算机语言。
我也刚接触SQL语句,简单的总结一下SQL语句的语法。
在SQL语句中 SELECT ... FROM ...语句是必须的。
WHERE,GROUP BY 以及ORDER BY 三个语句不是必须的。
基本语句
SELECT <table fields list>
FROM <table names list>
WHERE <row constraints specification> 要在行 列 进行一些筛选
GROUP BY <grouping specification> 集合运算,添加的定义,比如平均数
HAVING <grouping selection specification> 针对集合运算,进行限制条件
ORDER BY <order rules specification> 排序
USE 语句
USE database的名字 GO 进入你要进行操作的表
SELECT * FORM production.product
会拿到你这个表里面的所有数据,尽量避免这样使用,因为的你数据有可能会特别多
SELECT TOP 100 * FORM production.product
选择数据库前100条数据
SELECT Id,Name,productNumber,Color FROM production.product
选择这个表里面的 ID,Name,productNumber,Color
ORDER BY排序
SELECT Id,Name,productNumber,Color FROM production.product ORDER BY Id desc
拿到数据库Id,Name,productNumber,Color并且让他按照Id进行倒序decs倒序
SELECT Id,Name,productNumber,Color FROM production.product ORDER BY Id decs,Name
拿到数据库Id,Name,productNumber,Color并且让他按照Id进行倒序,Name进行正序,多个排序用,分割
SELECT Id,Name,productNumber,Color FROM production.product ORDER BY 2
可以传数字,意思就是使用第二个name排序
ISnull 可以用转换
SELECT Id,Name,productNumber,ISNULL(Color,'') FROM production.product
把表里面Color为null的变成空值,当然你还可以变成别的
SELECT Id,Name,productNumber,ISNULL(Color,'') AS Color FROM production.product
在使用ISNULL的时候他会把表名变掉,这时候可以使用AS 把表名重命名一下
SELECT Id,Name AS NA,‘the list price for’ + productNumber + 'is' FROM production.product
可以将数据库里面的内容拿出来时,加上一些字符串拼接。
算数表达式
SELECT Id*10,round(rate*40*52,1) FROM production.product
你在拿数据的时,可以对数据进行操作 + - * /的操作round1参是数据,2参是保留几位小数
SELECT Id*10,(rate+5)*10 FROM production.product
也可以写四则运算
WHERE 数据的筛选
= >< 的前提是必须是int格式
SELECT * FROM production.product WHERE id=10
拿到id是10的数据
SELECT * FROM production.product WHERE id>10
拿到id大于10的数据
SELECT * FROM production.product WHERE id>10 and Tocaidue>5000
拿到id大于10并且Tocaidue大于5000
SELECT * FROM production.product WHERE id>10 or Tocaidue>5000
拿到id大于10或者Tocaidue大于5000
SELECT * FROM production.product WHERE id>10 and Orderdata >= '2005-08-01' and Orderdata <'2019-01-01'
拿到2005-08-01到2019-01-01的数据
SELECT * FROM production.product WHERE name like '%Montain%'
模糊查询百分比在前面的时候可以查前面有字符的,后面同理
SELECT * FROM production.product WHERE name like '_Montain%'
前面的字段可以是未知
SELECT * FROM production.product WHERE color in ('red','white')
筛选color是red和white的数据
SELECT * FROM production.product WHERE color not in ('red','white')
筛选color不是red和white的数据
SELECT * FROM production.product WHERE size is not null
size不是null的数据
UPDATA更新记录
UPDATA user SET age =age-id;sex=0;
user这个表的age=它减去它的id;sex = 0;
但是我们经常这样写
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
更改LastName = 'Wilson' 的表里面的FirstName变成Fred
DELETE 删除语法
DELETE FROM Person WHERE LastName = 'Wilson'
删除 LastName = 'Wilson' 的一行数据
INSERT 添加数据
INSERT INTO 表名称 VALUES (值1, 值2,....);
我们也可以指定所要插入数据的列:
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
//把一个字段的一样的另一个值加起来
SELECT MAC_NBR,GATHER_DAY,STATUS_NBR,PID,DURATION,WEEK_NUM,
SUM(DURATION) as SUMD FROM
[BANDEX2018_history].[dbo].[STATUS_DAY_GATHER]
group by MAC_NBR,GATHER_DAY,STATUS_NBR,PID,DURATION,WEEK_NUM
sql里面写逻辑判断
if exists (select 1 from ORIGINAL_VISUAL_STATUS where mac_nbr =@in_MAC_NBR )
update ORIGINAL_VISUAL_STATUS set STATUS_NBR =@in_STATUS_NBR,START_DATE=@in_START_DATE where mac_nbr = @in_MAC_NBR
else
insert into ORIGINAL_VISUAL_STATUS(MAC_NBR,STATUS_NBR,PID,START_DATE) VALUES(@in_MAC_NBR,@in_STATUS_NBR,0,@in_START_DATE)";
mySQL语句的规范
- 关键字和函数名称全部大写
- 数据库名称、表名称、字段名称全部小写
- SQL语句必须以分号结尾
网友评论