1.什么是SQL语句
sql语言:结构化的查询语言。(Structured Query Language),是关系数据库管理系统的标准语言。
它是一种解释语言:写一句执行一句,不需要整体编译执行。
语法特点: 1.没有“ ”,字符串使用‘ ’包含
2.没有逻辑相等,赋值和逻辑相等都是=
3.类型不再是最严格的。任何数据都可以包含在‘ ’以内
4.没有bool值的概念,但是在视图中可以输入true/false
5.它也有关系运算符:> < >= <= = <> != ,它返回一个bool值
6.它也有逻辑运算符: !(not) &&(and) ||(or) 7.它不区别大小
2.使用sql语句创建数据库和表
语法:
create database 数据库名称
on primary --默认在主文件组上
(
name='逻辑名称_data' , --当你发现它不是一句完整的sql语句,而仅仅是一个处理结构中的某一句的时候,就需要添加 ,
size=初始大小,--数值不包含在‘’以内
filegrowth=文件增长 ,
maxsize=最大容量,
filename='物理路径'
)
log on
(
name='逻辑名称_log' , --当你发现它不是一句完整的sql语句,而仅仅是一个处理结构中的某一句的时候,就需要添加 ,
size=初始大小,--数值不包含在‘’以内
filegrowth=文件增长 ,
maxsize=最大容量, --一般来说日志文件不限制最大容量
filename='物理路径'
)
--判断数据库文件是否已经存在 :数据库的记录都存储在master库中的sysdatabases表中
--自动切换当前数据库
--使用代码开启外围应该配置器
exec sp_configure 'show advanced options' ,1
RECONFIGURE
exec sp_configure 'xp_cmdshell',1
RECONFIGURE
--自定义目录 xp_cmdshell可以创建出目录 'mkdir f:\project':指定创建目录
exec xp_cmdshell 'mkdir f:\project'
use master --exists 函数判断()中的查询语句是否返回结果集,如果返回了结果集则得到true,否则得到false
if exists(
select * from sysdatabases where name='School'
)
drop database School --删除当前指定名称的数据库
create database School on primary
(
name='School_data',--逻辑名称.说明最多能够存储100mb数据,如果没有限制就可以将硬盘存储满
size=3mb,--初始大小
maxsize=100mb,--最大容量
filegrowth=10%,--文件增长一次增长10%
filename='f:\project\School_data.mdf' ), --创建文件组
filegroup mygroup
(
name='School_data1', --逻辑名称.说明最多能够存储100mb数据,如果没有限制就可以将硬盘存储满 size=3mb,--初始大小
maxsize=100mb,--最大容量
filegrowth=10%,--文件增长一次增长10%
filename='F:\qiyi\School_data1.ndf'
)
log on
(
name='School_log',--逻辑名称
size=3mb,--初始大小 --
maxsize=100mb,--最大容量
filegrowth=10%,--文件增长一次增长10%
filename='f:\project\School_log.ldf' ),
(
name='School_log1',--逻辑名称
size=3mb,--初始大小 --
maxsize=100mb,--最大容量
filegrowth=10%,--文件增长一次增长10%
filename='F:\qiyi\School_log1.ldf' )
3:创建数据表####
语法:
create table 表名 (
字段名称 字段类型 字段特征(是否为null,默认值 标识列 主键 唯一键 外键 check约束),
字段名称 字段类型 字段特征(是否为null,默认值 标识列 主键 唯一键 外键 check约束)
)
创建老师表Teacher :Id、Name、Gender、Age、Salary、Birthday
use School
if exists(select * from sysobjects where name='Classes')
drop table Classes
create table Classes
(
Classid int identity(1,1),
ClassName nvarchar(50) not null
)
if exists(select * from sysobjects where name='teacher')
drop table teacher
create table Teacher
( Id int identity(1,1),--可以同时创建多个特征,用空格 分隔开。 identity是标识列,第一个参数是种子,第二个是增量
Name nvarchar(50) not null,-- not null标记它的值不能为null--不能不填写
ClassId int not null,
Gender bit not null,
Age int ,
Salary money, --如果不标记为 not null.那么就相当于标记了null
Birthday datetime
)
4:.数据完整性约束####
1 实体完整性:实体就是指一条记录。这种完整性就是为了保证每一条记录不是重复记录。是有意义的
a: 主键:非空和唯一.一个表只有一个主键,但是一个主键可以是由多个字段组成的 组合键
b:标识列:系统自动生成,永远不重复
c:唯一键:唯一,但是可以为null,只能null一次
2域完整性:域就是指字段,它是为了保证字段的值是准和有效,合理值
a:类型 是否null,默认值,check约束,关系
3:自定义完整性:
a: check约束 , 存储过程 触发器
4:引用完整性:一个表的某个字段的值是引用自另外一个表的某个字段的值。引用的表就是外键表,被引用的表就是主键表
a.建立引用的字段类型必须一致
b.建立引用的字段的意义一样
c.建立主外键关系的时候选择 外键表 去建立主外键关系
d.建立主外键关系的字段在主表中必须是主键或者唯一键
e.对于操作的影响:
①.在添加数据时,先添加主键表再添加外键表数据
②.在删除的时候先外键表数据再删除主键表数据
f:级联的操作:不建议使用:会破坏数据完整性
G:不执行任何操作:该报错就报错,该删除就删除
H:级联:删除主表记录,从表引用该值的记录也被删除
I:设置null:删除主表记录,从表对应的字段值设置为null,前提是可以为null
J:设置为default:删除主表记录,从表对应的字段值设置为default,前提是可以为default
主键约束(PK Primary key)唯一键约束(UQ unique) 外键约束(FK foreign key) 默认值约束(DF default) check约束(CK check)