表是数据存储的简单形式。表格也被认为是关系的方便表示。在 DBMS 术语中,表称为关系,列称为字段,行称为元组。
临时表(临时表可以在运行时创建,可以做普通表可以做的各种操作。这些临时表是在 tempdb 数据库中创建的。)
本地临时表仅在当前连接时间可用。当用户与实例断开连接时,它会自动删除。它以井号 (#) 符号开头。
CREATE TABLE #local temp table (
User id int,
Username varchar (50),
User address varchar (150)
)
Glo
全局临时表名称以双哈希 (##) 开头。一旦这个表被创建,它就像一个永久的表。它始终为所有用户准备好,并且在整个连接被撤销之前不会被删除。
CREATE TABLE ##new global temp table (
User id int,
User name varchar (50),
User address varchar (150)
)
在数据库中创建或删除数据库对象等操作,如create、drop 、alter等语句
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
创建表create
SQL> CREATE TABLE STUDENTS (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
PRIMARY KEY (ID)
);
删除表drop
DROP TABLE "table_name";
更改表
ALTER TABLE Employee RENAME To Coding_Employees ;#改表名
ALTER TABLE Cars ADD Car_Model Varchar(20);#增加列
用来插入、修改和删除表中的数据,如insert、update、delete语句
以下SQL将学生的记录插入到Student_Records表中:
INSERT INTO Student VALUES (201, Akash, Delhi, 18, 89, A2),
SQL UPDATE语句用于更改表所保存的记录的数据。要更新哪些行,由条件决定。要指定条件,我们使用 WHERE 子句。
(1)更新一条记录的一个字段:
UPDATE students
SET User_Name = 'beinghuman'
WHERE Student_Id = '3'
(2)更新一条记录的多个字段:
UPDATE students
SET User_Name = 'beserious', First_Name = 'Johnny'
WHERE Student_Id = '3'
下面是这样一个例子: 两个表a、b,想使b中的client字段值等于a表中对应id的name值
表a:
id name
1 王
2 李
3 张
表b:
id ClientName
1
2
3
(1) update set from语句,set和where关联一个表时,会对关联的表进行二次查询
UPDATE b SET ClientName = a.name FROM a,b WHERE a.id = b.id
(2)在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句。 其实在 SQL 语法中,这些连接也是可以用于 update 和 delete 语句的,在这些语句中使用 join 还常常得到事半功倍的效果。
UPDATE T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID
FROM T_OrderForm A LEFT JOIN T_ProductInfo B ON B.L_ID=A.ProductID
用来对数据库中的数据进行查询,指select语句
SELECT 语句用于访问来自一个或多个数据库表和视图的记录,检索符合我们想要的条件的选定数据。
通过使用此命令,我们还可以从表的特定列访问特定记录。
SELECT Column_Name_1, ....., Column_Name_N FROM Table_Name; #访问特定字段的所有行记录
SELECT * FROM table_name; #访问表的所有字段中的所有行
WHERE 子句与 SELECT 语句一起使用,仅返回表中满足查询中指定条件的那些行。
查询表中 Emp_Panelty 为 500 的员工的记录:
SELECT * FROM Employee_Details WHERE Emp_Panelty = 500;
1、嵌套查询是在查询SQL中嵌入一个子查询SQL;
2、嵌套查询会执行多条SQL语句;
3、查询效率低,要多查一轮
select sname
from student --外层查询或者父查询
where sno in
(select sno
from SC --内层查询或者子查询
where Cno = '2');
关键字:inner join…on
说明:组合两个表中的记录,返回关联字段符合查询条件的记录,也就是返回两个表的交集(阴影)部分。
select *
from table1 inner join table2
where table1.id = table2.id
GROUP BY 子句与 SELECT 语句一起使用,以显示表中列的公共数据:
以下带有 GROUP BY 查询的 SELECT 列出了相同价格的汽车数量:
SELECT COUNT (Car_Name), Car_Price FROM Cars_Details GROUP BY Car_Price;
显示如下:
Count (Car_Name) Car_Price
2 1000000
2 900000
SELECT 语句中的 HAVING 子句在 GROUP BY 子句定义的那些组中创建一个选择。
Employee_Id Employee_Name Employee_Salary Employee_City
201 Jone 20000 Goa
202 Basant 40000 Delhi
203 Rashet 80000 Jaipur
204 Anuj 20000 Goa
205 Sumit 50000 Delhi
以下查询显示了上述 Employee_Having 表中超过 5000 的员工的总工资:
SELECT SUM (Employee_Salary), Employee_City FROM Employee_Having
GROUP BY Employee_City HAVING SUM(Employee_Salary)>5000;
带有 SQL SELECT 语句的 ORDER BY 子句以排序方式显示记录或行。
ORDER BY 子句按升序和降序排列值。
SELECT * FROM Employee_Order ORDER BY Emp_Salary DESC;
用来控制数据库组件的存取许可,存取权限等,如GRANT、REVOKE等
在 SQL 的情况下,JOIN 的意思是 “组合两个或多个表”。
SQL JOIN 子句从数据库中的两个或多个表中获取记录并将其组合在一起
SELECT 列名1, 列名2, 列名3, 列名4
FROM 表名1 s, 表名2 p
WHERE s.ID =p.S_ID;
SQL左连接返回左表中的所有值,它还包括右表中的匹配值,如果没有匹配的连接值,则返回NULL。
customer表:
ID NAME AGE SALARY
1 ARYAN 51 56000
2 AROHI 21 25000
order表:
O_ID DATE CUSTOMER_ID AMOUNT
001 20-01-2012 2 3000
002 12-02-2012 2 2000
用 LEFT JOIN 连接这两个表,结果如下:
SQL SELECT ID, NAME, AMOUNT,DATE
FROM CUSTOMER
LEFT JOIN ORDER
ON CUSTOMER.ID = ORDER.CUSTOMER_ID;
ID NAME AMOUNT DATE
1 ARYAN NULL NULL
2 AROHI 3000 20-01-2012
2 AROHI 2000 12-02-2012