SQL语句复习

博主因数据分析任务重新复习SQL语句,发现遗忘较多。分享了SQL Server中开启行号的方法,并列举了一些常见数据类型,如CHAR, VARCHAR, BINARY, BOOLEAN等,还提及了SQL连接的不同类型,包括内部链接、左连接、右连接和完整外部连接,但完整外部连接未详述,SQL自连接待更新。" 114308591,10736723,IDEA中创建Maven Web项目并配置Tomcat,"['Maven', 'Java Web', 'IDEA', 'Tomcat', 'Web开发']
摘要由CSDN通过智能技术生成

最近要分析数据,不得不复习sql语句。。。。
忘了好多啊。。。。。。
学习参考:https://www.w3cschool.cn/sql/
1.sqlserver代码编辑器显示行数:打开 工具-----选项------文本编译器 ------所有语言------常规----行号

`
SELECT Country FROM Customers;

SELECT Distinct Country FROM Customers;

SELECT COUNT(Distinct Country) FROM Customers; 

SELECT *FROM Customers
WHERE Country='Mexico';

SELECT * FROM Customers
WHERE Country='Mexico' OR PostalCode='05021'

SELECT * FROM Customers
WHERE CustomerID=1

SELECT * FROM Customers
WHERE Country='Germany' 
AND City='Berlin' 


SELECT City,Region FROM Customers 
WHERE City='Berlin' OR City='München';

SELECT * FROM Customers
WHERE NOT Country='Germany';


SELECT * FROM Customers
WHERE Country='Germany' AND (City='berlin'or City='USA' );
--降序排序DESC 默认升序ASC
SELECT * FROM Customers
ORDER BY Country DESC;

--插入数据
INSERT INTO Customers(CustomerID ,CompanyName, ContactName, Address, City, PostalCode, Country) 
VALUES ('5','Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

--使用一个表填充另一个表,这个有错误
INSERT INTO Customers(CustomerID,Address,City) 
SELECT CustomerID,Address,City
From Employees 
[WHERE LastName='King'];

--测试NULL
SELECT ContactName From Customers
WHERE Region Is NOT NULL;
  
  
--创建表
CREATE TABLE CUSTOMS(
	ID INT     NOT NULL,
	NAME VARCHAR(20) NOT NULL,
	AGE INT         NOT NULL, 
	ADDRES CHAR(25),
	SALARY  DECIMAL(18,2),
	PRIMARY key(ID),
);

--更新记录时要小心。省略WHERE子句,所有记录将被更新! 
UPDATE Customers
SET ContactName='ffff',City='gggg'
WHERE CustomerID='5';


--Delete语句删除表中数据
DELETE FROM Customers
WHERE CompanyName='Alfreds Futterkiste'; 
 /*
 有不同类型的sql表达式
	布尔型基于匹配单个值获取数据
	数值型表达式用于在任何查询中执行任何数学运算
	日期返回当前系统日期和时间值
	*/


---------数值型
/*
SELECT numerical_expression AS  OPERATION_NAME
[FROM table_nameWHERE CONDITION];
*/

--选择数据库 USE语句
USE test;

-------日期表达式
SELECT  GETDATE();`

SQL一些数据类型
|CHARACTER(n) 字符/字符串。固定长度 n。
VARCHAR(n) 或
CHARACTER VARYING(n) 字符/字符串。可变长度。最大长度 n。
BINARY(n) 二进制串。固定长度 n。
BOOLEAN 存储 TRUE 或 FALSE 值
INTEGER§ 整数值(没有小数点)。精度 p。
SMALLINT 整数值(没有小数点)。精度 5。
INTEGER 整数值(没有小数点)。精度 10。
DATE 存储年、月、日的值。
TIME 存储小时、分、秒的值。

SQL连接

内部链接在这里插入图片描述

左连接
在这里插入图片描述
右链接
在这里插入图片描述
完整外部连接 /待解决
在这里插入图片描述

SQL自连接 Self JOIN

