MYSQL数据管理

MYSQL数据管理

 

外键(了解即可)

 

MYSQL数据管理

 

 

 

方式一:创建表的时候,增加约束(麻烦,比较复杂)

 

MYSQL数据管理

 

 

 

方式二:创建表成功后,添加外键约束

 

-- 创建表的时候没有外键关系
alter table `student`
add constraint `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
-- alter table `表` add constraint `约束名` FOREIGN KEY(`作为外键的列`) REFERENCES 那个表(那个字段)

 

以上操作都是物理外键,数据库级别的外键,我们不建议使用(避免数据库过多造成困扰,这里了解即可~)

 

最佳实践:

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)

  • 我们想使用多张表的数据,想使用外键(程序去实现)

 

 

DML语言(重点!全部记住)

  • 添加

  • 修改

  • 删除

 

添加

 

insert

 

-- 插入语句(添加)
-- insert into 表名([字段1,字段2,字段3]) values(‘值1‘),(‘值2‘), (‘字段3‘) ...
INSERT INTO `grade`(`gradename`) VALUES(‘大四‘)
?
-- 由于主键自增我们可以省略(如果不写表的字段,他就会一一匹配)
INSERT INTO `grade`VALUES(‘大四‘) -- 直接报错!!!
?
-- 一般写插入语句,我们一定要数据和字段一一对应!
?
-- 插入多个字段
INSERT INTO `grade`(`gradename`) VALUES(‘大三‘),(‘大二‘)
?
INSERT INTO `student`(`name`) VALUES(‘张三‘)
?
INSERT INTO `student`(`name`,`pwd`,`sex`)
VALUES(‘张三‘,‘aaaaaa‘,‘男‘)
?
INSERT INTO `student`(`name`,`pwd`,`sex`)
VALUES(‘王五‘,‘bbbbbb‘,‘男‘),(‘李四‘,‘cccccc‘,‘男‘)
?

语法:

insert into 表名([字段1,字段2,字段3]) values(‘值1‘),(‘值2‘), (‘字段3‘)  ...

注意:

values后面的值要用单引号括起来,是单引号,不是漂!!!

 

注意事项:

  • 字段和字段之间使用英文逗号隔开

  • 字段是可以省略的,但是后面的值必须要一一对应,不能少

 

MYSQL数据管理

 

 

  • 可以同时插入多条语句,values后面的值,需要使用,隔开即可

    例如:values(),() ......

 

 

修改

update 修改谁(条件) set原来的值=新值

 

-- 修改学员名字,带了简介
UPDATE `student` SET `name`=‘鹏‘ WHERE id = 1
?
-- 不指定条件的情况下,会改动所有的表
UPDATE `student` SET `name`=‘鹏‘
?
-- 修改多个属性,逗号隔开
UPDATE `student` SET `name`=‘亚鹏‘,email=‘2098987739@qq.com‘ WHERE id=2
?
-- 语法:
-- update 表名 set colnum_name = value,[ colnum_name = value] where [条件]
?

 

条件:where子句 运算符 ID 等于某个值,大于某个值,在某个区间内修改 ........

操作符会返回布尔值

 

 

操作符 含义 范围 结果
= 等于 5=6 false
<>或!= 不等于 5<>6 true
>      
<      
<=      
>=      
between A and B 在某个范围内 [A,B]  
and 我和你&& 5>1 and 1>2 false
or 我或你|| 5>1 or 1>2 true

 

-- 通过多个条件定位数据
--UPDATE `student` SET `name`=‘亚鹏‘,WHERE `name`=‘鹏 ADD sex=‘女

 

语法:

update 表名 set colnum_name = value,[ colnum_name = value] where [条件]

 

注意:

  • colnum_name是数据库的列,尽量带上``

  • 条件,筛选的条件,如果没有指定,则会修改所有的列

  • value,是一个具体的值,也可以是一个变量

update `student` set `birthday`=current_time where `name`=‘鹏‘ and sex=‘男‘

 

  • 多个设置的属性之间,使用英文逗号隔开

 

删除

delete 命令

语法:delete from 表名 [where 条件]

-- 删除数据(避免这样写,会全部删除)
delete from student
?
-- 删除指定数据
delete from `student` where id = 1

 

truncate 命令

作用:完全清空一个数据表,表的结构和索引约束不会变!

-- 清空text表
truncate `text`

 

delete 和truncate的区别

  • 相同点:都能删除数据。不会删除表结构

  • 不同:

    • truncate 相当于重新设置,自增列和计数器会归零

    • truncate 不会影响事务

 

-- 测试delete和truncate的区别
建表:text
?
CREATE TABLE IF NOT EXISTS `text`(
   `id` INT(10) NOT NULL AUTO_INCREMENT
   `coll` VARCHAR(50) NOT NULL
   PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
?
?
?
INSERT INTO `test` (`coll`) VALUES(‘1‘),(‘2‘),(‘3‘) -- 插入数据
?
DELETE FROM `test` -- delete,不会影响自增
?
TRUNCATE TABLE `test` -- truncate,自增会归零
?
?

了解即可:delete删除的问题,删除之后重启数据库,会有几个现象

  • 如果引擎是innoDb,自增列会从一开始(存在内存当中的,断电即失)

  • 如果是MYISAM,继续从上一个自增量开始(存在文件当中的,不会丢失)

 

 

 

 

这一节的知识点多且重要,需细细思索并记忆!

每天进步一点点!

 

 

MYSQL数据管理

上一篇:西南林业大学:用宜搭打造智慧校园,节省百万费用


下一篇:linux安装python