首页 > 数据库 >【mysql】一些知识的补充

【mysql】一些知识的补充

时间:2022-11-28 01:45:03浏览次数:36  
标签:NULL 删除 补充 知识 -- student mysql table 主表

mysql8.0

1.创建数据库表

##这是一个单行注释
/*
多行注释
多行注释
多行注释
*/

/*
建立一张用来存储学生信息的表
字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息
*/
-- 创建数据库表:
create table t_student(
	sno int(6), -- 6显示长度 
	sname varchar(5), -- 5个字符
	sex char(1),
	age int(3),
	enterdate date,
	classname varchar(10),
	email varchar(15)
);

-- 查看表的结构:展示表的字段详细信息
desc t_student;

-- 查看表中数据:
select * from t_student;

-- 查看建表语句:
show create table t_student;
/*
CREATE TABLE `t_student` (
  `sno` int DEFAULT NULL,
  `sname` varchar(5) DEFAULT NULL,
  `sex` char(1) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `enterdate` date DEFAULT NULL,
  `classname` varchar(10) DEFAULT NULL,
  `email` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
*/

2.修改删除数据

-- 修改表中数据
update t_student set sex = '女' ;
update t_student set sex = '男' where sno = 10 ;
UPDATE T_STUDENT SET AGE = 21 WHERE SNO = 10;
update t_student set CLASSNAME = 'java01' where sno = 10 ;
update t_student set CLASSNAME = 'JAVA01' where sno = 9 ;
update t_student set age = 29 where classname = 'java01';
-- 删除操作:
delete from t_student where sno = 2;

3.修改删除数据库中的表

-- 查看数据:
select * from t_student;

-- 修改表的结构:
-- 增加一列:
alter table t_student add score double(5,2) ; -- 5:总位数  2:小数位数 
update t_student set score = 123.5678 where sno = 1 ;

-- 增加一列(放在最前面)
alter table t_student add score double(5,2) first;

-- 增加一列(放在sex列的后面)
alter table t_student add score double(5,2) after sex;

-- 删除一列:
alter table t_student drop score;

-- 修改一列:
alter table t_student modify score float(4,1); -- modify修改是列的类型的定义,但是不会改变列的名字
alter table t_student change score score1 double(5,1); -- change修改列名和列的类型的定义

-- 删除表:
drop table t_student;

4.外键、非外键约束

1.非外键约束

create table t_student(
        sno int(6) primary key auto_increment, 
        sname varchar(5) not null, 
        sex char(1) default '男' check(sex='男' || sex='女'),
        age int(3) check(age>=18 and age<=50),
        enterdate date,
        classname varchar(10),
        email varchar(15) unique
);
 
alter table t_student add constraint pk_stu primary key (sno) ; -- 主键约束
alter table t_student modify sno int(6) auto_increment; -- 修改自增条件
alter table t_student add constraint ck_stu_sex check (sex = '男' || sex = '女');
alter table t_student add constraint ck_stu_age check (age >= 18 and age <= 50);
alter table t_student add constraint uq_stu_email unique (email); 

2.外键约束

外键策略4种:no action、restrict(和no action一样,是默认策略)、set null、cascade

空、RESTRICT、NO ACTION

删除:从表记录不存在时,主表才可以删除,删除从表,主表不变。
更新:从表记录不存在时,主表菜可以更新,更新从表,主表不变。

CASCADE

删除:删除主表时自动删除从表。删除从表,主表不变。
更新:更新主表时自动更新从表。更新从表,主表不变。

ET NULL

删除:删除主表时自动更新从表为NULL,删除从表,主表不变。
更新:更新主表时自动更新从表值为NULL。更新从表,主表不变。

