mysql - alter语发

本文详细介绍了如何在MySQL中使用ALTER TABLE进行字段的添加、删除、位置调整和类型变更,包括示例操作与注意事项。从创建表开始,逐步演示了如何维护数据库结构的灵活性。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

select version();

-- 5.7.31-log

-- mysql - alter的运用

use mysql_study;

drop table if exists `test_alter`;

create table if not exists `test_alter`

(

    `id` int unsigned auto_increment,

    `name` varchar(50),

    `pwd` char(48),

    `add_time` date,

    primary key(`id`)

)engine = innodb default charset=utf8;

show columns from `test_alter`;

-- 添加字段

alter table `test_alter` add `test` tinyint;

show columns from `test_alter`;

-- 删除字段

alter table `test_alter` drop `test`;

show columns from `test_alter`;

-- 添加字段并位于第一列或者某一列之后

alter table `test_alter` add `field_one` int first;

show columns from `test_alter`;

alter table `test_alter` add `after_pwd` tinyint after `pwd`;

show columns from `test_alter`;

-- 调整字段的顺序

alter table `test_alter` modify `name` varchar(50) first;

show columns from `test_alter`;

alter table `test_alter` modify `name` varchar(50) after `id`;

show columns from `test_alter`;

-- 修改存储引擎

alter table `test_alter` engine = innodb;

show table status like 'test%';

-- 删除外键关系

#alter table `test_alter` drop foreign key keyName;

-- 修改字段类型 modify

alter table `test_alter` modify `pwd` varchar(50);

show columns from `test_alter`;

-- 修改字段类型 change

alter table `test_alter` change `pwd` `pwd` varchar(48);

show columns from `test_alter`;

alter table `test_alter` change `pwd` `old_pwd` char(48);

show columns from `test_alter`;

insert into `test_alter`(`name`) values('张三');

delete from `test_alter`;

update `test_alter` set add_time = now();

select from `test_alter`;

-- alter 对null值和默认值的影响

alter table `test_alter` modify `add_time` date not null; #在有数据的情况下不能修改为非空,可以将null的数据默认指定值

-- 所以在MYSQL中,如果想要插入时自动获取当前时间,则需要使用timestamp类型,然后赋默认值就可以了。

alter table `test_alter` alter column `old_pwd` set default '123456';

show columns from `test_alter`;

select from `test_alter`;

-- 删除默认值

alter table `test_alter` alter `old_pwd` drop default;

show columns from `test_alter`;

-- 修改表名

alter table `test_alter` rename to `test_alter1`;

alter table `test_alter1` rename to `test_alter`;

MySQL句主要分为以下几类: ### DDL(数据定义言) - **操作数据库**:包含查询、创建、删除和使用数据库等操作。 - **操作表**:包括创建(CREATE)、查询(RETRIEVE,检索)、修改(ALTER)、删除(DROP)表[^1]。 ### DML(数据操作言) - **添加数据(INSERT)**:用于向表中插入新的数据。 - **修改数据(UPDATE)**:可对表中已有的数据进行修改。 - **删除数据(DELETE)**:用于删除表中的数据[^1]。 ### DQL(数据查询言) - **基础查询**:可进行基本的数据查询。 - **条件查询**: - **模糊查询**:示例句为`select * from table_name where 列名 like '%部分条件1'% or 列名 like '%部分条件2%' ....;`,用于查询满足部分条件1或部分条件2等的数据[^1][^2]。 - **排序查询**:可按照指定的列对查询结果进行排序。 - **聚合函数**:用于对数据进行统计和计算。 - **分组查询**:按照指定的列对数据进行分组。 - **分页查询**:用于将查询结果进行分页显示。 - **多表查询**: - **内连接**:只返回两个表中匹配的行。 - **外连接**:包括左外连接、右外连接和全外连接。 - **自连接**:一个表与自身进行连接。 - **联合查询**:将多个查询结果合并为一个结果集。 - **子查询**: - **标量查询**:返回单个值的子查询。 - **列子查询**:返回一列值的子查询。 - **行子查询**:返回一行值的子查询。 - **表子查询**:返回一个表的子查询[^1]。 ### DCL(数据控制言) - **管理用户**:用于创建、修改和删除用户。 - **管理权限**:对用户的权限进行管理[^1]。 ### 约束 用于保证数据的完整性和一致性。 ### 函数 - **字符串函数**:用于处理字符串数据。 - **数值函数**:用于处理数值数据。 - **日期函数**:用于处理日期和时间数据。 - **流程函数**:用于实现条件判断和流程控制[^1]。 ### 事务 - **事务的常见操作**:包括开始事务、提交事务和回滚事务。 - **并性事务问题**:如脏读、不可重复读和幻读等[^1]。 ### 优化和注意事项 - **使用EXPLAIN命令**:`EXPLAIN`可显示MySQL如何使用索引来处理`SELECT`句,查看查询的执行计划并确定优化空间,例如`EXPLAIN SELECT * FROM users WHERE username = 'JohnDoe';` [^4]。 - **监控和日志设置**:在MySQL配置文件(通常是my.cnf或my.ini)中设置慢查询日志,示例配置如下: ```ini [mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2 ``` 这可以帮助监控执行时间较长的查询 [^3]。 ### 表和视图相关 表是实际的数据行存储,视图不存储数据行,只是查询结果的虚拟表。更新表可直接更新数据,视图表不占用实际空间,只是动态结果展示。查询当前数据库中的视图表有特定方法 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值