我的MYSQL学习笔记(一)

这是我个人借助网络文章学习MYSQL的过程笔记,希望对大家的有所帮助。
1、DEFUALT关键字

CREATE TABLE emp
(
id INT DEFAULT 12
)

2、设置自增长列(auto_increment)

create  table temp2(
    id INT primary KEY auto_increment,
    tname INT
)

mysql的自增长列是不能设置步长的。
查看系统当前默认的自增列种子值和步长值

SHOW GLOBAL VARIABLES LIKE 'auto_incre%'

这里写图片描述
问:如果有一张表,里面有个字段为id的自增主键,当已经向表里面插入了10条数据之后,删除了id为8,9,10的数据,再把mysql重启,

之后再插入一条数据,那么这条数据的id值应该是多少,是8,还是11?
答:如果表的类型为MyISAM,那么是11。如果表的类型为InnoDB,则id为8。
这是因为两种类型的存储引擎所存储的最大ID记录的方式不同,MyISAM表将最大的ID记录到了数据文件里,重启mysql自增主键的最大ID值也不会丢失;
而InnoDB则是把最大的ID值记录到了内存中,所以重启mysql或者对表进行了OPTIMIZE操作后,最大ID值将会丢失。
顺便说一下MYSQL获取当前表的自增值的四种方法
1、 SELECTMAX(id) FROM person 针对特定表(多线程的情况下会出现问题)
2、 SELECT LAST_INSERT_ID() 函数 针对任何表(auto_increment使用的此方式,显式使用的时候不要在主键列使用)
3、 SELECT@@identity 针对任何表(同上,不要与LAST_INSERT_ID()切换使用)
@@identity 是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。
一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。
使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值。
4. SHOW TABLE STATUS LIKE’person’
如果针对特定表,建议使用这一种方法
得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID.
(获取此值的SQL:

SELECT table_name,Auto_increment,Engine,Version,Row_format,table_rows,Avg_row_length,
  Data_length,Max_data_length,Index_length,Data_free,
  Create_time,Update_time,Check_time,table_collation,Checksum,
  Create_options,table_comment
FROM information_schema.`TABLES`
WHERE Table_Schema='test'
AND table_name = 'temp1'

3、查看表定义

DESC tempt

这里写图片描述

4、修改表名

ALTER TABLE tempt RENAME temp1

5、修改字段的数据类型

ALTER TABLE temp1 MODIFY tname INT(20)

MODIFY关键字还可以用于改变已存在列的位置

ALTER TABLE temp3 MODIFY tage INT AFTER tname

改变之前
这里写图片描述
改变之后
这里写图片描述

6、修改字段名

ALTER TABLE temp1 CHANGE id myid BIGINT

CHANGE命令不仅改变了字段名称同时还改变了数据类型,当然他也可以只改变类型。

7、添加字段

ALTER TABLE temp3 ADD tsex INT

8、删除字段

ALTER TABLE temp3 DROP tsex

9、删除约束

--删除外键约束
ALTER TABLE emp2 DROP FOREIGN KEY fk_emp_dept
--删除主键约束
ALTER TABLE emp2 DROP PRIMARY KEY pk_emp_dept

10、删除表

DROP TABLE temp3

同时删除多张表且验证表是否存在

DROP TABLE IF EXISTS temp1,temp3

11、查看字段实际存储长度

SELECT LENGTH(id) FROM temp

这里写图片描述

参考:
http://www.cnblogs.com/lyhabc/p/3691555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值