CREATE TABLE t_class (
	cno INT ( 4 ) PRIMARY KEY auto_increment,
	cname VARCHAR ( 10 ) NOT NULL,
room CHAR ( 4 ) 
);
CREATE TABLE t_student (
	sno INT ( 6 ) PRIMARY KEY auto_increment,
	sname VARCHAR ( 5 ) NOT NULL,
	classno INT ( 4 ),
	CONSTRAINT fk_stu_classno FOREIGN KEY ( classno ) REFERENCES t_class ( cno ) 
);
-- insert into t_class values (null,'1班',1)
-- insert into t_student values(null,'柽柳',1),(null,'王五',1)
alter table t_student add constraint fk_stu_classno foreign key (classno) references t_class (cno);
alter table t_student drop foreign key fk_stu_classno ;
alter table t_student add constraint fk_stu_classno foreign key (classno) references t_class (cno) on update cascade on delete cascade; -- 级联删除更新
alter table t_student add constraint fk_stu_classno foreign key (classno) references t_class (cno) on update set null on delete set null; -- 置空删除更新

5.复制表或者复制表结构(快速添加)

-- 快速添加,结构跟t_student一致,数据没有:
create table t_student3
as
select * from t_student where 1=2;

select * from t_student3;

-- 快速添加:只要部分列,部分数据:
create table t_student4
as
select sno,sname,age from t_student where sno = 2;

select * from t_student4;

-- 删除数据操作 :清空数据
delete from t_student;
truncate table t_student;

标签:NULL,删除,补充,知识,--,student,mysql,table,主表
From: https://www.cnblogs.com/blanset/p/16907503.html

相关文章

  • 在mysql bench 客户端链接mysql时 出现拒绝访问
    在mysqlbench客户端链接mysql时出现拒绝访问-----经过排查是因为新安装的系统centosstream9的防火墙是开启的,且默认端口3306是关闭的,需要对该端口号进行开放。就......
  • 第15节-MySQL用户权限
    1、用户管理1.1、查询用户usemysql--5.6以下的版本selecthost,user,passwordfromuser;--5.7以上的版本selecthost,user,authentication_stringfromuser;......
  • mysql添加远程连接功能
    有些情况,我们需要让测试服务器的本地数据库能被外部访问,方便本地数据库可视化工具对其数据的管理。但是,这也带来了一些风险,若被黑客知道了你的服务器IP和数据库账号密码,则......
  • 解决JDBC与Mysql中文乱码现象
    在用JDBC连接数据库进行打印输出的操作的时候,出现了中文乱码的问题。此时Mysql和网页状况如下:Mysql乱成一窝粥。网页的情况也是不容乐观……......
  • 网络编程及数据库MySQL总结
    目录网络编程并发知识网络编程知识网络编程软件开发架构计算机网络的相关专业名词OSI七层协议物理连接层数据链路层网络层传输层应用层socket模块黏包现象struct模块并发编......
  • MySQL进阶实战4,MySQL索引详解,下篇
    一、索引索引是存储引擎用于快速查找记录的一种数据结构。我觉得数据库中最重要的知识点,就是索引。存储引擎以不同的方式使用B-Tree索引,性能也各有不同,各有优劣。例如MyI......
  • MySql回表以及产生原因
    MySql回表以及产生原因在SQL优化里面经常提到,如在非主键索引的情况下尽量避免使用select*from;究其原因就是今天我要记录的Mysql回表查询。Mysql回表指的是在InnoDB存储......
  • MySQL进阶实战6,缓存表、视图、计数器表
    一、缓存表和汇总表有时提升性能最好的方法是在同一张表中保存衍生的冗余数据,有时候还需要创建一张完全独立的汇总表或缓存表。缓存表用来存储那些获取很简单,但速度较慢的数......
  • Redis这些知识你了解吗?
    Redis非关系型数据库一、关于Redis1.什么是NoSql?NoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,泛指非关系型的数据库.它们都有些共同的特征:不需要预定义......
  • Centos7 yum 安装mysql8.0
    1.去mysql官网下载yum存储库包https://dev.mysql.com/downloads/repo/yum/  这里本人很早之前就下载过,就不重复下载了 2.安装mysqlyum......