----SELECT TOP 子句
SELECT TOP 1 City,Region FROM Customers 
WHERE City='Berlin' OR City='München';

SELECT TOP 50 PERCENT City,Region  FROM Customers
WHERE City='Berlin' OR City='München';

/*待解决
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;*/


/*LIKE 运算符
有两个通配符与LIKE运算符一起使用:
%表示零个,一个或多个字符
_表示单个字符*/
SELECT * FROM Customers
WHERE CompanyName lIKE '%a_';

SELECT * FROM Customers
WHERE City LIKE '[abc]%'; 



SELECT * FROM Customers 
WHERE City LIKE '[a-c]%';

---疑问
SELECT DISTINCT * FROM Customers
WHERE City LIKE '[!abc]%';

---疑问
SELECT DISTINCT * FROM Customers
WHERE City  NOT LIKE '[abc]%';


----------IN操作符
select * FROM Customers
WHERE Country IN ('Germany','US','France');

select * FROM Customers
WHERE Country   NOT IN  ('Germany','US','France');

SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

---SQL BETWEEN AND
SELECT *FROM Products
WHERE UnitPrice Between 10 and 20 ;
SELECT * from Products
WHERE UnitPrice NOT Between 10 and 20; 


--下边俩等价
SELECT * FROM Products 
WHERE (UnitPrice BETWEEN 10 AND 20) 
AND CategoryID NOT IN (1,2,3); 


SELECT * FROM Products 
WHERE (UnitPrice BETWEEN 10 AND 20) 
AND NOT CategoryID IN (1,2,3); 
--月日年
SELECT * FROM Orders 
WHERE OrderDate BETWEEN '07/04/1996' AND '07/09/1996';


--join链接
 SELECT Orders.OrderID, Customers.ContactName, Orders.OrderDate 
 From Orders 
 FULL jOIN Customers
	ON Orders.CustomerID=Customers.CustomerID;
 
SELECT Orders.OrderID, Customers.CompanyName, Shippers.CompanyName
FROM (  (Orders  
INNER JOIN Customers 
	ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers 
	ON Orders.EmployeeID = Shippers.ShipperID);
	
---自连接self join
SELECT A.CompanyName AS CustomerName1, B.CompanyName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID != B.CustomerID AND A.City = B.City 
ORDER BY A.City;


 --UNION运算符用于组合两个或更多SELECT语句的结果集
SELECT City from Customers
UNION
SELECT City from Suppliers
ORDER BY City 
 
 
SELECT City from Customers
UNION ALL
SELECT City from Suppliers
ORDER BY City


SELECT City,Country From Customers
WHERE Country='Germany'
UNION 
SELECT City,Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City; 
 
---SELECT INTO 插入新表中
SELECT *
INTO CustomersCopy
FROM Customers;

DELETE FROM CustomersCopy
WHERE Region IS NULL;


SELECT City
INTO CustomersCopy2
FROM Customers
where 1=0;
 
---INSERT  INTO SELECT 语句

INSERT INTO CustomersCopy(Address)
SELECT Address
FROM Employees;


SELECT *
FROM CustomersCopy;

---删除表中数据truncate table
TRUNCATE TABLE CustomersCopy;

--错误:DELETE TABLE CustomersCopy;
CREATE DATABASE my_db;

--错误:SHOW databases;


--ALTER TABLE 现有表中添加、删除或修改列。
ALTER TABLE Persons
ADD  DateOfBirth date;


ALTER TABLE Persons                
ALTER COLUMN DateOfBirth TIME;


---
CREATE TABLE Per(   
             
ID int  IDENTITY(1,1),---AUTO_INCREMENT            
LastName varchar(255) NOT NULL,                
FirstName varchar(255),                
Address varchar(255),                
City varchar(255),                
PRIMARY KEY (ID)       
);

----create view 
CREATE VIEW [Products Above Average Price he] AS                
SELECT ProductName,UnitPrice                
FROM Products                
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products) 

明天再更

