alter table t_test1 add name 数据类型
删除列
alter table t_test1 drop name
- 对于表进行相关的操作
创建表(create table)
删除表(drop table)
修改表(alter table)
- 对表相关的操作 DDL语言
- 描述表结构
describe 【数据库名.]表名称;
desc t_test1;
- 修改字段列的类型( 该列不能有数据 )
alter table 表名 modify 列名 类型;
例:
alter table student modify age int;
- 修改字段/列名
alter table 【数据库名.]表名称 change【column】 旧字段名 新字段名 新数据类型;
例:
alter table student rename column address to addr
- 追加新的列
alter table 表名 add 列名 类型 约束 默认值;
例:
alter table student add email varchar(59) not null;
- 修改表名
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’,‘郑 州硅谷’);
注意:
-
values后小括号中的值要和表名后小括号对应!!!
-
注意类型与约束
-
给所有列添加数据,表名后的小括号可以省略
-
语法:
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
====================================================================================
-
概念:外键也是一种约束,主要用于说明该列与其他列的关系。
-
分析如何让多张表产生关系
表结构:
在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),再删除主表数据。
====================================================================================
-
作用:保证业务的完整性,要么一起成功要么一起失败
-
例:转载业务
思考:完整的业务需要执行两次更新操作,但如果第二次更新失败呢?
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] | 一个事务一旦提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响 。 |
- 隔离性,加锁
- 一致性
==========================================================================
| 类别 | 含义 | 事务 |
| — | — | — |
| 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,一般用于生成主键值。
使用方法:
- 建表时指定主键为自动增长
语法
可在建表主键后使用 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
- 指定 auto_increment 起始值
语法
alter table 表名 auto_increment = 起始值
为表中所有使用了auto_increment 自增功能的列,指定起始值
- 获取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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。
所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份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获取)
最后
现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。
所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。
[外链图片转存中…(img-RreVjSXm-1712177628884)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!