MySql之表的增删改查

alter table t_test1 add name 数据类型

删除列

alter table t_test1 drop name

  1. 对于表进行相关的操作

创建表(create table)

删除表(drop table)

修改表(alter table)

  1. 对表相关的操作 DDL语言
  • 描述表结构

describe 【数据库名.]表名称;

desc t_test1;

  1. 修改字段列的类型( 该列不能有数据 )

alter table 表名 modify 列名 类型;

例:

alter table student modify age int;

  1. 修改字段/列名

alter table 【数据库名.]表名称 change【column】 旧字段名 新字段名 新数据类型;

例:

alter table student rename column address to addr

  1. 追加新的列

alter table 表名 add 列名 类型 约束 默认值;

例:

alter table student add email varchar(59) not null;

  1. 修改表名

alter table 表名 rename 新表名;

5、表的销毁删除

  • 语法:

drop table [if exists] 表名;

drop table table_name;

例:

drop table t_person;

注意:如果两张表有外键引用关系,那么必须先删子表,后删父表

5、表的总结

1.创建表:create 修改表:alter 删除表:drop

2.对表的相关操作DDL语言

三、操作数据

=========================================================================

1、添加数据

  • 语法:

insert into table_name(field1,列名,列名,…)

values(value1,值,值,…);

例:

insert into

t_person(person_id,person_name,age,sex,birthday,salary,mobile,address)

values(1,‘xiaohei’,18,‘M’,‘2000-12-23 12:30:30’,10000.00,‘187xxxxxxx’,‘郑 州硅谷’);

注意:

  1. values后小括号中的值要和表名后小括号对应!!!

  2. 注意类型与约束

  • 给所有列添加数据,表名后的小括号可以省略

  • 语法:

insert into 表名

values(值,值,值,…);

例:

insert into t_person

values(2,‘xiaobai’,18,‘F’,‘2000-12-23 12:30:30’,12000.00,‘185xxxxxxx’,‘郑 州硅谷’);

注意:values前后两个括号中的值 数量要一致

  • 主键是自动增长,mysql自动填充值,不建议认为指定id值!

insert into user(name,nick,birthday) values (‘Mr_lee’,‘zz22’,‘2000-01-01’);

  • 一次插入多条数据【常用】

insert into user9 (name,nick,birthday) values (‘Mr_lee’,‘zz22’,‘2000-01-01’),

(‘Mr_lee’,‘zz33’,‘2000-01-01’),

(‘Mr_lee’,‘zz44’,‘2000-01-01’)

  • 省略列名插入,要求values中必须是完整的列对应的值**[不建议]**

insert into user9 values (1,‘Mr_lee’,‘zz’,‘2000-01-01’)

2、删除数据

语法:

delete from 表名

[where 条件];

#全表数据全删除

delete from t_test1

#根据id删除某些行的数据

delete from t_test1 where id = 10;

delete from t_test1 where id in (1,2,3);

例·:

delete from t_person

where person_id = 1;

注意:不加条件,则删除表中所有数据。

  • 删除所有数据

表截断:truncate table 表名;//删除表中所有数据

表截断:直接在物理空间中,将保存数据的空间截断,效率更高

delete from 表:一行一行的删除,效率比较低。

3、修改数据

  • 语法:

update 表名

set 列名 = 新值,列名=新值,…

[where 条件];

update table_name

set field1=new_value1,field2=new_value2

where…

注意 :更新数据时务必指定where条件,否则将会影响所有行的值。

  • 更新id为1的用户的姓名为Mr_lee

update user9

set name=‘Mr_lee’

where id=1;

update user9 set

name=‘xiaohei’,

age=30

where id = 20;

  • 更新所有人的姓名**(慎用)**

update user9

set name=‘Mr_lee’ ;

例:

update t_person

set age = 20,sex = ‘F’

where person_id = 1;

注意:不加where条件,则更新所有行。

4、数据操作的总结

1:数据操作语言

2:数据操作语言:DML Data modify language

3:

DQL:查询语句

DDL:建表相关语句 create alter drop

DML:数据操作语言数据插入 insert 数据修改update 数据删除delete

4:数据库中的增删改查(CRUD) create read update delete

增:insert into

删:delete from

改:update set

查:select

四、外键(Foreign Key)

====================================================================================

  • 概念:外键也是一种约束,主要用于说明该列与其他列的关系。

  • 分析如何让多张表产生关系

表结构:

在student表中增加一列,该列只用于让两张表产生关系:

我们通过student表中的class_id 就可以准确的找到另一张表与它有关系的数据。

该列的数据必须来源于 class 表中的 id 是一种约束

例:

– 外键约束,必须使用表级约束方式定义 表级约束:constraint

create table t_class(

class_id int primary key,

class_name varchar(20) not null );

create table t_student(

student_id int primary key,

student_name varchar(20) not null,

class_id int not null,

– 追加外键(关系列)

constraint fk_student_class foreign key(class_id)

references t_class(class_id) )

** 我们一般把有外键的表称之为子表(从表),被指向的表称之为父表(主表) **

外键:体现2张表之间关系的。

外键约束 表达 外键列的值必须来源于另一张表的主键

create table t_dept(

id int primary key,

dept_name varchar(12),

dept_code int

);

create table t_employee{

id int primary key,

name varchar(12),

age int,

salary double,

dept_id int,

foreign key(dept_id) references t_dept(id)

}

注意:

1、外键列的值可以重复、可以为null。

2、建表时应该先创建主表再创建从表

3、删除主表数据时如果该数据被从表指向,

必须先解除关系(update ,delete),再删除主表数据。

