面试笔试整理7:SQL问题整理
来源:互联网 发布:java web菜单权限控制 编辑:程序博客网 时间:2024/06/05 09:51
SQL的问题就是四大类:增、删、改、查。要使用到的命令通常有:SELECT、UPDATE、DELETE、INSERT INTO、ALTER、DROP、IN、BETWEEN、DISTINCT、UNION、HAVING、WHERE、ON、EXISTS等等。
下面主要按照上面说的从建立表开始、到四大类、以及常用的结构和命令解释几个部分。这里语句都是基于SQL Server的。
一、建立数据表
1、从已知表创建
SELECT vale1, value2 into Table2 from Table1
这个要求目标表Table2不存在
2、创建空表
(1) 普通空表
CREATE TABLE Persons(Id_P int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255))
(2)带有主键约束的空表
CREATE TABLE Persons(Id_P int NOT NULL PRIMARY KEY,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))
(3)带有外键约束的空表
CREATE TABLE Orders(Id_O int NOT NULL PRIMARY KEY,OrderNo int NOT NULL UNIQUE, Id_P int FOREIGN KEY REFERENCES Persons(Id_P))
3、表已经存在情况下创建约束
首先要知道SQL的常用约束:NOT NULL约束、DEFAULT约束(默认值)、UNIQUE约束(不重复)、主键约束(数据表唯一标识 PRIMARY KEY)、外键约束(唯一标识其它数据表 FOREIGN KEY)、索引约束、CHECK约束(用于限制列中的值)。
(1)创建索引
索引的作用:用来加速SELECT和WHERE的速度,但是同时降低了UPDATE和INSERT数据的速度。
设置一列为索引CREATE INDEX index_name ON Tabel_name(col_name)创建唯一索引CREATE UNIQUE INDEX index_name ON table_name (column_name)
(2)创建col_name为主键
ALTER TABLE Person ADD PRIMARY KEY (col_name)
(3)创建外键
ALTER TABLE Person ADD FOREIGN KEY (col_name1) REFERENCES Persons(col_name2)
二、增加数据
1、手动添加数据
INSERT INTO Customes(value1, value2.....) VALUES(v1, v2 ......)
2、从其他表中添加数据(没有values了)
INSERT INTO table2 SELECT * FROM table1
3、增加列
ALTER TABLE table_name ADD column_name datatype
三、删除表、数据和索引等
删除常用的命令就是DELETE、DROP和ALTER
1、删除行
DELETE FROM Person WHERE LastName = 'Wilson'
删除所有行
DELETE FROM table_name
2、删除数据库
DROP DATEBASE db1
3、删除表
DROP TABLE tb1
4、删除索引
DROP INDEX table_name.index_name
5、删除列
注意:删除列之前该列所有的索引和约束必须首先删除
ALTER TABLE table1 DROP COLUMN col1
6、删除各种约束
ALTER TABLE Persons DROP CONSTRAINT uc_PersonID
三、修改表
修改表中的数据
UPDATE Table1 SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'
四、查询常用
查询说简单也简单,但是有的时候比较需要思维,一定记住WHERE中不能用函数,只可以在SELECT中或者是HAVING中使用函数。
查询中经常会用到COUNT(*),MAX(),MIN(),IN,EXISTS,LIKE,BETWEEN..AND、IS NULL、case 等关键字和函数。
五、问题
1、UNION和UNION ALL和 JOIN区别
UNION是两张表的记录数据(要求字段一致)纵向合并形成新的记录集,但是对于重复数据只记录一个
UNION ALL 忽略重复数据
JOIN是指将两个表进行横向的连接。
2、为什么索引能够加速
3、视图VIEW的作用
首先建立视图的方式是
CREAE VIEW view_name AS SELECT ...
好处是用起来简单,相当于一个虚拟化的表,不需要实际存储数据。
六、例子:
1、求百分比的问题:leecode 262
这个遇到了好几次
SELECT Request_at as Day, round(sum(case when t.Status like 'cancelled_%' then 1 else 0 end) / count(*),2) 'cancellation Rate'from Trips t join Users u On t.Client_Id = u.Users_Id where t.Request_at between '2013-10-01' and '2013-10-03' and u.Banned='No'group by t.Request_at
- 面试笔试整理7:SQL问题整理
- SQL 面试问题&资料整理
- LoadRunner面试(笔试)问题整理
- 面试笔试整理5:项目问题准备
- 笔试面试整理
- 钟表问题(常见面试笔试问题整理)
- 面试笔试整理--------.net方向
- Android 笔试/面试,常见问题整理
- 面试心经-笔试编程整理
- 面试笔试相关收集整理
- 笔试小问题整理
- 面试笔试整理2:c++常问问题
- 【笔试面试】操作系统--笔试题目整理集
- 【笔试面试】经典笔试题整理
- 面试问题整理
- 面试问题整理
- 面试问题整理
- 面试问题整理
- [特斯拉组件]ios高性能PageController
- ajax 轮询请求后台服务器
- HTML添加输入框,按钮。
- 查询SQLSERVER表结构脚本
- struct timeval结构体 以及 gettimeofday()函数
- 面试笔试整理7:SQL问题整理
- 设计模式-单一职责原则
- 第二章 HTTP报文
- 3.大概了解Tornado框架的设计模型
- 计算日期差的函数方法
- 微信小程序语音识别服务搭建全过程解析(内附免费的供小程序语音识别的https服务)
- 流水号生成
- 2017年教师资格证——《教育知识与能力》(中学)知识点(一)
- HDU2896:病毒侵袭(AC自动机)