我的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%'

我的MYSQL学习笔记(一)_第1张图片
问:如果有一张表,里面有个字段为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

我的MYSQL学习笔记(一)_第2张图片

4、修改表名

ALTER TABLE tempt RENAME temp1

5、修改字段的数据类型

ALTER TABLE temp1 MODIFY tname INT(20)

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

ALTER TABLE temp3 MODIFY tage INT AFTER tname

改变之前
我的MYSQL学习笔记(一)_第3张图片
改变之后
我的MYSQL学习笔记(一)_第4张图片

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

我的MYSQL学习笔记(一)_第5张图片

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

你可能感兴趣的:(mysql)