SQL基础
前因
前天晚上,算是进行了人生中的第一次面试吧!在线面试,紧张的不行!面试官问题的题都比较简单,但是还是很多没打上来,就比如数据库增一条语句,以前只知道一个大概,每次用的时候要么查一下,要么就试一下!结果面试的时候根本回答不上来。正好今天感冒了,请假没去上班,应该不是中奖新冠了吧,我趁着有些力气就写写吧!好读书不求甚解,还是有点浮躁。不过最近心态真的比以前好太多了。不说了开始吧!
一、简介与准备工作
- 什么是SQL?(网上抄的!)
- SQL指结构化查询语言
- SQL使我们有能力访问数据库
- SQL是一种ANSI的标准计算机语言
- SQL的应用?
- SQL面向数据库执行查询
- SQL可从数据库取回数据
- SQL可在数据库中插入新的记录
- SQL可更新数据库中的数据
- SQL可从数据库删除记录
- SQL可创建新数据库
- SQL可在数据库中创建新表
- SQL可在数据库中创建存储过程
- SQL可在数据库中创建视图
- SQL可以设置表、存储过程和视图权限
- 准备
- 安装数据库,新建名TestByMy的测试库,新建名为Students的表并填充测试数据用于以下学习。 (alt+X执行选中)
--select * from sys.databases;
use master
go
if exists(select * from sysdatabases where name ='TestByMy')
begin
select '该数据库已存在'
drop database tempdb --存在就删除
end
else
begin
create database TestByMy;
end
--创建数据库表名
use TestByMy
go
if exists(select * from sys.objects where name='Studentss')
begin
select '该表已经存在'
drop table Student
end
else
begin
create table Studentss
(
Id int not null identity(1,1) primary key,--设置为主键和自增列
LastName nvarchar(20) not null,
FirstName nvarchar(20) not null,
Address nvarchar(50) not null,
City nvarchar(20) not null,
)
end
--插入一些测试数据
INSERT INTO Students VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing');
INSERT INTO Students VALUES ('远', '孟', '江湾84号', '上海');
二、SELECT:查询
1、描述
- SELECT语句从表中选取数据。
- 结果数据被存储在一个结果表中(结果集)
2、语法
SELECT 列名称,列名称 FROM 表名称
SELECT * FROM 表名称
三、DISTINCT
1、描述
- DISTINCT用于返回唯一不同的值
2、语法
SELECT DISTINCT 列名称 FROM 表名称
3、例子
SELECT DISTINCT FirstName from Students;
四、WHERE
1、描述
1. 有条件地从表中选取数据
2. 条件如果是文本一般添加单引号,数字的话一般不用
2、语法
SELECT * FROM 表名 WHERE 列名='';
3、例子
select * FROM Students WHERE LastName='一';
五、AND&OR
1、描述
1. AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤
2.语法
SELECT * FROM 表名 WHERE [条件一]AND[条件二]
3.例子
SELECT * FROM Students WHERE FirstName='孟' AND LastName='远';
六、ORDER BY
1、描述
1. ORDER BY 语句用于根据指定的列对结果集进行排序。
2. ORDER BY 语句默认按照升序对记录进行排序。
3. 使用DESC降序对记录进行排序
2、语法
SELECT * FROM 表名 ORDER BY 列名
3、例子
SELECT * FROM Students ORDER BY FirstName;
七、INSERT INTO
1、描述
1. INSERT INTO语句用于向表格中插入新的行
2. 可以只插入部分行的数据,其余为空
2、语法
INSERT INTO table_name(列1,列2,……)VALUES(值1,值2,……);
3、例子
INSERT INTO Students(FirstName,LastName,Address,City) VALUES('张','长长','长江南路1号','许昌');
将某一行的not null 该为允许null
ALTER TABLE table_name ALTER column_name column_type null;
八、UPDATE
1、描述
1. UPDATE语句用于修改表中的数据
2、语法
UPDATE 表名称 SET 列名称=新值 WHERE 列名称=旧值
3、例子
UPDATE Students SET LastName='甜' WHERE FirstName='王' AND City='上海';
九、DELETE
1、描述
1. DELETE语句用于删除表中的行。
2、语法
DELETE FROM 表名称 WHERE 列名称=值
3、例子
DELETE FROM Students WHERE ID=8;
十、SQL文件保存
--select * from sys.databases;--查看数据库名
--创建数据库
use master
go
if exists(select * from sysdatabases where name ='TestByMy')
begin
select '该数据库已存在'
--drop database tempdb --存在就删除
end
else
begin
create database TestByMy;
end
--创建数据库表名
use TestByMy
go
if exists(select * from sys.objects where name='Studentss')
begin
select '该表已经存在'
--drop table Student
end
else
begin
create table Studentss
(
Id int not null identity(1,1) primary key,--设置为主键和自增列
LastName nvarchar(20) not null,
FirstName nvarchar(20) not null,
Address nvarchar(50) not null,
City nvarchar(20) not null,
)
end
--drop table Studentss;
INSERT INTO Students VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
INSERT INTO Students VALUES ('远', '孟', '江湾84号', '上海');
INSERT INTO Students VALUES ('近', '孟', '江湾84号', '上海');
INSERT INTO Students VALUES ('一', '王', '南京路84号', '上海');
--select
select * from Students;
select distinct FirstName from Students;
select * from Students where LastName='一';
select * from Students where FirstName='孟' AND LastName='远';
SELECT * FROM Students ORDER BY FirstName;
INSERT INTO Students(FirstName,LastName,Address,City) VALUES('张','长长','长江南路1号','许昌');
INSERT INTO Students(FirstName,LastName,City) VALUES('郭','大路','济南');
--desc Students;
ALTER TABLE Students alter Column Address varchar(20) null;
UPDATE Students SET LastName='甜' WHERE FirstName='王' AND City='上海';
SELECT MAX(ID) FROM Students;
DELETE FROM Students WHERE ID=8;