没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
13页
一文搞定MySQL基本命令1 数据库创建、选择、显示2 表操作—修改、删除、增加、创建3 数据操作—增 、删、 改4.数据完整性 ——4种约束5 复合约束6 外键约束7 级联删除/更新8 表查询9 连接方式10.函数11.小练习12.索引、视图13.索引14.储存过程15.流程控制16.触发器、事件17.事件18 事务19 安全管理20 数据库维护 1 数据库创建、选择、显示 创建数据库:create database ; 选择数据库:use ; 显示数据库:show databases; 显示数据库所有表:show tables; 显示某个表结构:show columns from ;
资源推荐
资源详情
资源评论
一文搞定一文搞定MySQL基本命令基本命令(更新中更新中)
一文搞定一文搞定MySQL基本命令基本命令1 数据库创建、选择、显示2 表操作—修改、删除、增加、创建3 数据操作—增 、删、 改4.数据完
整性 ——4种约束5 复合约束6 外键约束7 级联删除/更新8 表查询9 连接方式10.函数11.小练习12.索引、视图13.索引14.储存过
程15.流程控制16.触发器、事件17.事件18 事务19 安全管理20 数据库维护
1 数据库创建、选择、显示数据库创建、选择、显示
创建数据库:create database ;
选择数据库:use ;
显示数据库:show databases;
显示数据库所有表:show tables;
显示某个表结构:show columns from
; # 等价于 desc
;
2 表操作表操作—修改、删除、增加、创建修改、删除、增加、创建
# 创建表
CREATE TABLE ts1(
id int PRIMARY KEY auto_increment,
name VARCHAR(20),
birth DATE DEFAULT '1998-04-12'
)ENGINE INNODB DEFAULT charset=utf8 auto_increment = 1000;
DESC ts1;
#修改表的字段
ALTER TABLE ts1 MODIFY name VARCHAR(32);
#增加表的字段
ALTER TABLE ts1 ADD sex VARCHAR(4) DEFAULT '男';
# 删除表的字段
ALTER TABLE ts1 DROP COLUMN sex;
SELECT * FROM ts1;
# 删除表
CREATE TABLE ts2(num int PRIMARY KEY);
SELECT * FROM ts2;
DROP TABLE ts2;
DESC ts1;
3 数据操作数据操作—增增 、删、、删、 改改
#2.3.1数据增加
INSERT INTO ts1(name,birth)
VALUES ('张三','1999-2-14'),('李四','2001-4-12'),('王五','2004-12-4');
SELECT * FROM ts1;
INSERT INTO ts1 -- 必须按字段顺序对应插入值
VALUES (NULL,'赵六','1997-4-9');
-- 2.3.2 数据修改
UPDATE ts1 SET id = 1004 WHERE name = '张三';
SELECT * FROM ts1;
-- 2.3.3 数据删除
DELETE FROM ts1 WHERE id = 1004;
SELECT * FROM ts1;
-- -------
4.数据完整性数据完整性 ——4种约束种约束
#4.1 非空约束非空约束
CREATE TABLE ts2(
id INT NOT NULL
)ENGINE INNODB DEFAULT charset=utf8;
INSERT INTO ts2 VALUE(9);
INSERT INTO ts2 VALUE(2),(4);
SELECT * FROM ts2;
INSERT INTO ts2 VALUE(NULL); # [Err] 1048 - Column 'id' cannot be null
ALTER TABLE ts2 MODIFY id INT ;
INSERT INTO ts2 VALUE(NULL); # [Err] 1048 - Column 'id' cannot be null
DESC ts2;
ALTER TABLE ts2 MODIFY id INT NOT NULL; #[Err] 1138 - Invalid use of NULL value 已有空数据,不能改为非空已有空数据,不能改为非空
#4.2 唯一约束唯一约束
CREATE TABLE ts3 (
name VARCHAR(32) UNIQUE,
phone VARCHAR(11) NOT NULL
)ENGINE INNODB DEFAULT charset=utf8;
DESC ts3;
INSERT INTO ts3 VALUES('小红小红','18423484192'),('小蓝小蓝','24593823633');
SELECT * FROM ts3;
INSERT INTO ts3 VALUES ('小红小红','5920142852'); #Duplicate entry '小红小红' for key 'name'
ALTER TABLE ts3 MODIFY name VARCHAR(32) ; # 修改不了修改不了
DESC ts3;
#4.3 主键约束主键约束 = 非空非空+唯一唯一
CREATE TABLE ts4(
stu_id int PRIMARY KEY,
name VARCHAR(20) NOT NULL,
phone VARCHAR(11) UNIQUE
)ENGINE INNODB DEFAULT charset = utf8;
DESC ts4;
INSERT INTO ts4
VALUES (001,'曾勇勇曾勇勇','18401284022'),(002,'帅坤坤帅坤坤','2563424216');
SELECT * FROM ts4;
INSERT INTO ts4
VALUES(NULL,'邱楠邱楠',NULL); # Column 'stu_id' cannot be null 非空非空
INSERT INTO ts4
VALUES (002,'帅坤坤帅坤坤','132425155'); # Duplicate entry '2' for key 'PRIMARY' 唯一唯一
#DELETE FROM ts4 WHERE stu_id = 004;
#4.4 默认值约束默认值约束
CREATE TABLE ts7(id INT DEFAULT 3);
INSERT INTO ts7 VALUES();
SELECT * FROM ts7;
5 复合约束复合约束
#5.1 多字段的复合约束多字段的复合约束
CREATE TABLE ts5(
id int NOT NULL,
name VARCHAR(20),
phone VARCHAR(11),
CONSTRAINT name_phone unique(name,phone)
)ENGINE INNODB DEFAULT charset=utf8;
INSERT INTO ts5 VALUES(001,'小明小明','1782081024'),(002,'小花小花','1831236127');
SELECT * FROM ts5;
INSERT INTO ts5 VALUES(003,'小花小花','1831236127'); #报错:报错:Duplicate entry '小花小花-1831236127' for key 'name_phone'
INSERT INTO ts5 VALUES(004,'小明小明','1831236127'); #OK,只要,只要(name,phone) 这一组合唯一即可这一组合唯一即可
SELECT * FROM ts5;
#5.2 主键的复合约束主键的复合约束/联合约束联合约束
CREATE TABLE ts6(
num int PRIMARY KEY,
name VARCHAR(20),
CONSTRAINT num_name UNIQUE(num,name)
)ENGINE INNODB DEFAULT charset=utf8;
INSERT INTO ts6 VALUES(001,'kk'),(002,'mm');
SELECT * FROM ts6;
INSERT INTO ts6 VALUES(NULL,'uu'); # Column 'num' cannot be null 主键的非空约束主键的非空约束
INSERT INTO ts6 VALUES(002,'uu'); # Duplicate entry '2' for key 'PRIMARY' 主键的唯一约束主键的唯一约束
INSERT INTO ts6 VALUES(003,NULL); #成功,未设置非空,可为空成功,未设置非空,可为空
INSERT INTO ts6 VALUES(004,'kk'); # (num,name) 组合唯一即可组合唯一即可
#总结:对于有主键的复合约束,首先需满足主键的唯一与非空约束,这也限制了它们的组合唯一只有修改非主键的另一个字段值总结:对于有主键的复合约束,首先需满足主键的唯一与非空约束,这也限制了它们的组合唯一只有修改非主键的另一个字段值
6 外键约束外键约束
CREATE TABLE course(
course_id int PRIMARY KEY,
course_name VARCHAR(20) NOT NULL
)ENGINE INNODB DEFAULT charset=utf8;
DESC course;
CREATE TABLE student(
stu_id int PRIMARY KEY,
stu_name VARCHAR(20) NOT NULL,
course_id int not null,
constraint fk_std_cou foreign key(course_id)
references course(course_id)
)ENGINE INNODB DEFAULT charset=utf8;
INSERT INTO course VALUES(001,'C++'),(002,'Python'),(003,'Java'),(004,'C#');
SELECT * FROM course;
INSERT INTO student VALUES(1001,'小美小美',001),(1002,'小珍小珍',004);
SELECT * FROM student;
INSERT INTO course VALUES(1003,'小钟小钟',005); -- 尝试插入一条不存在的课程尝试插入一条不存在的课程id
-- error:Column count doesn't match value count at row 1
-- 删除外键删除外键
ALTER TABLE student DROP FOREIGN KEY fk_std_cou;
DESC student;
-- 增加外键增加外键
ALTER TABLE student ADD CONSTRAINT fk_std_cou FOREIGN KEY(course_id) REFERENCES course(course_id);
7 级联删除级联删除/更新更新
-- 7.1 CASCADE
CREATE TABLE course_cascade(
course_id int PRIMARY KEY,
course_name VARCHAR(20) NOT NULL
)ENGINE INNODB DEFAULT charset=utf8;
CREATE TABLE student_cascade(
stu_id int PRIMARY KEY,
stu_name VARCHAR(20) NOT NULL,
course_id int not null,
constraint fk_stu_cour foreign key(course_id)
references course_cascade(course_id)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE INNODB DEFAULT charset=utf8;
INSERT INTO course_cascade VALUES(001,'C++'),(002,'Python'),(003,'Java'),(004,'C#');
SELECT * FROM course_cascade;
INSERT INTO student_cascade VALUES(1001,'小美小美',001),(1002,'小珍小珍',004),(1003,'小钟小钟',002);
SELECT * FROM student_cascade;
#更新父表更新父表
UPDATE course_cascade SET course_id = 5 WHERE course_name = 'C++';
#UPDATE student_cascade SET course_id = 4 WHERE stu_id = 1001;
#删除父表中某项记录删除父表中某项记录
DELETE FROM course_cascade WHERE course_id = 2;
#--- cascade 总结:总结: 父表更新,子表也更新。父表更新,子表也更新。 父表中某项删除,子表中相关联项也删除父表中某项删除,子表中相关联项也删除
-- 7.2 NO action
CREATE TABLE course_no_action(
course_id int PRIMARY KEY,
course_name VARCHAR(20) NOT NULL
)ENGINE INNODB DEFAULT charset=utf8;
CREATE TABLE student_no_action(
stu_id int PRIMARY KEY,
stu_name VARCHAR(20) NOT NULL,
course_id int not null,
constraint fk_st_cou foreign key(course_id)
references course_no_action(course_id)
ON DELETE NO action
ON UPDATE NO action
)ENGINE INNODB DEFAULT charset=utf8;
INSERT INTO course_no_action VALUES(001,'C++'),(002,'Python'),(003,'Java'),(004,'C#');
SELECT * FROM course_no_action;
INSERT INTO student_no_action VALUES(1001,'小美小美',001),(1002,'小珍小珍',004),(1003,'小钟小钟',002);
SELECT * FROM student_no_action;
修改父表项修改父表项
UPDATE course_no_action SET course_id = 6 WHERE course_name = 'C#';
#Cannot delete or update a parent row: a foreign key constraint fails (`db_test`.
#`student_no_action`, CONSTRAINT `fk_st_cou` FOREIGN KEY (`course_id`) REFERENCES `
#course_no_action` (`course_id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
DELETE FROM course_no_action WHERE course_id = 4;
与上面报的错相同与上面报的错相同
SELECT * FROM course_no_action;
--- NO ACTION 总结:总结: 不允许修改或删除父表中的项不允许修改或删除父表中的项
-- 7.3 SET NULL
CREATE TABLE course_set_null(
course_id int PRIMARY KEY,
course_name VARCHAR(20) NOT NULL
)ENGINE INNODB DEFAULT charset=utf8;
CREATE TABLE student_set_null(
stu_id int PRIMARY KEY,
stu_name VARCHAR(20) NOT NULL,
course_id int , # 这里不设置为这里不设置为NOT NULL
constraint fk_studnet_course foreign key(course_id)
references course_set_null(course_id)
ON DELETE SET NULL
ON UPDATE SET NULL
)ENGINE INNODB DEFAULT charset=utf8;
INSERT INTO course_set_null VALUES(001,'C++'),(002,'Python'),(003,'Java'),(004,'C#');
SELECT * FROM course_set_null;
INSERT INTO student_set_null VALUES(1001,'小美小美',001),(1002,'小珍小珍',004),(1003,'小钟小钟',002);
SELECT * FROM student_set_null;
剩余12页未读,继续阅读
资源评论
weixin_38742291
- 粉丝: 5
- 资源: 915
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功