最近学习SQL数据库,以下是我对SQL的总结,有什么不足之处欢迎指出!
数据库文件:
数据库最多可以存32767个数据文件和32767日志文件
数据库文件可分为:主文件,次要文件,日志文件
作用 扩展名(简称)
主文件: 存储数据,启动信息 mdf 有且仅有一个
次文件: 存储主文件为存储的数据 ndf 可以有多个,可有可无
日志文件: 记录操作信息 ldf 有且仅有一个
数据库的三大范式 :
1。第一范式(1NF):最基本的范式
表中的 每个属性不可再分(不允许属性以集合,数组的形式存储)
2。第二范式(2NF )
在1NF的基础上,添加主键(主属性)
缺陷:可能出现数据冗余,不一致
3。第三范式(3NF)
在2NF的基础上,接触非主属性的依赖关系
数据库可分为三部分:
数据库操作语言:DML (Data Manipulation Language )
数据库定义语言:DDL(Data Definition Language)
数据控制语言:DCL(Data Contorl Language)
SQL语句规范:
1.以分号(,)结尾
2.SQL语句对大小不敏感,即不区分大小写(PS:插入到表格中的数据区分大小写,即"HI","hi"不同)
一。DDL管理数据库语句:
创建数据库
create datebase 数据库名
create database test;
创建表数据库
1.create table 表名(列名1 数据类型 约束....);
create table person
(name char(20) not null,
age int,
id char(20) primary key
);
2.create database 数据库名称
create database test;
使用数据库
use test;
查询表结构
sp_help;
alter 修改数据,添加,删除数据
1.在已有的表中添加新的列
alter table table_name add column_name typename
alter table person add birthday date;
2.修改已有的表中的列名的数据类型
alter table table_name alter column column_name typename
alter table person alter column birthday year;
ps:将列birthday的数据类型改为year
3.删除表中的已有的列
alter table table_name drop column column_name
alter table person drop column birthday;
ps:删除表中的列对表结构产生影响
drop 删除数据
1.drop database 数据库名称
drop database test;
2.drop table table_name
drop table person;
ps:数据库中drop是对表结构产生影响
二.DML 数据操作语言 对表中的数据进行操作
ps:主要的操作在这个地方
select语句
1.select 字段名 from table_name
select name from person;
2.查询所有数据
select * from person ;
insert语句
1.insert into 表名 values (值1,值2...)
insert int person values('张三',20,'江苏南京')
update语句
update 表名 set 列名=新值 where 列名=某值
update person set name='李四' where id='江苏南京'
delete 语句
1.delete from 表名 where 列名=值
delete from person where name='张三';
2.删除所有的数据
delete from table_name
delete * from person
或 delete from person
ps:删除表中所有的数据,但是表还存在,可以继续往里存储数据
distinct语句
select distinct 列名称 from 表名称
select distinct '江苏南京' from person
ps:去重,去重相同 "江苏南京" 的地址,只显示一次
sql约束
PS:用于限制加入表的数据的类型
主键非空且唯一
1.主键约束 (primary key)简称PK
2.外键约束(foreign key ) 简称 FK
3.非空约束(not null)简称NN
4.唯一约束(unique)简称UK
5.检查约束(check)简称CK
6.默认约束(default)
模糊查询
select * from person where name like '张%'
查找一个姓张的人
% 任意字符
_ 任意一个字符
{} 在范围内的一个字符
{^} 不在范围内的一个字符