涉及到了基础SQL的所有知识点 desc emp;描述一下emp表的结构 2 select from salgrade; 3 select ename sal 12 from emp; 4 select 2 3 from emp;会出现14行 5 select 2 3 from dual;只有一行 专门提供计算数学表达式的 6 select sysdate from dual;获取当前系统时间 7 select ename sal 12 annual salary from emp;给sal 12取了个别名叫做annual salary 8 select ename sal 12 "annual salary" from emp;用双引号将别名括起来 这样可以保留住空格 大小写 中文等等 9 select ename comm from emp;其中comm中包括空值 空值不等于0 10 select ename sal 12+comm "总年薪" from emp;任何数加上空值都等于空值 11 select ename||sal from emp;字符串连接符 12 select ename||" nihao" from emp;在SQL语句中 字符串是由单引号括起来的若干字符 13 select ename||" niahao""dajiahao" from emp;如果字符串中本身就有一个单引号 那么在SQL语句中进行表示时 用两个单引号表示一个单引号 14 select distinct deptno from emp;select distinct deptno job from emp; 15 select from emp where ename "CLARK";where中添加条件约束 并且字符串需要加上单引号来表示 16 select ename job sal from emp where ename > "CBA";字符串比较 先比较第一个 比C大 就TRUE 第一个字母相同)否则比较下一个 比B大 就TRUE 否则 17 select ename sal from emp where sal<>ALL 1500 2000 2500 3000 ;<>表示不等于 <>ALL表示不等于所有的( ) 18 select from emp where sal between 800 and 1300;和select from emp where sal> 800 and sal< 1300;的效果是一样的 19 select from emp where comm is null;is null表示是空值 is not null表示非空值 不可以用 20 select ename sal from emp where ename in "SMITH" "CLARK" "SCOTT" ;ename在()中的人选出来 ()中也可以是其他类型 21 select ename sal hiredate from emp where hiredate > "20 2月 81";日期的格式 22 select ename sal from emp where ename like " A%"; 表示一个字符 %表示0个或多个字符 23 select from emp where ename like "% %%" escape " ";其中 作为转义字符的符号 select from emp where ename like "% %%"; %表示百分号 24 select empno ename from emp order by empno asc;升序排列(默认);select deptno dname from dept order by deptno desc;降序排列 25 select empno ename from emp where deptno<>10 order by empno desc;可以先选择在排序 26 select ename sal deptno from emp order by deptno asc ename desc;先按照deptno进行升序排列 在deptno相同的地方 按照ename进行降序排列 27 select ename sal 12 annual sal from emp where ename not like " A%’ and sal > 800 order by desc; 28 select ename sal from emp where lower ename like " a%";小写 29 select substr ename 2 3 from emp;从第二个字符开始 截3个字符出来作为结果 30 select chr 65 from dual;把ASCII码转化成字符 31 select ascii "A" from dual;把字符转化成ASCII码 32 select round 23 643 2 from dual;四舍五入为23 64 默认第二个参数为0 即四舍五入到各位 也可以为 1 则为20 33 select to char sal "$99 999 9999" from emp;美元 9代表一个数字 “ ”代表一个千分位符号 select to char sal "L99 999 9999" from emp;人民币 select to char sal "L00000 0000" from emp; 34 select to char hiredate "YYYY MM DD HH:MI:SS" from emp;转换Date类型的时间表示方法 select to char sysdate "MM DD YY HH24:MI:SS" from dual;24小时制 35 select ename hiredate from emp where hiredate > to Date "1981 2 3 14:23:12" "YYYY MM DD HH24:MI:SS" ;to date "" "" 将日期转换成自己想要的格式 36 select ename sal 12 + nvl comm 0 from emp;nvl comm 0 是将comm中的空值设为0 非空值还是本身 37 to number "$1250 00" "$9 999 99" ;有点问题 ">涉及到了基础SQL的所有知识点 desc emp;描述一下emp表的结构 2 select from salgrade; 3 select ename sal 12 from emp; 4 select 2 3 from emp;会出现14行 5 select 2 3 from dual;只有一行 专门提供计算数学表达式的 6 select sysdate from dual;获 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值