五、事务(Transaction)

====================================================================================

  • 作用:保证业务的完整性,要么一起成功要么一起失败

  • 例:转载业务

思考:完整的业务需要执行两次更新操作,但如果第二次更新失败呢?

1、事务的控制

  • 概念:我们在一个事务中,可以使用控制事务语句来控制提交所有操作或者回到事务最初状态、

  • transaction 事务 [trænˈzækʃn]

| 控制事务语句 | 作用 |

| — | — |

| start transaction | 开启事务 |

| commit | 提交 |

| roolback | 回滚(数据还原到事务开始时的状态) |

  • 概念:我们在一个事务中,可以使用控制事务语句来控制提交所有操作或者回到事务最初状态

例:

程序员误删数据:

delete from t_account;–忘记写

rollback; --回到事务最初状态

2、回滚段

  • rollback

  • commit

  • rollback为什么能够把数据恢复初始状态?

  • 概念:

数据库为每个客户端连接分配的独立区域,当执行insert|update|delete

操作时会暂时将原数据存储到回滚段中,

如果事务失败将会进行回滚(rollback)。

实现原理:

3、事务的特性【面试】ACID

| 特性 | 含义 |

| — | — |

| 原子性A (Atomicity)

[ˌædəˈmɪsədi] | 保证一组sql语句一起成功一起失败,原子操作。 |

| 一致性C (Consistency )[kənˈsɪstənsi] | 事务执行前后,数据的状态是一致的,是正确的。(老公存,老婆花) |

| 隔离性I

(Lsolation) | 保证用户并发访问数据安全,一个连接一个事务。 |

| 持久性D

(Durability)

[ˌdʊrəˈbɪləti] | 一个事务一旦提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响 。 |

  • 隔离性,加锁

  • 一致性

六、SQL分类

==========================================================================

| 类别 | 含义 | 事务 |

| — | — | — |

| DQL(Data Query Language) | 数据查询语言 select | 支持 |

| DDL(Data Definition Language) | 数据定义语言 create,alter,drop | 隐式提交 |

| DML(Data Manipulation Language) | 数据修改语言 insert,update,delete | 显式提交 |

| TCL(Transaction Control Lanager) | 事务控制语言 commit,rollback。 | |

七、主键自增&列的附加值

===============================================================================

  • 作用:生成一段连续的不可重复的数值,每次+1,一般用于生成主键值。

使用方法:

  1. 建表时指定主键为自动增长

语法

可在建表主键后使用 AUTO_INCREMENT ,插入数据时可以不用插入主键的值,自动生成

例:

create table t_person(

person_id int primary key auto_increment,

person_name varchar(50) unique not null, – 略…

);

插入数据时不必插入主键的值,自动增长

例:

insert into t_person(

person_name,age,sex,birthday,salary,mobile,address)

values(‘xiaohei23’,18,‘M’,‘2000-12-23 12:30:30’,10000.00,‘187xxxxxxx’,‘郑州硅谷’);

注意:在sql语句执行时,无论成功与否 auto_increment 都会自动+1

  1. 指定 auto_increment 起始值

语法

alter table 表名 auto_increment = 起始值

为表中所有使用了auto_increment 自增功能的列,指定起始值

  1. 获取auto_increment当前值

语法:

select last_insert_id()

1、auto_increment

create table t_dept1(

id int primary key,

dept_name varchar(12),

dept_code int

);

insert into t_dept1 (id,dept_name,dept_code) values (1,‘dev’,‘001’);

insert into t_dept1 (id,dept_name,dept_code) values (2,‘dev’,‘001’);

create table t_dept1(

id int primary key auto_increment, // 主键自动增长

dept_name varchar(12),

dept_code int

);

insert into t_dept1 (dept_name,dept_code) values (‘dev’,‘001’); mysql 自动的为id 设置值 为1

insert into t_dept1 (dept_name,dept_code) values (‘dev’,‘001’); id+1 —> 2

2、列默认值

create table t_dept2(

id int primary key auto_increment,

dept_name varchar(12) default ‘xiaohei’,

dept_code int

);

insert into t_dept2 (dept_code) values (1);

MYSQL

假定 id 5

id dept_name dept_code

6 xiaohei 1

3、表附加值
  • engine 引擎选择:一般使用innodb

  • default charset 表中的数据编码格式

1、建库最好选择字符集utf-8建表时会继承库的字符集

2、如果建库时没有选择字符集,则建表必须设置字符集,否则会出现中文乱码

3、建议将my.ini配置文件中的字符集更改为utf8则数据库将会继承配置中的字符集`

  • auto_increment 自增长列的起始值

create table t_xxx(

name varchar(12) xxx xxx

)xxxx;

create table user9(

id int auto_increment primary key,

name varchar(20) NOT NULL DEFAULT ‘Mr_lee’,

nick varchar(15) UNIQUE,

birth timestamp

)

ENGINE = InnoDB default charset = utf8 auto_increment = 9;

八、视图

=======================================================================

  • 作用:把查询(select)结果存储在数据库中并重新命名,方便重复使用。

1、创建视图

  • 语法:

create view v_user as 查询SQL;

例:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
作用:把查询(select)结果存储在数据库中并重新命名,方便重复使用。

1、创建视图

  • 语法:

create view v_user as 查询SQL;

例:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-lKynDwxJ-1712177628883)]

[外链图片转存中…(img-SPdIxvZG-1712177628883)]

[外链图片转存中…(img-vxZTvV6v-1712177628884)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

[外链图片转存中…(img-RreVjSXm-1712177628884)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值