刚刚了解mysql数据库,自己觉得很难学会,但是再难咱们还是要攻克它。
一、数据库包括关系型数据库和菲关系型数据库。
mysql数据库时关系型数据库管理系统。
1、登录数据库
mysql -u root -p密码
#注意:这块-p后面没有空格
2、登进去之后查看服务器里面所有的数据库
show database;
3、在数据库服务器中创建数据库
create database test;
4、使用服务器中某一个数据库
use test;
5、查看test数据库中的所有数据表
show tables;
6、创建一张表
create table pet(
id int,
name varchar(20),
country varchar(20),
city varchar(20)
);
7、查看数据表具体的结构
describe pet;
到查看数据表结构这块就扯到了mysql类型
8、mysql支持多种类型,大致可以分为三类:
数值、日期/时间、字符串(字符)类型
增加:insert
删除:delete
修改:update
查看:select
9、往创建好的数据表中添加数据记录
insert into pet values(1,‘张三’,‘中国’,‘河北’);
insert into pet values(2,‘李四’,‘中国’,‘湖南’);
10、把创建的pet表的表头city换成sex
alter table pet change city sex varchar(20);
语法:alter table 表名 change 之间的表头 想换之后的表头 数据类型
11、修改数据表中的数据
updata pet set name=‘王五’ where sex=‘湖南’;
12、删除表中的数据
delete from pet where name=‘张三’;
二、mysql建表约束
mysql建表约束有主键约束、自増约束、唯一约束、非空约束、默认约束和外键约束
1、主键约束
它能够唯一确定一张表中的一条记录,也就是我们通过给某个字段添加约束就可以使得该字段不重复也不为空。
1.1 创建主键约束id的数据表user
create table user(
id int primary key,
name varchar(20)
);
1.2 查看user数据表结构
describe user;
会在Key那一栏看到id对应的是PRI
1.3 插入数据
insert into user values(1,‘张三’);
此处不给/重复id值就会报错。
1.4 联合主键
主要联合的主键加起来不重复就可以了。联合主键里面任何字段都不能为空。
1.5 创建一个主键约束id和name的数据表user1.
此时user1中id,name统称为联合主键。
create table user(
id int,
name varchar(20),
password varchar(20),
primary key(id,name)
);
1.6 添加数据
insert into user1 values(1,‘张三’,‘123’);
insert into user1 values(2,‘张三’,‘123’);
2、自增约束
与主键搭配起来使用,可以自动管理对于id值的约束
2.1 创建数据表user2
create table user2(
id int primary key auto_increment,
name varchar(20)
);
2.2 添加数据
insert into user2 values(1,‘张三’);
insert into user2 (name) values(‘李四’);
2.3 查表
select * from user2;
2.4 创建表时忘记创建主键约束,怎么办?
create table user3(
id int,
name varchar(20)
);
alter table user3 add primary key(id);
或alter table user3 modify id int primary key;
2.5 删除添加的主键约束
alter table user3 drop primary key;
3、唯一约束
约束修饰的字段的值不可以重复
3.1 建表
create table user4(
id int,
name varchar(20)
);
3.2 给user4添加唯一约束
alter table user4 add unique(name);
alter table user4 modify name varchar(20) unique;
3.3 添加数据
insert into user4 values(1,‘张三’);
如果再添加这样一条数据就会报错。
3.4 也可以在建表的时候直接添加唯一约束
create table user5(
id int,
name varchar(20),
unique(name)
);
3.5 也可以给两个字段同时添加唯一约束,只是在Key那块发生变化。
从NUI变成MUL
3.6 删除唯一约束
alter table user4 drop index name;
4、非空约束not null
修饰的字段不能为空NULL
4.1 创建表
create table user6(
id int,
name varchar(20) not null
);
4.2 添加数据
insert into user6 values(1,‘李四’);
insert into user6 (name) values(‘王五’);
insert into user6 (id) values(2); //这样写就会报错
5、默认约束
就是当我们插入字段值的时候,如果没有传值,就会使用默认值。
5.1 建表
create table user7(
id int,
name varchar(20),
age int default 20
);
可以通过desc user7查看到。
5.2 插入数据
insert into user7 (id,name) values(1,‘赵四’);
5.3 传了值就不会使用默认值
insert into user7 values(2,‘富贵’,30);
6、外键约束
涉及到两个表:父表(主表)、子表(副表)
6.1 创建班级表
create table classes(
id int primary key,
name varchar(20)
);
创建学生表
create table students(
id int primary key,
name varchar(20),
class_id int,
foreign key(class_id) references classes(id)
);
解释:
class_id int,//要与班级表中的id类型相同
foreign key(class_id) references classes(id) //做了一个绑定,学生表中class_id字段必须来自班级表id。
6.2 插入数据
insert into classes values(1,‘一班’);
insert into classes values(2,‘二班’);
insert into classes values(3,‘三班’);
insert into classes values(4,‘四班’);
insert into students values(1001,‘张三’,1);
insert into students values(1002,‘张三’,2);
insert into students values(1003,‘张三’,3);
insert into students values(1004,‘张三’,4);
6.3 副表添加数据时是参照主表来添加的,主表里面不存在的数据,副表添加会报错。
insert into students values(1005,‘张三’,5);
报错的原因是因为外键约束失败了。
6.4结论
1、主表(父表)classes中没有的数据值,在副表(子表)中是不可以使用的。
2、主表中的记录被副表引用,是不可以被删除的。
delete from classes where id=4;
删除不了是因为副表正在使用主表的数据,如果删除之后副表的(1004,‘张三’,4)这个人没有地方可放置。
只有从副表中把数据删掉之后才能从主表中去删除。
delete from students where id=1004;
delete from classes where id=4;