🔥MySQL一万字深度总结,基础+进阶(五),建议收藏。✨💖

198 阅读7分钟

💖✨MySQL一万字深度总结,基础+进阶(五)

这是我参与 8 月更文挑战的第 6 天,活动详情查看: 8月更文挑战

👨‍🎓作者:Java学术趴

🏦仓库:GithubGitee

✏️博客:CSDN掘金InfoQ云+社区

💌公众号:Java学术趴

🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。

🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。

☠️每日毒鸡汤:不要期待,不要假想,不要强求,顺其自然,如果注定,便一定会发生

👋大家好!我是你们的老朋友Java学术趴,今天继续给大家分享小编精心为大家整理的一万字MySQL数据库核心知识、在接下来的几天为大家持续分享,💘关注不迷路呦!!!💘。数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。数据库是一个按数据结构来存储和管理数据的计算机软件系统。🦄

1.建表语言的语法格式

1.1 建表语言的语法格式

creat table 表名(
  字段名1 数据类型,
  字段名2 数据类型,
  字段名3 数据类型,
  ...
);

1.2 关MySQL当中字段的数据类型,以下只说常见的

1.3 char 和 varchar 怎么选择

  • 在实际开发中,当某个字段中的数据长度不发生改变的时候,是定长,例如;性别、生日等都是采用char;
  • 当一个字段的书库长度不确定,例如 :简介、姓名都是采用的 varchar

1.4 表明在数据库当中一般建议以 : t_ 或者 tbl_ 开始

1.5 实现案例 :创建学生表

学生信息包括:学号、姓名、性别、班级编号、生日

  • 学号 : bigint
  • 姓名 : varchar
  • 性别 : char
  • 班级编号 : int
  • 生日 : char

创建学生表语言格式:

create table t_student(
    no bigint,
   name varchar(255),
   sex char(1),
   classno varchar(255),
   birth char(10)
); 

1.6 删除t_student表

注意 : 当这个表存在的时候删除掉。

drop table if exists t_student;

2. insert插入数据

2.1 语法格式 :

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

要求 : 字段的数量和值的数量相同,并且数据类型要对应相同。

2.2 实现案例:向 t_student表中插入数据

2.2.1 按照建表时字段名的顺序进行插入

第一步 :插入数据

