数据库的创建
判断是否已经创建该数据库 使用if语句进行查询
-- 表示注释 -- 创建数据库之前,需要我们判断是否已经存在该数据库 if exists(select * from sys.databases where name ='DBTEST') drop database DBTEST -- 如果已经存在,那么就删除 drop表示删除的含义 -- select * from 表示是从某某表中查找对应的信息 -- select * from xxx(查找的表) where name(列名)='DBTEST'(想要查询的表中的列的指定信息)
创建数据库
create database DBTEST -- 创建数据库 on -- 数据文件 ( name = 'DBTEST', filename = 'D:\SQLcode\DBTEST.mdf', -- 物理路径和名称 size = 5MB, -- 文件的初始大小 filegrowth = 2MB ) log on ( name = 'DBTEST_log', filename = 'D:\SQLcode\DBTEST_log.ldf', -- 物理路径和名称 size = 5MB, -- 文件的初始大小 filegrowth = 2MB ) create database DBTEST1 -- 简单的写法
数据表的创建
数据库创建成功,接下来创建表,和创建数据库类似,也是先判断是否表已经存在
-- 表的结构 create table 表名 ( 列名1(字段) 数据类型, 列名2(字段) 数据类型, -- 在列名之间是有逗号的,最后一个字段是不需要逗号的 列名3(字段) 数据类型 ) -------创建部门,职级、员工表------- if exists(select *from sys.objects where name ='表名' and type ='U') -- U表示是我们user使用者创建的 drop table 表明 -- 上述内容说明,如果是已经存在该表,那么就drop删除
我们创建部门、职级、员工表,在里面展示关键字,限制符,如default,check,unique等
创建部门表
-- 建表(部门,职级,员工) create table Department ( -- 部门编号,primary key表示主键,identity(1,1)表示自动增长,从1,开始,步长位1 DepartmentId int primary key identity(1,1), -- 部门名称 not null 表示该列不能有空值 DepartmentName nvarchar(10) not null, -- 部门描述 text 就是文本,可以存放大量的数据 DepartmentRemark text )
char、varchar、nvarchar、text的区别
-- 上述四种数据类型都是可以表示字符的 char 表示的是定长字符,-- char(10)表示十个字节的char,如果存放“abc” 那么所占的字节为10,不变的,在定义char的时候就已经固定 varchar 特点:变长字符串,-- 如果是varchar(10),存放数值为“abc” 那么所占字节为3 n:在char、varchar加上n,构成nchar、nvarchar 作用:存储unicode字符,对于汉字比较友好(使得汉字只占一个字节) -- char(10)只能存放10个字符或者是5个汉字 -- nchar(10)可以存放10个字符或者10个汉字 text:就是和文本一样的性质,可以存放大量的数据
创建职级表
-- 创建职级表,因为Rank是一个关键字,所以我们用[]来阔上, create table [Rank] ( -- 职级编号,primary key表示主键,identity(1,1)表示自动增长,从1,开始,步长位1 ` RankId int primary key identity(1,1), -- 职级名称 not null 表示该列不能有空值 RankName nvarchar(10) not null, -- 职级描述 text 就是文本,可以存放大量的数据 RankRemark text )
创建员工表
-- 外键的意思是:将其他表中的主键作为我的(该表)的字段(列) -- 下面People表,将部门id和职级id作为外键,前两id都是部门表和职级表的主键 -- 员工表的外键赋值内容是必须要在外键对应的主键的数值范围内的,比如部门表的部门id有1 2 3,那么就员工表中外键,部门id必须是1 2 3中的一个,否则报错 create table People ( PeopleId int primary key identity(1,1), DepartmentId int references Department(Department) not null -- 部门(引用外键)部门id references关联到Department表的Department列 实际上是外键,该表填写的 DepartmentId必须是和Department表中DepartmentId有的 RankId int references [Rank](RankId) not null,-- 职位id,同上,属于外键 PeopleName nvarchar(10) not null, PeopleSex nvarchar(1) default'男'check(PeopleSex = '男' or PeopleSex = '女') PeopleBirth smalldatetime not null,-- smalldatetime是范围比datetime小的时间数据单位 PeopleSalary decimal(12,2) check (PeopleSalary>=1000 and PeopleSalary<=15000), -- 表示浮点数的一个是float 一个是double,另外decimal(12,2)更加精确,表示的是一共12位数,小数点后保留2位 PeoplePhone varchar(20) unique not null,-- unique表示独一无二,使得这一列数据不能重复 PeopleAddress varchar(20), -- 地址 PeopleAddTime smalldatetime default(getdate()) -- 表示,如果没有输入,那就默认是当前时间,getdate()属于内置函数,直接可以使用,表示的是当前时间 )
总结
我们通过本文的学习,会创建一个数据库,会创建数据表,并对于sql语句有一个初步的了解和使用,这是我们本文的目的,我们创建好表格之后,就可以在后序添加、删除、更改数据做准备
本文关键字总结:
1.create(或者drop) database 数据库名 2.create(或者drop) table 数据表名 create和drop相对应,语法一样,分别是创建和删除数据库或者是数据表 3.exists:表示是否存在的意思,用于if语言判断数据库或者数据表是否已经存在 4.primary key :表示是主键 5.identity(1,1)表示自动增长,从1,开始,步长位1 6.not null 表示该列不能有空值 7.text 就是文本,可以存放大量的数据 8.references:表示关联,用于外键 9.default:默认值,表示如果没有输入数据,那就是使用该默认值 如:default'男' 10.check(PeopleSex = '男' or PeopleSex = '女'):check表示为限制在这(范围)内选择输入的数据 11.smalldatetime是范围比datetime小的时间数据单位 前者大概是表示最近百年,后者可以表示范围为上千年 12.表示浮点数的一个是float 一个是double,另外decimal(12,2)更加精确,表示的是一共12位数,小数点后保留2位 13.getdate()相当于C++中的内置函数,直接可以使用,表示的是当前时间