前言
在以往的学习中,一直是只知道向前进行学习,而没有回过头来进行知识的整理与加工,因此经过了一段时间,所学的知识会忘记的所剩无几。在后面需要这部分知识点时,也因为没有留下自己经过整理过的笔记,复习起来也会困难很多。顺便说一句,北方的天气真的冷,现在在哆哆嗦嗦的写着笔记。
正文
开始时,首先声明本文参考自《MySQL数据库应用从入门到精通》。接下来是大大的正文环节。
数据库基本操作
创建数据库
create database database_name;
database 为关键字,database_name为所要创建的数据库,注意需要末尾要加上分号(;)或者\g;
查看数据库
database show databases;
database要加s,由于显示多个数据库;
选择数据库
use database_name;
创建完数据库时,需要使用数据库;
删除数据库
drop database database_name;
在创建数据库之后,则需要创建表来存储数据。在创建表之前先介绍一些基本的数据类型。
数据类型介绍
可以通过查看系统帮助来查看数据类型;
help data types;
help int;
注:数据类型的关键字,可以大写也可以小写。
整数类型
整数类型 | 字节 |
---|---|
TINYINT | 1 |
SMALLINT | 2 |
MEDIUMINT | 3 |
INT 和 INTEGER | 4 |
BIGINT | 8 |
浮点数类型,定点数类型和位类型
浮点数类型 | 字节 |
---|---|
float | 4 |
double | 8 |
定点数类型 | 字节 |
---|---|
dec(m,d)和decimal(m,d) | m+2 |
位类型 | 字节 |
---|---|
bin(m) | 1~8 |
日期和时间类型
日期和时间类型 | 字节 |
---|---|
date | 4 |
datetime | 8 |
timestamp | 4 |
time | 3 |
year | 1 |
字符串类型
char系列字符串类型 | 字节 |
---|---|
char(m) | m |
varchar(m) | m |
text系列字符串类型 | 字节 |
---|---|
tinytext | 0~255 |
text | 0~65 535 |
mediumtext | 0~167 772 150 |
longtext | 0~4 294 967 295 |
binary系列字符串类型 | 字节 |
---|---|
binary(m) | m |
varbinary(m) | m |
BLOB系列字符串类型 | 字节 |
---|---|
tinyblob | 0~255 |
blob | 0~2^16 |
mediumblob | 0~2^24 |
longblob | 0~2^32 |
表的操作
创建表的语法形式
create table table_name(
属性名 数据类型,
........ ,
属性名 数据类型
);
table_name 为表名,不可以重复。
创建表
create table t_dept(
deptno int,
dname varchar(20),
loc varchar(40)
);
查看表定义
describe table_name;
查看表详细定义
show create table table_name\G
\g与;的作用相同(解释为send command to mysql server),\G解释为send command to mysql server,displayresult vertically ,结果是使结果显示的更加美观。
删除表
drop table table_name;
删除之后,使用describe table_name,查看表将会不存在,会报error。
修改表
修改表名
alter table old_table_name rename new_table_name;
desc table_name;
desc和describe的作用相同,作用为查看表的描述。
增加字段
在表的最后一个位置增加字段
alter table table_name add 属性名 属性类型;
在表的第一个位置增加字段
alter table table_name add 属性名 属性类型 first;
在指定字段之后增加字段
alter table table_name add 属性名 属性类型 after 属性名;
删除字段
alter table table_name drop 属性名;
修改字段
修改字段的数据类型
alter table table_name modify 属性名 属性类型;
修改字段的名字和属性
alter table table_name change 旧属性名 新属性名 新数据类型;
如果只改变名字不修改属性类型的话,则只需要使用原来的数据类型。
修改字段的顺序
alter table table_name modify 属性名1 数据类型 first|after 属性名2;
注:需要创建t_dept表,至少包含dename和loc字段;
示例:
alter table t_dept modify dname varchar(20) first;
将dname字段调整到第一行;
alter table t_dept modify dname varchar(20) after loc;
将dname字段调整到loc字段之后。
操作表的约束
完整性约束是指数据的准确性和一致性,完整性检查是指检查数据的准确性和一致性。
MySQL支持的完整性
完整性约束关键字 | 含义 |
---|---|
NOT NULL | 约束字段不能为空 |
DEFAULT | 设置字段的默认值 |
UNIQUE KEY(UK) | 约束字段的值必须是唯一的 |
PRIMARY KEY(PK) | 约束字段为表的主键,可以作为该表记录的唯一标识 |
AUTO_INCREMENT | 约束字段的值为自动增加 |
FOREIGN KEY(FK) | 约束字段为表的外键 |
接下来逐一设置6种约束:
设置非空约束(NOT NULL,NK) –注:这里大小写亦可!
create table table_name(
属性名 数据类型 NOT NULL
...........
);
当违反了插入数据为空时,数据库则会自动报错!
设置字段的默认值(DEFAULT)
create table table_name(
属性名 数据类型 DEFAULT 默认值,
........
);
设置唯一约束(UNIQUE,UK)
create table table_name(
属性名 数据类型 UNIQUE,
..........
);
当插入该值出现重复时,则会进行报错。
设置主键约束(PRIMARY KEY,PK)
当设置主键约束时,自动会添加NOT NULL和UNIQUE约束;
单字段主键
create table table_name(
属性名 数据类型 PRIMARY KEY,
...........
);
下面方法和上面方法效果一样
create table table_name(
属性名 数据类型,
......,
constraint 约束名 PRIMARY KEY(属性名)
);
约束名一般写为“约束_属性名”
多字段主键
多字段主键和单字段主键相同,可以采用将多个字段分开添加主键约束;
create table table_name(
属性名1 数据类型1 PRIMARY KEY,
属性名2 数据类型2 PRIMARY KEY,
..........
);
create table table_name(
属性名1 数据类型1 ,
属性名2 数据类型2,
..........
constraint 约束名 PRIMARY KEY(属性名1,属性名2)
);
设置字段自动增加(AUTO_INCREMENT)
create table table_name(
属性名 数据类型 AUTO_INCREMENT,
);
设置外键约束(FOREIGN KEY,FK)
定义:设置外键约束的两个表之间具有父子关系,子类某个字段的取值范围受父类的某个字段决定。在设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以设置NULL。
create table table_parent(
属性名1 数据类型1 PRIMARY KEY,
属性名2 数据类型2,
........
);
create table table_son(
属性名1 数据类型1,
......,
constraint 外键约束名 FOREIGN KEY(属性名1) REFERENCE table_parent(属性名1)
);
表插入数值
示例1:
首先创建表t_dept,然后在表中插入数值,以及查看表中的数值。
创建表
create table t_dept(
dname varchar(20),
loc varchar(40)
);
创建含有dname,和loc字段的表t_dept;
插入表
insert into t_dept VALUES
('ppp','xian'),
('ttt','xiangxi');
插入两个对象,dname字段分别为‘ppp’,’ttt’;loc字段分别为‘xian’,’xiangxi’。
查看表的数值
select * from t_dept;
* 代表的是当前拿到的值。可以对*进行操作从而改变显示的值。
* 示例2:
设置约束,并插入数值
create table t_dept(
dname varchar(20) not null,
likes varchar(40) not null,
id int primary key
);
创建包含字段dname,likes,设置非空约束。id设置为主键约束;
insert into t_dept VALUES
('little nephew','little pig named page',65536),
('ttt','watermelon',65535),
('ppp','ttt',65534);
这里没有违反约束,插入成功。然后进行查看。
select * from t_dept;
显示为:
接下来测试非空约束:
insert into t_dept VALUES
(null,'test',1222);
出错信息为:
最后再测试主键约束:
由于主键约束会自动加上非空和唯一性约束,非空约束和上面测试相同,接下来测试唯一性约束:
insert into t_dept values
('11','222',65536);
由于65536已经存在,插入则会出错,出错信息为:
小结
这部分主要介绍了数据库的基本操作和表的操作,并且介绍了数据库的数据类型,以及字段的六种约束。