操作数据库
下面开始使用sql语句操作数据库,需要注意的是要以英文的分号结尾。表名和字段名通常使用小写英文命名,做到见名知意,多个英文单词之间使用下划线间隔,例如task_config。
创建数据库
创建一个数据库,名字是study1
create database study1;
创建数据库study2,指定字符编码为gbk:
create database study2 character set gbk;
查看数据库
显示当前所有的数据库
show databases;
查看study2数据库的定义信息:
show create database study2;
修改数据库
将study2数据库的编码修改为utf-8;
alter database study2 character set utf8;
删除数据库
删除study2数据库
drop database study2;
查看当前使用的数据库
select database();
切换数据库
切换至study2数据库
use study2;
操作数据库表
创建表语法:
create table 表名(
字段1 字段类型,
字段2 字段类型,
...
字段n 字段类型
);
常用的字段数据类型:
int:整型
double:小数类型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
decimal(m,d):小数类型,m是长度,d是小数的位数
char:固定长度字符串类型; char(10) 如果不足10位则会自动补足10位:'abc '
varchar:可变长度字符串类型;varchar(10) 如果不足10位不会补足:'abc',性能不如char高
text:字符串类型;适用于大文本内容,可以存储文章评论等内容。
blob:字节类型,可以存储图片和视频等内容,会降低数据库性能,通常不用。
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 以世界协调时(UTC)格式保存的, 在存储时会对当前时区进行转换, 在查询检索时再把UTC时间转换为当前时区
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss 按实际输入的存储,与时区无关
如何选择字段类型:
整数与小数
如果不需要小数就选择整数,如果需要小数就选择DECIMAL,精度比较高,不建议使用double和float,会损失精度
TIMESTAMP与DATETIME
如果有跨时区的业务,则需要选择TIMESTAMP,其取值范围小, 1970~2037,当字段设置为TIMESTAMP类型时,如果没有显示插入数据,MySQL会把当前时间作为该列的值。
CHAR与VARCHAR
CHAR是固定长度的,VARCHAR是可变长度的. CHAR会在尾部插入空格, VARCHAR不会。CHAR处理速度比VARCHAR快,缺点是浪费空间.如果存储的数据不大,在速度上有要求选择CHAR。MySQL数据库中的InnoDB存储引擎,存储CHAR与VARCHAR数据时不分固定长度还是可变长度,因为使用CHAR不一定比VARCHAR更好. 如果使用MyISAM存储引擎,最好使用固定长度的CHAR,检索会更快
示例:
create table employee(
id int,
name varchar(20),
sex char(1),
birthday date,
job varchar(50),
salary double
);
查看数据库中所有的表
SHOW TABLES;
查询出的字段中,Field表示字段名, TYPE表示字段的类型, NULL表示是否允许为空, KEY是主键, Default是默认值。
查看表的字段信息
DESC employee;
在上面员工表的基础上增加一个address列。
ALTER TABLE employee ADD address varchar(100);
修改job列,使其长度为30。
ALTER TABLE employee MODIFY job varchar(30);
删除address列,一次只能删一列。
ALTER TABLE employee DROP address;
表名改为user。
RENAME TABLE employee TO user;
查看表格的创建细节
SHOW CREATE TABLE user;
修改表的字符集为gbk
ALTER TABLE user CHARACTER SET gbk;
列名name修改为username
ALTER TABLE user CHANGE name username varchar(20);
删除表
DROP TABLE user ;