Sql common usage

本文详细介绍了SQL语言的基本语法,包括创建表、查看表结构、删除和修改表、使用索引、创建和使用数据库、更新和选择数据、条件查询、模糊查询、分页查询、多表查询以及数据安全等关键概念。
1.create table table_name(var1 type1,var2 type2)
CREATE TABLE Persons

( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )
create table if not exists table_name(same ....);
2.desc table_name //to see the structure of table

3.delete from table_name where id>1 and id <10;
4.drop table table_name;
5.drop index index_name on table_name;
6.utf-8 3byte gbk 2byte so->varchar(12) have 6 chinese words and utf-8->varchar(12) have 3 chinese words
7.create database database_name; use database_name;
8.update table_name set field='value" where condition(id>=5 && id <=19);
  update table_name set field=field+1 where id='value';
9.delete from table_name where
10.select table_name.field,table_name.field from table_name
  select field as alias from table_name
  select field1,field2,field2*0.8 as discount from table_name
  select * from table_name where id between 10 and 20;
  select * from table_name where id not between 10 and 20;
  select * from table_name where id in(10,29,32);
11. _ present a char and % present any chars;
  select * from table_name where name like "%ly";//选出已ly结尾的
  select * from table_name where name not like ""//
12.select * from table_name where id=(select max(id)from table_anem);
//It's good solution
13.show databases; //show databases
14.use databases;//use database;
15.select distinct name from table_name //display only once and remove the dumplicate
16.select age from table_name where age>12;//数值不使用单引号,字符使用单引号
17.select  * from table_name order by  age;//根据年龄默认升序排列 

    select * from table_name order by age DESC//降序排列

18.select top 12 * from table_name //选出前12条的记录的内容

19.select top 12 percent * from table_name //选出12%的记录的内容

20.select * from table_name where city like "%lon%";//这里的%就是*的意思,是一种通配符查找 表示一个或多个字符,_这个表示一个字符

21.sql的类正则表达:

     select  * from table_name where city like '[ABC]%'//以任意三个字母开头的字符串,放过来就是[!ABC]%

22.select * from table_name where column_name in ('value1','value2');//从字段column_name中找出数值为value1跟value2

23.select   t1.id t2.name from table1_name as t1 ,table2_name as t2 where  t1.id=1;//将两个表重新命名,使用别名

    seleect id as MyId   name as MyName from table_name //别名显示

24.select * from b inner join a on a.id=b.id where b.id=2;//用于多表的查询,特别有意思

 

 




转载于:https://www.cnblogs.com/epirus/archive/2012/07/30/2615289.html

### SQL WITH Clause Usage and Examples SQL 的 `WITH` 子句(也称为公用表表达式,Common Table Expression,简称 CTE)是一种用于定义临时结果集的语法结构,该结果集可以在一个 SQL 语句的执行过程中被多次引用。它通常用于简化复杂的查询逻辑,提高代码的可读性和可维护性。 #### 基本语法 ```sql WITH cte_name AS ( SELECT column1, column2, ... FROM table_name WHERE condition ) SELECT * FROM cte_name; ``` #### 使用场景 1. **分解复杂查询**:`WITH` 子句允许将复杂的查询分解为多个部分,每个部分可以单独编写和测试。 2. **递归查询**:在支持递归 CTE 的数据库(如 PostgreSQLSQL Server)中,`WITH` 子句可以用于处理层次结构数据,例如树形结构或图。 3. **重用子查询**:CTE 可以在多个地方被引用,避免了重复编写相同的子查询。 #### 示例 ##### 示例 1:简化复杂查询 假设有一个 `Sales` 表和一个 `Customers` 表,需要查询每个客户的总销售额。 ```sql WITH CustomerSales AS ( SELECT CustomerID, SUM(Amount) AS TotalSales FROM Sales GROUP BY CustomerID ) SELECT c.CustomerName, cs.TotalSales FROM Customers c JOIN CustomerSales cs ON c.CustomerID = cs.CustomerID; ``` ##### 示例 2:递归查询 假设有一个 `Employees` 表,其中包含员工的 `EmployeeID` 和 `ManagerID`,需要查询所有员工及其管理链。 ```sql WITH RECURSIVE EmployeeHierarchy AS ( SELECT EmployeeID, ManagerID, EmployeeName, 0 AS Level FROM Employees WHERE ManagerID IS NULL -- 顶层员工 UNION ALL SELECT e.EmployeeID, e.ManagerID, e.EmployeeName, eh.Level + 1 FROM Employees e JOIN EmployeeHierarchy eh ON e.ManagerID = eh.EmployeeID ) SELECT * FROM EmployeeHierarchy; ``` ##### 示例 3:重用子查询 假设需要查询销售额高于平均销售额的客户。 ```sql WITH AverageSales AS ( SELECT AVG(Amount) AS AvgAmount FROM Sales ) SELECT s.CustomerID, s.Amount FROM Sales s JOIN AverageSales a ON s.Amount > a.AvgAmount; ``` #### 优势 - **可读性**:`WITH` 子句使得查询更加清晰,尤其是在处理复杂逻辑时。 - **可维护性**:CTE 可以单独修改,而不影响整个查询的其他部分。 - **性能优化**:某些数据库优化器可以更好地处理 CTE,尤其是在递归查询中。 #### 注意事项 - **作用域**:CTE 的作用域仅限于定义它的 SQL 语句。 - **递归限制**:递归 CTE 需要数据库支持,并且需要避免无限循环。 #### 与子查询的区别 - **可重用性**:CTE 可以在同一个查询中被多次引用,而子查询只能在定义它的位置使用。 - **递归支持**:CTE 支持递归查询,而子查询不支持。 通过使用 `WITH` 子句,可以显著提升 SQL 查询的可读性和效率,尤其是在处理复杂逻辑或层次结构数据时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值