数据库基本知识

一.数据库:数据的仓库
数据库管理系统:对数据的仓库管理的软件
创建数据库: create 数据库名
选择数据库:use 数据库名
删除数据库:drop database 数据库名

二.创建表基本格式
1.create table 表名

列名 数据类型 约束,
列名 数据类型 约束,

);
(1)数据类型:
在这里插入图片描述
**(2)表名和列名命名规则:**数字,字母,下划线,数字不能放在首位,不能使用关键字,不区分大小写
表名和列名命名规范化:多个单词之间使用下划线隔开,尽量不使用中文
(3)约束:
主键约束:表示行中对象的唯一,不允许为空
非空约束:值不能为空
check约束:(MYSQL不强制验证):对输入的内容进行验证
唯一约束(unique):值在表中列内容不能重复,可以输入null值
默认值约束:值不输入时使用默认值来代替
外键约束:在本表中不是主键,在另一个表中却是主键
例如:
create table users

userid int auto_increment,
username varchar(5) not null,
usersex char(1) check (usersex=‘男’ and usersex=‘女’,
userphone varchar(11) unique,
useraddress varchar(20) default ‘陕西西安’,
userbrithday date,
userage decimal(3,0),
userdes text
)default charset = ‘gbk’;
对上述表的说明:
auto_increment是让id默认值从1开始,每次增加1,如果遇到某些内容删除,不会回滚
在每一列的数约束 后面要加逗号,在最后一行不加逗号
在最后的括号外面要加分号;
2.删除表
drop table 表名;
三.基本操作及知识
DML(数据操纵语言)insert update delete select
(1)插入语句
insert into 表名 [(表字段列表)] values (值列表);
全插入的情况,列表字段可以省略
如:insert into users values(4,‘王五’,‘男’,‘110’,‘海南’,’ 2011-09-23’,8,null);
说明:其中的插入的值的顺序要和所建的表的物理顺序是一致的
全插入的情况,列表字端未省略
insert into users(userid,usersex,username,userphone,userbrithday,useraddress,userage,userdes)
values(5,‘女’,‘李霞’,‘112345’,’ 2012-04-23’,‘山东’,21,null)
说明:此种情况插入的顺序是和users对应,并不和物理表对应,users只需要写全物理表的列就行,不要求顺序
部分插入情况,列表字段不能省略,并且未插入的列必须为空
insert into users (userid,username) values(6,‘杜甫’);
多行插入时注意:不能使用自增效果
insert into 表名[(列字段列表)]
select 值列表 union
select 值列表 union
select 值列表 union

select 值列表
例如:
insert into users(userid,username,userphone)
select 7,‘王五’,‘1234’, union
select 8,‘三奇’,‘1234’, union
select 9,‘上官’,‘1234’, union
(2)表的复制:
复制结构和数据
create table newuser1 as select * from users;
复制数据
insert into newusers1 select * from users;
(3)修改语句
update 表名 set 列=值,列=值,…列=值,[where 条件];
例如:update newuser1 set usersex=‘男’,userbrithday=‘1991-02-04’,where userid=5;
(4)删除语句
delete 表名 set [where 条件];
删除一行数据
例如:delete from newusers1 where userid=3;
删除整个表的数据
例如:delete from newuser1;
删除整个表结构包括数据
例如:truncate table 表名;
说明:truncate,drop和delete三者的区别?
drop:删除表数据,可以直接删除,操作的是结构
delete:删除表结构,可以删除一行,多行和全行,会写日志,可以恢复
truncate:删除表数据,只能全部删除,在删除时,不写日志,不会恢复
效率:drop>truncate>delete
(5)数据完整性:准确可靠的信息
数据完整性:行唯一,加主键约束
域完整性:列的规范,加check约束
引用完整性:引用必须存在,加外键约束(维护关系)
自定义完整性:行业规范,行业具体的规则和规范
说明:对于多张表的外键关系
学生和班级情况,一个学生隶属于一个班级,在班级中有多个学生,学生和班级之间关系:M:1(多对一),不管是M:1还是1:M,关系的维护都是由M的一方维护,也就是说外键是加在M表中的
以下举例说明:
班级:班级编号,班级名称,班级状态
学生:学生编号,姓名,性别,出生日期,住址和状态
create table classinfo

classid int primary key auto_increment,
classname varchar(20) not null,
classstate int dafault 1
);
create table studentinfo
(
studentid int primary key auto_increment,
studentname varchar(20) not null unique,
studentsex char(1) check (studentsex=‘男’ and studentsex=‘女’),
studentbrithday date,
studentaddress varchar(100),
studentstate int default 1,
classid int,
constraint FK_abc foreigin key(classid) references classinfo(classid) );
添加外键时,外键可以为空,外建名可以和主键名一致,外键必须指向另一张表的主键
(6)修改表的结构
alter table (表名) add (列名,数据类型)
alter table (表名) modify (列名,数据类型)
alter table (表名) rename column (当前列名) to (新列名)
alter table (表名) drop ccolumn (列名)
alter table (表名) add constraint 外键名 foreign key (外键) refrences 引用表 (主键)
alter table (当前表名) rename to (新表名)
四.事务相关知识
数据库的事务(ACID)是指作为单个 逻辑工作单元执行的一系列操作,每一步操作都是一个事务,一句SQL语句也是一个事务,影响事务的是增删改操作
原子性:不可被分割的最小单元
一致性:如果多条SQL语句被设置在一起,要么一起成功,要么一起失败
隔离性:事务和事务之间不会相互影响的
持久性:事务已经完毕,会永久性的保存在磁盘中
MYSQL中是自动提交事务的,其他的数据库是手动的

在MYSQL中练习事务如下:
create table demo(did int primary key)
更改为非自动提交式的
set autocommit=0;
隐式事务
insert into demo values (1);
savepoint x1;
insert into demo values(2);
savepoint x2;
insert into demo values(3);
savepoint x3;
commit;
rollback;
select * from demo;
显式事务:
begin start transaction:开始事务,两者意思是相同的
commit:提交(事务结束)
rollback:回滚(事务结束)
rollback to xxx:回滚到选择的那个节点
savepoint xxx:保存节点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值