MySQL數據庫的知識
最近學習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 ‘張%‘
查找一個姓張的人
% 任意字符
_ 任意一個字符
{} 在範圍內的一個字符
{^} 不在範圍內的一個字符
MySQL數據庫的知識