Ps:仅自学自用留档,乱序慢速更新,如有需要请点击下方目录自行找寻内容!
创建数据库及表
创建数据库Sql语句:
use master --一般的创建语句都在master中执行
go
create database--数据库名
on primary
(
name='主数据文件名',--主文件加:_data
filename='主数据文件物理路径名',--加文件后缀:.mdf
size=默认数据库大小,
maxsize=最大容量,
filegrowth=增长量
)
log on
(
name='日志文件名',-- 日志文件加:_log
filename='日志文件物理路径名', --加文件后缀:.ldf
size=默认数据库大小,
maxsize=最大容量,
filegrowth=增长量
)
go
创建表Sql语句:
create table 表名
(
Sno char(10) not null primary key,
Sname char(10) null,
)
数据库重命名Sql语句:
use master
go
sp_renamedb'原名','后改名'
数据库删除Sql语句;
use master
go
drop database 数据库名
6月26日更:
查询|Sql语句与方法
Where语句
查询条件 | 谓词 |
---|---|
比较运算符 | =,>,>= ,<,<=,<>(或!=) |
确定范围 | BETWEEN AND,NOT BETWEEN AND |
确定集合 | IN,NOT IN |
字符匹配 | LIKE,NOT LIKE |
空值 | IS NULL,IS NOT NULL |
多重条件(逻辑谓词) | AND,OR,NOT |
Like条件
通配符 |
---|
’_‘ 代表任意一个字符 |
’%‘ 代表任意多个字符 |
Like条件用法Sql语句:
SELECT * FROM 表名 列名 LIKE '查询内容'
Is Null条件用法Sql语句:
SELECT * FROM 表名 WHERE 列名 IS NULL
查询表|条件Sql语句:
SELECT *[列名,列名……]--单独查询某列 FROM 表名--‘*’表示全部
[WHERE 表名 [跟表中条件]]--可跟条件
多表连接查询
(一)内连接
内连接是等值连接,使用“=、>、<、<>”等比较运算符根据每个表共有的列的值匹配两个表中的行。若列名在所有查询的表内是唯一的,可将名称直接写上。在连接查询中如果某个表的所有列全部显示,可以写做<表名.*>。
Sql语句:
SELECT *[列名,列名……]--单独查询某列 FROM 表1 JOIN 表2 ON <连接条件>
{ JOIN 表3 ON <连接条件>… }--多于两张表时的连接方式
连接条件的一般格式 |
---|
表名1.列名 <比较运算符> 表名2.列名 |
(二)外连接
满足连接条件的元组保留到连接的结果中,其中不满足连接条件的元组会被舍弃。
(1)左外连接
查询的结果集包括SQL语句中左表的所有行,右表中匹配的行。如果左表的某行在右表中没有匹配行,则用空值表示。
Sql语句:
SELECT *[列名,列名……--单独查询某列] FROM 表1 LEFT [OUTER] JOIN 表2 ON <连接条件>
--[outer]可省略
(2)右外连接
查询的结果集包括SQL语句中右表的所有行,左表中匹配的行。如果右表的某行在左表中没有匹配的行,则用空值表示。
Sql语句:
SELECT *[列名,列名……]--单独查询某列 FROM 表1 RIGHT [OUTER] JOIN 表2 ON <连接条件>
--[outer]可省略
(3)全外连接
查询的结果集包括SQL语句中左表和右表的所有行。如果某行在另一个表中没有匹配行时,则用空值表示。
Sql语句:
SELECT *[列名,列名……--单独查询某列] FROM 表1 FULL [OUTER] JOIN 表2 ON <连接条件>
--[outer]可省略
视图
创建单源表视图Sql语句:
create view 视图名(别名,别名……)--查询时显示所要查询的别名(可中文名称)
[with encryption]--指对于视图定义的语句进行加密
as
select 列名,可唯一列名……--可唯一列名可直接写
from 表名
[with check option]--确保用户只能查询和修改他们所看到的数据
创建多源表视图Sql语句:
多源表视图一般只用于查询,不用于修改数据。
CREATE VIEW 视图名 (别名,别名……)--查询时显示所要查询的别名(可中文名称)
AS
SELECT 表名.列名,可唯一列名……--可唯一列名可直接写
FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名
[JOIN 表名3 ON 表名3.列名 = 表名2.列名]--大于2个表使用框起部分
查看视图内容Sql语句:
SELECT * FROM 视图名
通过视图向基本表中插入数据Sql语句:
INSERT INTO 视图名
VALUES(……,……)--数据内容
通过视图修改基本表中的数据Sql语句:
UPDATE 视图名 SET 修改内容
通过视图删除基本表中的数据Sql语句:
DELETE FROM 视图名
WHERE 条件
删除视图Sql语句:
DROP VIEW 视图名
6月28日更:
约束
NOT NULL
非空约束。限定某列的取值不允许为空(NULL)。假设要求学生信息表中的姓名这一列,不允许为空,那么可以设定姓名的约束为NOT NULL。
UNIQUE
限定某一列的取值唯一。换句话说就是列的取值不能重复。比如身份证号这一列,每个人的身份证号都不相同,如果这一列上出现重复值必定是错误的。
alter table 表名
add constraint 约束名
unique (字段)
PRIMARY KEY
主码也称主键或主关键字,是表中的属性或属性组,用以唯一的确定一个元组。比如学生信息表中的学号,每个人都有一个学号,并且每个人的学号都不会重复。那么我们就可以将学号定义为主码,用以唯一的确定一个元组。主码上的取值第一不允许重复,第二不允许为空。
添加数据的时候,如果违反这两条中的任一规则,会提示出错。
每张表必须有且仅有一个主码。
alter table 表名
add constraint 约束名
primary key (主键)
CHECK
用以限定列的取值范围。使用形式为 CHECK(约束表达式)。例如限定年龄在10到60岁之间。在创建表时可以声明CHECK(年龄>10 AND 年龄<60)。
alter table 表名
add constraint 约束名
check (字段 between 1 and 100 )
DEFAULT
设定列的默认值。使用形式为:DEFAULT 常量。
alter table 表名
add constraint 约束名
default (默认内容) for 字段
FOREIGN KEY
外码也称为外键或外关键字。可以设置表中的一个(或多个)属性,让它引用某个表的主码(通常情况下),使表中的属性集的取值受它引用的属性集取值的约束,这个受约束的属性集称为外码。
Alter table 表名
add Constraint 约束名
foreign key(字段)
references 表名(字段名)
触发器
创建触发器Sql语句:
Create trigger 触发器名
On 基本表名或视图名
[with encryption] --加密
For|after|instead of --可选其一,after和for作用相同
{[insert][,][update][,][delete]
As T-SQL语句块
禁用触发器Sql语句:
disable trigger 触发器名
On 表名
启用触发器Sql语句:
enable trigger 触发器名 on 表名
<或alter table>
删除触发器Sql语句:
drop trigger 触发器名
7月8日更:
表的增删改
录入数据Sql语句:
insert into 表名 (列名)--一个语句录入一条信息
values ('录入信息','录入信息'……)
删除数据Sql语句:
delete from 表名--不带条件删除整张表
[where <条件>]--带条件删除满足条件的整行
修改数据Sql语句:
update 表名
set 列名 = [修改的数据]--一般带比较运算符
where 列名 = [条件]--执行条件