数据库笔试面试题

数据库笔试面试题

  • 一 基本定义
      • (1)表是数据的集合,按行和列组织。
      • (2)临时表
  • 二、SQL语言包含
    • 1.数据定义语言(DDL.Data Definition Language):create/drop/alter
      • create基本操作
    • 2.数据操作语言(DML.Data Manipulation Language)
      • insert基本用法
      • update基本用法
        • update+拼接
    • 3.数据查询语言(DQL.Data Query Language)
      • Select基本用法
      • Select+Where条件查询
        • 嵌套查询
        • 连接查询
      • Select+group by分组显示
        • Select+Group by +Having
      • Select+order by
    • 4.数据控制语言(DCL.Data Control Language)
  • 拓展
    • 连接JOIN(inner)
      • left join

一 基本定义

(1)表是数据的集合,按行和列组织。

表是数据存储的简单形式。表格也被认为是关系的方便表示。在 DBMS 术语中,表称为关系,列称为字段,行称为元组。

(2)临时表

临时表(临时表可以在运行时创建,可以做普通表可以做的各种操作。这些临时表是在 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)  
)  

二、SQL语言包含

1.数据定义语言(DDL.Data Definition Language):create/drop/alter

在数据库中创建或删除数据库对象等操作,如create、drop 、alter等语句

数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER

create基本操作

创建表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);#增加列


2.数据操作语言(DML.Data Manipulation Language)

用来插入、修改和删除表中的数据,如insert、update、delete语句


insert基本用法

以下SQL将学生的记录插入到Student_Records表中:

INSERT INTO Student VALUES (201, Akash, Delhi, 18, 89, A2),   

update基本用法

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'  

update+拼接

下面是这样一个例子: 两个表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

3.数据查询语言(DQL.Data Query Language)

用来对数据库中的数据进行查询,指select语句

SELECT 语句用于访问来自一个或多个数据库表和视图的记录,检索符合我们想要的条件的选定数据。
通过使用此命令,我们还可以从表的特定列访问特定记录。

Select基本用法

SELECT Column_Name_1, ....., Column_Name_N FROM Table_Name; #访问特定字段的所有行记录
SELECT * FROM table_name;  #访问表的所有字段中的所有行

Select+Where条件查询

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

Select+group by分组显示

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+Group by +Having

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;  

Select+order by

带有 SQL SELECT 语句的 ORDER BY 子句以排序方式显示记录或行。
ORDER BY 子句按升序和降序排列值。

SELECT * FROM Employee_Order ORDER BY Emp_Salary DESC;


4.数据控制语言(DCL.Data Control Language)

用来控制数据库组件的存取许可,存取权限等,如GRANT、REVOKE等


拓展

连接JOIN(inner)

在 SQL 的情况下,JOIN 的意思是 “组合两个或多个表”。

SQL JOIN 子句从数据库中的两个或多个表中获取记录并将其组合在一起

SELECT 列名1, 列名2, 列名3, 列名4   
   FROM 表名1 s, 表名2 p  
   WHERE s.ID =p.S_ID; 

left join

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

你可能感兴趣的:(面试,数据库,sql)