1. 某些列不插入内容,值是多少?
自动填充NULL
2. NOT NULL是干嘛的?
不能为NULL类型,因为NULL类型查询的时候需要加语句 IS NULL 或者IS NOT NULL
效率低,查询速度慢,开发中我们一般不可以设置为默认的能插入NULL类型。
所以会使用NOT NULL来限制使用NULL类型。
3. 既然没有默认值了,我们如何手动设置默认值?
使用哪个DEFAULT
1 --设置两个列id和name
2 --id内容不能为NULL 默认值0
3 --name内容不能为NULL 默认值空字符串
4 CREATE TABLEt14 (5 id INT NOT NULL DEFAULT 0,6 name CHAR(10) NOT NULL DEFAULT ''
7 );8 INSERT INTO t14 VALUES (1,'listi');9 INSERT INTO t14 (id) VALUES (2);10 SELECT * FROMt14;11 SELECT * FROM t14 WHERE name='';
1. 什么是主键?
PRIMARY KEY,能够区分每一行的列
以会员为例
我们为了区分他们,往往给每一个会员加一个独一五二的会员号,这个会员号就是主键,主要在唯一
的号码上加。
2. 设置主键后一定不能重复
不重复的是不是都可以是主键?比如说手机号,email,也不重复。
当然不是,它还具备这么几个特征,有顺序,并且递增或者递减的一般才会加主键。
一张表中,不声明主键也可以,取决于你表中数据有没有有顺序递增或者递减的列数据。
3. 两种声明主键的方式:
1 --在需要加主键的后面跟着主键语句
2 CREATE TABLEt15 (3 id INT PRIMARY KEY,4 name CHAR(5)5 );6 --在语句的最后再声明一行声明哪个列名要加主键
7 CREATE TABLEt16 (8 id INT,9 name CHAR(5),10 PRIMARY KEY(id)11 );12 --不可以添加重复的信息
13 INSERT INTO t15 VALUES (3,'list');14 INSERT INTO t15 VALUES (3,'list');
4.主键往往和 AUTO_INCREMENT 一起使用
这并不意味着,他们两个必须要绑定在一起使用,我们一般会把自增的列加上主键,提升效率。
但有时候,我们非要用email做主键,让email这一个列提高效率,也是可以的。
5.AUTO_INCREMENT不可单独使⽤
使用自增选项,必须要有索引设置,否则会报错。
索引还有,普通索引INDEX,唯一UNIQUE,全文索引FULLTEXT。
表创建完毕后,能否添加 1 个列?删除 1 个列?修改一个列?
新增一个列,或者删除修改一个列,这属于 DDL 操作,数据库定义语言。
区分数据的增删改,插⼊数据是指表中的数据,不会影响到表的结构。
新建user_info 表:
1 --id,名字,性别,体重
2 CREATE TABLEuser_info(3 id INT NOT NULL PRIMARY KEYAUTO_INCREMENT,4 username CHAR(20) NOT NULL DEFAULT '',5 gender TINYINT UNSIGNED NOT NULL DEFAULT 0,6 weight TINYINT UNSIGNED NOT NULL DEFAULT 0
7 )ENGINE=MyISAM DEFAULT CHARSET=utf8;
语法:
ALTER TABLE 表名 ADD 列名 列类型 列属性... (新列 默认在表的最后)
ALTER TABLE 表名 ADD 列名 列类型 列属性... AFTER 列名 (新列出现指定列后)
ALTER TABLE 表名 ADD 列名 列类型 列属性... FIRST (新列为第 1 列)
ALTER TABLE 表名 CHANGE 旧列名 新列名 新类型 列属性....
ALTER TABLE 表名 MODIFY 列名 新属性....
ALTER TABLE 表名 DROP [COLUNM] 列名
1 --1.添加一个列,默认新增列追加在表的最后
2 ALTER TABLE user_info ADD height TINYINT UNSIGNED NOT NULL DEFAULT 0;3 --查看表结构
4 DESCuser_info;5 --2.删除身高列
6 ALTER TABLE user_info DROPheight;7 DESCuser_info;8 --3.再增加身⾼列,放在username后面
9 ALTER TABLE user_info ADD height TINYINT NOT NULL DEFAULT 0AFTER username;10 DESCuser_info;11 --4.现在人的身高越来越高,255的TINYINT已经不够存了,我们需要改变列类型,改成SMALLINT
12 --使用CHANGE可以将列名一起修改了.
13 ALTER TABLE user_info CHANGE height shengao SMALLINT NOT NULL DEFAULT 0;14 DESCuser_info;15 --5.MODIFY 也可以修改列,跟CHANGE区别在于,MODIFY不可以修改列名
16 ALTER TABLE user_info MODIFY shengao TINYINT NOT NULL DEFAULT 0;17 DE