文章目录
一、Mysql介绍
1、数据库介绍
数据库管理系统(DataBase-Management System,DBMS)由一个相互关联的数据的集合和一组用以访问这些数据的程序组成。这个数据集合通常称作数据库(database)。
2、关系型数据库
关系数据库基于关系模型,使用一系列表来表达数据以及这些数据之间的关系。MySQL就是关系型数据库。关系模型已经成为当今主要的数据模型,它比之前的的网络模型和层次模型简化了编程者的工作。现在开始流行的NoSQL,泛指非关系型的数据库。
3、Mysql初步了解
1、查看配置文件 :/etc/mysql/mysql.conf.d/mysql.cnf
2、查看Mysql服务:service mysql status/start stop
3、登录Mysql:
本地连接:mysql -u用户名 -p密码
例如:mysql -uadmin -p123456 (可以回车后再输入密码)
远程连接:mysql -hIP地址 -P端口 -u用户 -p密码
例如:mysql -h127.0.0.1 -uadmin -p123456
退出:exit
4、查看数据库
查看有哪些数据库: SHOW DATABASES;
进入某个数据库: USE xxx;
判断是否在哪个数据库里: SELECT DATABASE();
查看当前用户: SELECT user();
补充:
登录mysql并进入数据库:mysql -u用户 -p密码 -A 数据库名称;
二、数据库的基本操作
1、创建数据库
create database (if not exists) xxx;
2、删除数据库
drop database xxx
3、使用数据库
use xxx
4、查看目前使用的数据库
select database();
三、表操作(命令行都带上table)
1、查看数据库中的数据表
当前数据库中:show tables;
其他库中:show tables from xxx;
2、创建数据表
create table (if not exists) tb_name(
column_name data_type,
);
# column_name 字段名/列名
# data_type 字段类型(整型、字符串……)
例如:create table `tb1`(
`id` int,
`name` varchar(20) # 注意:是反引号,最后一句后面不能加逗号,
);
3、查看数据表信息
查看表结构:show create table tb_name;
查看表字段信息:describe tb_name; / desc tb_name;
4、删除表
drop table tb_name;
5、修改数据表
添加字段:add 字段名 字段类型
alter table tb_name add age int;
alter table tb_name add (age int, score int);
删除字段:drop 字段名
alter table tb_name drop score;
alter table tb_name drop score, drop age;
修改字段名:modify 字段名 新字段类型
alter table tb_name modify sex varchar(20);
修改字段名and字段类型:change 字段名 新字段名 新字段类型
alter table tb_name change sex sexs varchar(20);
修改表名:rename 新表名
alter table tb_name rename tb_n;
四、表数据的增删改查
1、增:insert into
写字段:insert into tb_nane (id,name,sex,age) values (1,"beidou",'男',18),(2,'moran','男',20);
不写字段:insert into tb_name values (1,"beidou",'男',18),(2,'moran','男',20);
2、查:select * from xxx
select * from tb_name;
select * from tb_name where id=2;
3、改:update xxx set 字段 where 条件
update tb_name set sex = '女' where id=2;
4、删:delete from xxx where 条件
delete from tb_name where id=2;
五、表约束(命令行也带上table,在表操作的基础下进行)
1、非空约束: not null
alter table tb_name modify names varchar(20) not null;
2、唯一约束:unique(xx)
alter table tb_name add unique(id);
删除:alter table tb_name drop key(id);
3、主键约束:primary key (xx); # 一个表只存在一个主键约束,且不能为空
alter table tb_name add primary key (id);
删除:alter table tb_name drop primary key;
4、自增约束:auto_increment
alter table tb_name change id id int not null auto_increment;
删除:alter table tb_name change id id int not null
5、默认约束:default xx
alter table tb_name alter sex set default '男';
字段可以有多个约束,但是主键约束只能存在一个
create table test(
id int primary key automent,
name varchar(20) not null,
age int default 18,
phone char(11) unique key
)auto_increment = 1000, charset = utf8; # 从一千开始递增
- CASCADE 删除包含与已删除键值有参照关系的所有记录
- SET NULL 修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的字段)
- RESTRICT 拒绝删除要求,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)
- NO ACTION 啥也不做
六、表关系
一对一关系: 如用户表对应用户的详细信息
一对多关系: 如一个学院当中,有若干学生
多对多关系: 如课程和学生之间,一个课程有很多学生,一个学生对应很多课程
# 创建学院表【一对多 一个学院可以有多个学生】
create table department(
d_id int primary key auto_increment;
d_name varchar(20) not null
);
# 学生表
create table student(
s_id int primary key auto_increment,
s_name varchar(20) not null,
dept_id int,
foreign key(dept_id) references department (d_id) on delete set null
);
# 创建学生详情表【一对一】
create table stu_detail(
sd_id int primary key auto_incremnt,
s_age int,
s_sex char(1) default '男',
stu_id int unique key,
foreign key (stu_id) references student (s_id)
);
# 创建课程表【多对多】
create table course(
c_id int primary key auto_increment,
c_name varchar(20)
);
# 创建中间表
create table stu_course(
s_id int,
c_id int,
primary key (s_id, c_id), # 创建联合主键
foreign key(s_id) references student(s_id), # 学生id对应中间表学生id
foreign key(c_id) references course (c_id) # 课程id对应中间表课程id
);

被折叠的 条评论
为什么被折叠?



