目录
1.建立、删除、查看数据库
创建数据库
create database database_name;
查看所有数据库
show databases;
删除数据库
drop database database_name;
选择数据库,使其成为当前默认的数据库
use database_name;
2.设计数据库
数据表包括哪些字段:字段的名称、数据类型、字段宽度等
整数类型
字段类型 | 存储量 | 说明 |
tinyint | 1个字节 | 很小的整数 |
smallint | 2个字节 | 小的 |
mediumint | 3个字节 | 中等大小的 |
int | 4个字节 | 普通大小的 |
integer | 4个字节 | 普通大小的 |
bigint | 8个字节 | 大整数 |
浮点数类型
字段类型 | 存储量 | 说明 |
float | 4个字节 | 单精度浮点数 |
double | 8个字节 | 双精度浮点数 |
定点数类型
字段类型 | 存储量 | 说明 |
decimal(m,d) | m+2字节 | 定点数 |
日期时间类型
Mysql允许不严格的语法,当使用字符值作为日期时间,任何标点符 号可以做为日期和时间部分的分隔符
字符串类型
enum 和 set 类型
enum('value1','value2',……)
set('value1','value2',……)
ENUM 和 SET 对象是枚举类型,其列值必须从固定的串集中选择。二者差别为ENUM必须是只能选择其中的一个值,SET可以多选SET 对象。ENUM 大小由不同枚举值的数量决定。长度为1 个字节时,最多可以有 255 个值;2个字节时,最多可以有 65535 个值。SET 的大小由(彼此不同的)集合成员数量决定,如果集合大小是N ,对象可占据 (N + 7)/8 ,一个SET 对象最多能有 64 个成员。
常见数据类型
非空约束 Not Null
指字段的值不能为Null 值。对于使用了非空约束的字段如果用户在添加数据时,指定Null值,数据库系统会报错.
Null 不是空值。如果在字段中没有输入数据,会自动赋值为空值。但是如果插入Null 值,系统会报错。auto_increment需要自动递增生成内部编号的字段使用数值型。在每次插入新记录时,系统就会自动生成字段的值。该值为数据表中所有记录的该字段的最大值加1。一个表只能有一个字段使用,且该字段必须为主键的一部分。
设计数据表的主键(又称主码,是表中一列或者多列的组合)
单字段主键
<字段名> <数据类型> primary key <默认值>
多字段联合主键
primary key [字段1,字段2,……]
3.操作数据表
创建数据表
create table <表名>
(列表1 数据类型 字段属性,
列表2 数据类型 字段属性,
……
列表n 数据类型 字段属性,
);
举个例子
create table if not exists course
(courseid varchar(4) primary key,
coursename char,
credit tinyint(3) unsigned,
required tintint(1) default '1',
period tinyint unsigned,
department varchar(20),
primary key('courseid')
);
demical 型
demical(4,1) 表示长度4小数位数1
查看数据表
查看数据表的基本结构
describe 表名;
显示数据表对应的create语句
show create table 表名;
查看数据库的所有数据表
show tables;
修改数据表
修改表名
alter table <旧表名> rename to <新表名>;
修改字段
alter table <表名> modify <字段名> <数据类型>;
修改字段的名称
alter table <表名> change <旧字段名> <新字段名> <数据类型>;
添加新的字段
alter table <表名> add <新字段名> <数据类型> <约束条件> first/after <已存在字段名>;
删除字段
alter table <表名> drop <字段名>;
删除表的外键约束
alter table <表名> drop foreign key <外键约束名>;
插入数据
inset into <表名>
values('表达式1','表达式2',……);
向指定的数据表插入一条记录,并用指定的表达式对所 有字段赋值。VALUES短语中各个表达式应该与数据表结构的字段顺序一一对应。
inset into <表名> (字段1,字段2,……)
values ('表达式11','表达式12',……),
('表达式21','表达式22',……)
……;
向指定的数据表插入一条记录,并用指定的表达式对字段赋值。字段的顺序可以不与数据表的字段顺序一致。但字段和表达式应该一一对应。对于没有赋值的字段,如果设置了默认值将被赋值为默认值。
删除条件
delete from <表名> where <条件>;
where<条件>用来指定删除的条件。当默认时,将删除数据表的所有记录。
更新数据
update <表名> set <字段1>=<表达式1>,
<字段1>=<表达式2>,
……
where <条件>;
4.参照完整性
是指两个相关联的表中相关数据是否一致
外键/外关键字
指定外键
constraint <外键名> foreign key <字段名> references <主表名> <主键列>;
外键约束
Delete
在删除主表数据的时候,子表的数据将同时被删除(cascade)
子表中存在数据时,主表的数据将无法删除(Restrict)
在
删除主表数据
的时候,子表的数据被设置为
null值
(set null)
(该列可以设置为null
值的情况下
)
update
在修改主表数据的时候,子表的数据将
同时
被修改
(cascade)
子表中存在数据时,
主表
的数据将
无法修
改
(restrict)
在
修改主表数据
的时候,子表的数据被设置为
null值
(set null)
(
该列可以设置为
null
值的情况下
)
create tabel <数据表>
(字段
constraint <外健名>
foreign key <字段名> refereces <主表名> <主表列>
on delete restrict/cascade/set null
on update delete restrict/cascade/set null
);
添加参照完整性
如果创建数据表的时候没有设置参照完整性修改数据表来添加完整性。
alter table <数据表名>
add constraint <外键名>
foreign key (字段名) references <主表名> <主表列>
on update restrict/casdate/set null
on delete restrict/casdate/set null;
删除参照完整性
alter table <数据表> drop constraint <索引>;