目录
1.Mysql数据库最基础的增删查改
1.1关于数据库的操作
1.2库中的增删查改
2.数据库奇奇怪怪的关系
2.1完整性约束
2.2触发器
1.Mysql数据库最基础的增删查改
1.1关于数据库的操作
基本教学:
1.使用create database命令创建数据库
2.使用use命令打开数据库
3.使用drop database命令删除数据库
4.使用show databases查询所有数据库
5.使用show tables查询库中的所有数据表
需要注意的问题:
1. 数据库名可以用中文也可以用英文
2.create database也可以写成CREATE DATABASE,大小写不限制
3.每一句命令后面都要加上分号,就像说话后要带上句号一样
//数据库的创建
create database 数据库名;
//数据库的打开
use 数据库名;
//数据库的删除
drop database 数据库名;
//查询库中的所有数据库
show databases;
//查询库中的所有数据表
show tables;
1.2库中的增删查改
基础教学:
1.创建一个用户表,拥有主键、名字、密码三个字段,其中 primary key auto_increment 代表了这个字段为主键,int(11)为数据库的int类型,char(255)为数据库的字符数组类型可存放字符串。
2.使用drop table命令删除用户表。
3.使用insert into xxx values命令插入用户表,NULL让系统自动匹配一个不会重复的主键
4.使用update xxx set命令修改用户表,配合上where字句达到筛选的效果
5.使用select *from命令查询用户表中的内容。
6.使用show create table命令查看用户表的结构
7.使用truncate table命令清空表数据
扩展:
1. 如果不想字段为 NULL 可以设置字段的属性为 NOT NULL,属性为NOT NULL的字段输入 NULL 则会报错
2.auto_increment 定义列为自增的属性,一般用于主键数值会自动+1
3.ENGINE 设置存储引擎,CHARSET 设置编码
4.查询中的*号代表全部的意思,可以去掉用其他列来进行代替,列用逗号分隔
5.插入中可以在表名后面添加列名,用逗号分隔代表只输入这些列的值,其他为空
需要注意的问题:
1.创建和插入中,列与列的数据要用逗号分割
2.字符串存入中需要在旁边添加两个单引号,例如'用户名'
//创建一个用户表
create table student(id int(11) primary key auto_increment,name char(255),password int(11));
//删除用户表
drop table student;
//插入用户表
insert into student values(NULL,'用户名',123456);
insert into student(name,password) values('张三',789);
//修改用户表
update student set name='bizideal' where id=1;
//查询表中的内容
select *from student;
select name from student;
//查看用户表的结构
show create table student;
| student | CREATE TABLE `student` (
`id` int NOT NULL AUTO_INCREMENT,
`name` char(255) DEFAULT NULL,
`password` int DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
//清空表数据
truncate table 表名;
2.数据库奇奇怪怪的关系
2.1完整性约束
基础教学:
MySQL中的外键(foreign key)_mysql foreignkey_从未完美过的博客
1.首先要确保约束的两个表已被创建且每一列对应的数据类型都是一致的
2.创建外键
创建外键的语法:
alter table 表名 add constraint 外键名 foreign key(外键字段名) references 外表表名(主键字段名) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]参数意义RESTRICT限制外表中的外键改动(默认值,也是最安全的设置)CASCADE跟随外键改动SET NULL设为null值NO ACTION无动作SET DEFAULT设为默认值
含义:
1.表名为主表的名字
2.外键名则是自己新建的用来留在主表的名称
3.外键字段名为在主表中参照的字段名,在下面示例中则是book_manage中的book_number
4.主表表名、外键名、外键字段名、外表表名(主键字段名)四个因素完成完整性约束,外键字段名被外表的主键字段约束,需要有外表主键字段名有的数据外键字段名才能有,不然会插入失败,在删除时则要将对应的外键字段名数据全部删完,才能山外表主键字段名的数据
books_mation表的内部结构
| books_mation | CREATE TABLE `books_mation` (
`book_number` int NOT NULL AUTO_INCREMENT, //从表主键
`book_name` varchar(50) DEFAULT NULL,
`book_type` varchar(50) DEFAULT NULL,
`press_name` varchar(50) DEFAULT NULL,
`author_name` varchar(50) DEFAULT NULL,
`price` int DEFAULT NULL,
PRIMARY KEY (`book_number`)
) ENGINE=InnoDB AUTO_INCREMENT=50648 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
books_manage 表的内部结构
| books_manage | CREATE TABLE `books_manage` (
`ID` int NOT NULL AUTO_INCREMENT, //主表主键
`book_name` varchar(50) DEFAULT NULL,
`book_state` varchar(50) DEFAULT NULL,
`user_name` varchar(50) DEFAULT NULL,
`user_sex` varchar(50) DEFAULT NULL,
`book_number` int DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `number` (`book_number`), //外键名为book_number
CONSTRAINT `number` FOREIGN KEY (`book_number`) REFERENCES `books_mation` (`book_number`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
//实例 设置books_manage为主表 books_mation为从表参照完整性约束
alter table books_manage
add constraint number
foreign key(book_number)
references books_mation(book_number)
2.2触发器
基础教学:
基本语法:
CREATE <触发器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>注意事项:
1.触发器主体为Mysql数据库语句,如果要执行多个语句,用BEGIN…END 复合语句结构2.触发器的名称,触发器在当前数据库中必须具有唯一的名称。如果要在某个特定数据库中创建,名称前面应该加上数据库的名称
3.INSERT:将新行插入表时激活 | DELETE: 从表中删除某一行数据时激活 | UPDATE:更改表中某一行数据时激活
4.BEFORE(之前) 和 AFTER(之后) 分别代表了,在触发他的语句之前执行还是之后执行
5.与触发器绑定的表明必须是永久性表,不能将触发器与临时表或视图关联起来,并且同一张表不能具有两个完全一模一样的触发时刻和时间的触发器
//触发器实例,sum_book为触发器名,books_mation为联系的表名,@sum=@sum+1为触发器主体
CREATE TRIGGER sum_book
BEFORE INSERT
ON books_mation FOR EACH ROW SET @sum=@sum+1