一、创建删除数据库
1.1创建数据库
CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码;
1.2查看数据库
show databases;
1.3 删除数据库
DROP DATABASE 数据库名称;
1.4 选择数据库
USE 数据库名;
二、MySQL中的数据类型
2.1 整数类型
MySQL数据类型 | 含义(有符号) |
tinyint(m) | 1个字节 范围(-128~127);常用来表示性别、状态 |
smallint(m) | 2个字节 范围(-32768~32767) |
mediumint(m) | 3个字节 范围(-8388608~8388607) |
int(m) | 4个字节 范围(-2147483648~2147483647) |
bigint(m) | 8个字节 范围(+-9.22*10的18次方) |
数值类型中的长度 m 是指显示长度,并不表示存储长度,只有字段指定 zerofill 时有用
例如: int(3) ,如果实际值是 2 ,如果列指定了 zerofill ,查询结果就是 002 ,左边用 0 来 填充
2.2浮点类型
MySQL数据类型 | 含义 |
float(m,d) | 单精度浮点型 8位精度(4字节) m总个数,d小数位 |
double(m,d) | 双精度浮点型 16位精度(8字节) m总个数,d小数位 |
2.3字符类型
MySQL数据类型 | 含义 |
char(n) | 固定长度,最多255个字符(必须给定n) |
tinytext | 可变长度,最多255个字符 |
varchar(n) | 可变长度,最多65535个字符(必须给定n) |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2的24次方-1个字符 |
longtext | 可变长度,最多2的32次方-1个字符 |
char和varchar:
- char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定长。
- varchar可变长度,可以设置最大长度;适合用在长度可变的属性。
- text不设置长度, 当不知道属性的最大长度时,适合用text。例如:描述和简介等
按照查询速度: char最快, varchar次之,text最慢。
字符串型使用建议:
- 经常变化的字段用varchar
- 知道固定长度的用char
- 尽量用varchar
- 超过255字符的只能用varchar或者text
- 能用varchar的地方不用text
2.4日期类型
MySQL数据类型 | 含义 |
date | 日期 YYYY-MM-DD |
time | 时间 HH:MM:SS |
datetime | 日期时间 YYYY-MM-DD HH:MM:SS |
timestamp | 时间戳YYYYMMDD HHMMSS |
timestamp时间戳在存储日期时,是不考虑时区的。只要项目不涉及到跨时区的用datetime2.5二进制数据(BLOB)
2.5二进制数据
- BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写。
- BLOB存储的数据只能整体读出。
- TEXT可以指定字符集,BLOB不用指定字符集。
三、对表的操作
3.1 创建表
CREATE TABLE 表名(列名 类型,列名 类型......);
3.2删除表
DROP TABLE 表名;
3.3修改表
3.3.1修改表名
ALTER TABLE 旧表名 RENAME 新表名;
3.3.2修改列名
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;
3.3.3修改列类型
ALTER TABLE 表名 MODIFY 列名 新类型;
3.3.4添加新列
ALTER TABLE 表名 ADD COLUMN 新列名 类型;
3.3.5删除指定列
ALTER TABLE 表名 DROP COLUMN 列名;
四、MySQL中的约束
约束概述
数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。
- 主键约束(Primary Key) PK
主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。 主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。
- 外键约束(Foreign Key) FK
外键约束经常和主键约束一起使用,用来确保数据的一致性。外键约束可以是空,但是不能添加参照表中不存在的数据。
- 唯一性约束(Unique)
唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。
- 非空约束(Not Null)
非空约束用来约束表中的字段不能为空。
- 检查约束(Check)
检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前 MySQL 数据库不支持检查约束。
4.1添加主键约束(Primary Key)
- 单一主键
使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。 - 联合主键
使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
4.2主键自增长
MySQL 中的自动增长类型要求:
- 一个表中只能有一个列为自动增长。
- 自动增长的列的类型必须是整数类型。
- 自动增长只能添加到具备主键约束与唯一性约束的列上。
- 设置主键自增之后,往数据库添加数据时不需要我们手动添加主键了。
alter table 表名 modify 主键 类型 auto_increment;
4.3 删除主键
注意:
删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除 主键。
alter table 表名 modify 主键列 类型;
ALTER TABLE 表名 DROP PRIMARY KEY;
4.4添加外键约束(Foreign Key)
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY( 列 名 ) REFERENCES 参照的表名(参照的列名);
约束名是随便取的一般使用 表名_FK
例如:向 emp 表中的 dept_id 列添加外键约束。
alter table emp add constraint emp_fk foreign key(dept_id) references departments(department_id);
4.5删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
4.6添加唯一性约束(Unique)
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
约束名一般使用 :表名_UK
4.7删除唯一性约束
ALTER TABLE 表名 DROP KEY 约束名;
4.8添加非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
4.9删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL;
4.10在创建表时添加约束
查看表的约束信息
SHOW KEYS FROM 表名;
示例:
创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不 允许重复,location_id 列不允含有空值。
create table depts(department_id int primary key auto_increment,department_name varchar(30) unique,location_id int not null);
五、 MySQL中DML操作
5.1添加数据(INSERT)
5.1.1选择插入
根据需求向指定列插入数据。如果存在非空约束,则必须将该列插入数据。
INSERT INTO 表名(列名 1 ,列名 2 ,列名 3.....) VALUES(值 1 ,值 2 ,值 3......);
5.1.2完全插入
INSERT INTO 表名 VALUES(值 1 ,值 2 ,值 3......);
注意:
如果主键是自动增长,需要使用 default 或者 null 或者 0 占位。
例如:向 departments 表中添加一条数据,部门名称为 teaching ,工作地点 ID 为 4 。使用 0 占 位。
insert into departments values(0,"teaching",4);
5.2默认值处理(DEFAULT)
在 MySQL 中可以使用 DEFAULT 为列设定一个默认值。如果在插入数据时并未指定该列的值,那么 MySQL 会将默认值添加到该列中。
5.2.1创建表时指定列的默认值
CREATE TABLE 表名(列名 类型 default 默认值,......);
示例:
创建 emp3 表,该表包含 emp_id 主键且自动增长,包含 name ,包含 address 该列默认 值为”未知”。
create table emp3(emp_id int primary key auto_increment,name varchar(10),address varchar(50) default 'Unknown');
5.2.2添加新列并指定默认值
ALTER TABLE 表名 ADD COLUMN 列名 类型 DEFAULT 默认值;
示例:
修改 emp3 表,添加job_id 该列默认值为 0。
alter table emp3 add column job_id int default 0;