【数据库-mysql】数据库和数据表的基本操作
3 数据库和数据表的基本操作
3.1 数据库的基本操作
3.1.1 创建数据库
创建数据库就是在数据库系统中划分存储数据的区域,以创建general数据库为例:
MYSQL> CREATE DATABASE GENERAL;
3.1.2 查看数据库
MYSQL> SHOW DATABASES;/*查看所有数据库*/
MYSQL> SHOW CREATE DATABASE GENERAL; /*查看特定数据库*/
3.1.3 修改数据库
修改数据库的编码方式:
mysql> alter database general default character set gbk collate gbk_bin;
3.1.4 删除数据库
drop database general;
3.2 数据类型
建表的过程就是声明列的过程:
3.2.1数值型
int系列 声明时的参数:(M) unsigned zerofill
1、数据默认有符号,可以修改为无符号:
2、关于增加新列:alter table tablename add score tinyint unsigned not null default 0。
3、mysql5.6 设置为无符号时,若输入负数,变为0,但不报错。
4、M与zerofill配合使用才有意义,代表补0后的总宽度,zerofill 默认无符号
5、alter table test add num smallint(5) zerofill not null default 0;
浮点型
float(M,D) decimal(M,D) # 确认下是否有这种类型
M表示“精度”:总的位数,,D表示“标度”表示小数位。
float(6,2) -9999.99 9999.99
默认有符号,可以定义为无符号:
alter table salary add bonus float(5,2) unsigned not null default 0.00;
float 能存10^38 ,小数点后能10^-38
若M<=24 4个字节,否则8个字节。
定点型
比float精确 分开存两部分。账户类将以用decimal,实际是整形存分
3.2.2 字符型
3.2.3 时间类型
时间类型在的输入需要加引号
比char高效、节省空间
以date为例,input 20180424或者"2018-04-24"插入的日期都是2018-04-24
timestamp:显示形式与datetime相同,但是取值范围更加窄,输入为空或者NULL都是以当前时间填充。
3.3 数据表的基本操作
3.3.1 创建数据表
CREATE TABLE 数据表名称
(
字段名1 数据类型 [完整性约束条件],
字段名1 数据类型 [完整性约束条件],
......,
字段名1 数据类型 [完整性约束条件] # 没有逗号
); # 加分号
最后一行不加逗号,结尾加分号
create table calss(
ID int primary key auto_increment,
name varchar(10) not null default ‘’,
gender char(1) not null default ‘’,
company varchar(20) not null default ‘’,
salary decimal(6,2) not null default 0.00,
foodappend smallint not null default 0.00
)engine myisam charset utf8;
create table stuinfo(
id int primary key auto_increment,
name varchar(10) not null default ‘’,
gender char(1) not null default ‘’,
age int not null default 0
)engine myisam charset utf8;
3.3.2 查看数据表
方法1:SHOW CREATE TABLE 数据表名称; 或者SHOW CREATE TABLE 表名称\G # 无;
方法2:DESCRIBE 表名称; 或者使用简写DESC 表名称;
3.3.3 修改数据表
1修改表名:
ALTER TABLE 旧表名 RENAME [TO] 新表名;
2修改字段名和数据类型:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
3修改字段数据类型:
ALTER TABLE 表名 MODIFY 字段名 新数据类型;
4添加字段:
ALTER TABLE 表名 ADD 新字段名 数据类型[约束条件]
[FIRST|AFTER 已经存在的表名];
5删除字段:
ALTER TABLE 表名 DROP 字段名;
6修改字段位置
ALTER TABLE 表名 MODIFY 字段名1 数据类型 [FIRST|AFTER 已经存在的表名];
可以在修改字段的位置的同时修改数据类型,如果只修改位置将类型写为与之前一致即可。
3.3.4 删除数据表
DROP TABLE 表名;
3.4 数据表的约束
约束的目的是为了保持一致性与完整性。在mysql中主要有一下5种约束:
1、主键约束 2、外键约束 3、非空约束 4、唯一约束 5、默认约束
3.4.1 PRIMARY KEY CONSTRAINT主键约束
1 单字段主键
方式1:创建表的时候设定为主键: 字段名 数据类型 PRIMARY KEY;
方式2:为已经存在的表添加逐渐约束:
ALTER TABLE 表名 MODIFY 字段名 新数据类型 PRIMARY KEY;
删除主键约束:ALTER TABLE 表名 DROP PRIMARY KEY;
2复合主键
方式1:创建表时指定复合主键:PRIMARY KEY(字段名1, 字段名2,......)
方式2:为已存在的表添加复合主键:
ALTER TABLE 表名 ADD PRIMARY KEY(字段名1, 字段名2,......);
删除复合主键:ALTER TABLE 表名 DROP PRIMARY KEY;
3.4.2 FOREIGN KEY CONSTRAINT外键约束
方式1:创建从表的时候直接添加外键
step1:创建主表
step2:创建从表并且添加外键:
CONSTRAINT 外键名 FOREIGH KEY(从表外键) REFERENCE 主表名(主表主键)
方式2:为已存在的表添加外键约束
ALTER TABLE 从表名ADD CONSTRAINT 外键名 FOREIGN KEY(从表的外键字段名)REFERENCES 主表名(主表的主键字段名)
删除外键约束:ALTER TABLE 从表名 DROP FOREIGN KEY 外键名
3.4.3 NOT NULL CONSTRAINT非空约束
字段名 数据类型 NOT NULL;
为已经存在的列添加非空约束: ALTER TABLE 表名 MODIFY 字段名 新数据类型 NOT NULL;
删除非空约束:ALTER TABLE 表名 MODIFY 字段名 新数据类型
3.4.4 UNIQUE CONSTRAINT唯一约束
保证该列的值不出现重复。
方法1:创建表时添加: 字段名 数据类型 UNIQUE;
方式2:通过修改的方式: ALTER TABLE 表名 MODIFY 字段名 新数据类型 UNIQUE;
删除唯一约束:ALTER TABLE 表名 DROP INDEX 字段名;
3.4.5 DEFAULT CONSTRAINT 默认约束
如果将某列定义了默认约束,在用户插入新的数据行的时候,如果没有为该列指定数据,那么数据库系统自动将默认值赋值给该列,默认值可以为NULL。
方法1:创建表时添加: 字段名 数据类型 DEFAULT 默认值;
方式2:通过修改的方式: ALTER TABLE 表名 MODIFY 字段名 新数据类型 DEFAULT 默认值;
删除唯一约束:ALTER TABLE 表名 MODIFY 字段名 数据类型;
3.5 设置表的字段值自动增加
只有主键可以设置为自动增加,自动增加的起点为1,数据类型为泛INT类型。、
方法1:创建表时添加: 字段名 数据类型 PRIMARY KEY AUTO_INCREMENT;
方式2:通过修改的方式: ALTER TABLE 表名 MODIFY 字段名 新数据类型 AUTO_INCREMENT;
删除唯一约束:ALTER TABLE 表名 MODIFY 字段名 数据类型;
4.数据表的增加与更新
一般不用加table关键字;在修改和删除操作中,条件表达式用于筛选出要作用的行,假如没有条件表达式,会作用在所有的行。
4.1增–insert
insert [into]表名
[(字段名)]/*例如 (ID,name,gende)*/
values
(001,'薛岳','男');
1如果列出字段名,只要给出响应字段的值即可,默认操作是插入所有列。
2即便是自增的,也要按顺序写。
3多行用逗号隔开,最后一条都是用分号结尾。
注意:
1、顺序和数目一致;char类型时间类型用英文半角单引号括起来(双引号也可以);
2、可以插入单条或者多条,单列或者多列,插入全部的列时可以省略字段名列表。
4.2、改–update
update表名 /*不加table */
set 字段名 = value
[条件表达式];
注意:where后面是表达式,哪一行使该行表达式为真,则修改哪行的值。如果修改的参数是名字,而有重名,则会修改多行。用and 可以在表达式中加多个条件。如果不加表达式会作用在所有的行。
4.3、删除–delete
delete from表名
[where expression];
删除--truncate
Truncate[table] 表名;
truncate VS delete
1、delete后面可以接where字句
2、delete后,自增计数器不会初始化
小结:Alter table、delete from、insert+update+truncate 直接加表名