insert into t_student(no,name,sex,classno,birth) values(1.'zhangsan’,'1','gaosan3ban');

第二步 :查看插入后的数据

select * from t_student;

2.2.2 不按照建表时字段名的顺序进行插入

第一步 :插入数据

insert into t_student(name,sex,classno,birth,no) values('lisi','1','gaosan3ban','2020-01-02',2);

第二步 :查看插入后的数据

select * from t_student;

2.2.3只插入部分字段的数值 (一个字段或者多个字段)

第一步 :插入数据

insert into t_student(name) values('wangwu');

第二步 :查看插入后的数据

select * from t_student;

注意 : 除了name字段以外,其他的字段自动插入NULL。

2.3 删除 t_student 这张表

当这个表存在的话删除

drop table if exists t_student;

2.4创建包含默认值的 t_student 表

 create table t_student(
    no bigint,
   name varchar(255),
   sex char(1) default 1,
   classno varchar(255),
   birth char(10)
); 

看此时的表结构,发现 sex 字段中的 Default有默认值1

desc t_student;

第一步 :插入数据

insert into t_student(name) values('zhangsan');

第二步 :查看数据

select * from t_student;

上表注意 :此时并没有输入 sex 的值,建表的时候将sex赋值为1 所以在sex中存在默认值 1

关于insert语句的注意 :

  • 当一条insert语句执行成功之后,表格当中必然会多出一行记录。
  • 即使多的这一行记录当中有某些字段是NULL,后期也没有办法在执行insert语句插入数据
  • 只能使用 update 进行更新。

2.5 省略的 insert 查询语句

insert into t_student values(4,'lisi','1','gaosan3ban','2020-01-02');

insert into t_student values(2,'wangwu','1','gaosan3abn');

此时输入的字段值数量不够,会报错。

注意 :

  • 字段可以省略不写,但是后面的value对数量和顺序都有要求。
  • 这个省略了字段名称,直接输入的就是字段的值。
  • 输入字段值的时候一定要注意输入字段值的顺序要和表中的字段顺序保持一致。

2.6 一次插入多行数据

insert into t_student(no,name,sex,classno,birth) values(3,'wangwu','1','gaosan3ban','2020-01-02'),(5,'zhouliu','0','gaosan2ban','2020-02-03');

\

3. 表的复制以及批量插入

3.1 表的复制语法:

creat table 表名 as select语句;
将查询的结果常见出来。

3.2 将整张表进行复制

第一步 : 创建一个新表并进行复制整张表的字段

create table emp1 as select * from emp;

第二步 : 查看表的结构

desc emp1;

第三步 : 查看表中的数据

select * from emp1;

重点 : 此时发现 emp1 表的数据完全 copy的就是 emp 表的数据

3.3 对某张表的部分字段进行复制

第一步 : 创建一个新表并进行复制某张表的部分字段

create table emp2 as select ename,sal from emp;

第二步 : 查看表结构

desc emp2;

第三步 : 查看表中的数据

select * from emp2;

重点 : 此时的emp2表只是复制了 emp 表的ename,sal字段的数据。

3.4 将查询结果插入到一张表中

第一步 : 创建一个新表并进行复制

create table dept1 as select * from dept;

第二步 : 查询表的结构

desc dept1;

第三步 : 查询表的数据

select * from dept1;

第四步 : 向 dept1 中插入数据

insert into dept1 select * from dept;

第五步 : 查看表中的数据

select * from dept1;

重点 :

  • 在创建表的时候复制的就是dept,其中已经有了一份dept的数据
  • 并且在插入数据的时候使用的还是dept表中的数据,所以此时dept1中的数据有两份

4. 修改数据 (update)

4.1 语法格式 :

update 表名 set 字段名1=值1,字段值2=值2...where 条件;

注意 : 没有条件整张表数据全部更新。

4.2 实现案例 :将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU;

第一步 : 修改数据(loc字段和dname字段,只修改10部门的数据)

update dept1 set loc = 'SHANGHAI',dname = 'RENSHIBU' where deptno = 10;

第二步 : 查看数据

select * from dept1;

重点 :语句意思,将10部门的loc改为SHANGHAI,dname改为RENSHIBU;

注意 :一定要注意连接两个字段的是英文下的逗号,而不是and

4.3 更新所有记录

第一步 :修改全部数据(修改loc字段和dname字段,全部部门都修改)

update dept1 set loc = 'x',dname = 'y';

第二步 : 查看数据

select * from dept1;

5. 删除数据 (delete)

5.1 语法格式

delete from 表名 where 条件;

注意 : 没有条件全部删除

5.2 实现案例 : 删除10部门数据

第一步 : 删除 10 部门的数据

delete from dept1 where deptno = 10;

第二步 : 查看数据

select * from dept1;

5.3 删除所有数据

delete from dept1;

5.4 怎么删除大表(重点)

// 表被截断,不可回滚。永久丢失,删除表中的数据马,表结构还在

truncate table 表名;

5.5 删除整个大表,包括表结构和数据

drop table 表名; 通用的删除表语言 drop table if exists 表名; mysql中特有,oracle中不存在

6. 表的结构修改

  • DQL(select)
  • DML(insert delet update)
  • DDL(create drop alter)

修改表结构的语句不会出现在java代码中,出现在java代码当中的sql包括:insert、delete、update、select(这些都是表中的数据操作)

增删改查有一个术语 : CRUD操作

  • Creat (增)
  • Retrieve (检索)
  • Update (修改)
  • Delete (删除)

今天就先分享到这里,明天继续给大家分享,关注不迷路呦,我们明天见😊。
以上项目的源代码,点击星球🌍进行免费获取 星球(Github地址)如果没有Github的小伙伴儿。可以搜索🔍微信公众号:Java学术趴,📭发送MySQL,免费给发给大家项目源码,代码是经过小编亲自测试🔧的,绝对可靠,免费拿去使用。

--------💘看完的大佬们可以关注一下小编,会一直更新小技巧,免费分享给大家呦!!!💝---------

点击🌍星球可快速进入小编的Github星球呦!!里边还有更多好玩的技术,等待大家去探索呦💪!!