大型MySQL数据库学习连续剧之首当其冲

数据类型

类型名称大小数据类型
tinyint1Byte整数型
int 或 intger4Bytes整数型
bigint8Bytes整数型
float4Bytes浮点型
double8Bytes浮点型
char0-255Bytes字符串类型
varchar0-65535Bytes字符串类型
date3Bytes日期和时间类型
time3Bytes日期和时间类型
datetime8Bytes日期和时间类型

​ 因为我们用的是UTF-8的编码,一个汉字占3字节,一个字母占2字节。

SQL语言

(1)数据定义语言(Data Definition Language DDL):DROP(删除)、CREATE(创建)、 ALTER(设置选项)等语句。
(2)数据操作语言(Data Manipulation Language DML):INSERT(插入)、UPDATE(修
改)、DELETE(删除)语句。
(3)数据查询语言(Data Query Language DQL):SELECT语句。
(4)数据控制语言(Data Control Language DCL):GRANT、REVOKE、COMMIT、 ROLLBACK等
语句。

​ SQL语言中不区分大小写,所有语句以英文分号“ ; “结束,建表时以英文逗号分隔” , “

数据库操作(SQL语句的使用)

对库的操作

显示所有的库

show databases;

创建库

create database datebase_name;

查看库定义

show create database myabits;

删除库

drop database database_name;

对表的操作

​ 对表的操作前一定要先使用库,在库下才可以进行对表的操作。

使用库

use database;

创建表

create table table_name(
	字段1	类型	约束条件 默认值,
	字段2	类型	约束条件 默认值,
	字段3	类型	约束条件 默认值
);

​ 使用CREATE TABLE创建表时,必须指定以下信息:
​ (1)要创建的表的名称,不区分大小写,不能使用SQL语言中的关键 字,如DROP、ALTER、 INSERT等。
​ (2)数据表中每一列(字段)的名称和数据类型,如果创建多列,就要用逗号隔开,最后一列字段 不需要标点符号。

查看表结构

desc table_name

约束条件

五类完整性约束

​ NOT NULL 非空
​ UNIQUE 唯一
​ PRIMARY KEY 主键
​ FOREIGN KEY 外键
​ CHECKED 检查(mysql不支持的)

主键约束

​ 主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一地标 识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以 加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关 系,它们之间是一一对应的。主键分为两种类型:单字段主键和多字段联合主键。(即主键具有标识性,且默认非空且唯一)

例: 我们运用以上知识创建一个以company为数据库的employee表,需要统计员工的id、name、sex、salary、phone、birth。

create database company;
use company;
create table emploee(
 id int primary key,
 name varchar(30) not null,
 sex char(3) default'男',
 salary float,
 phone varchar(50) unique,
 birth date
);

​ 注意:一张表只有一个primary key(主键),varchar、char需要定义数据的空间大小。

修改表结构

1、修改表名
ALTER TABLE <旧表名> RENAME TO <新表名>;

例:将表名employee改为emp

alter table employee rename to emp;
2、修改字段数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>  

例:将emp表下的name改为varchar(30)

alter table emp modfiy name varchat(30);
3、修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

例:将emp表下的sex改为emp_sex

alter table emp change sex emp_sex char(3);
4、添加字段
ALTER TABLE <表名> ADD <新字段名> <新字段类型> <约束条件> [FIRST|AFTER]已存在字
段名;

例:在emp表中添加address字段

​ 在emp表中添加address字段至首列

​ 在emp表中添加address字段在phone列后

alter table emp add address varchar(50) not null;

alter table emp add address varchar(50) not null first;

alter table emp add address varchar(50) not null after phone;

​ 注意:添加的字段必须是表中不存在的字段。

5、删除字段
ALTER TABLE <表名> DROP <字段名> ;

例:删除emp表中的address字段

alter table emp drop address;
6、修改字段所在的位置
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;

例:将emp表中的birth放置name后

alter table emp modfiy birth date after name;
7、更改表的存储引擎(不常用)
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;

例:

ALTER TABLE tb_deptment3 ENGINE=MyISAM;

建表时的数据类型选择

​ 1、整数和浮点数

​ 如果不需要小数部分,就使用整数来保存数据;如果需要表示小数部分,就使用浮点数类型。对于浮点数据列,存入的数值会对该列定义的小数位进行四舍五入。例如,假设列的值的范围为1~99999,若使用整数,则 MEDIUMINT UNSIGNED是最好的类型;若需要存储小数,则使用FLOAT 类型
​ 浮点类型包括FLOAT和DOUBLE类型。DOUBLE类型精度比FLOAT类型高,因此要求存
储精度较高时应选择DOUBLE类型

​ 2、浮点数和定点数

​ 浮点数FLOAT、DOUBLE相对于定点数DECIMAL的优势是:在长度一定的情况下,浮点数能表示更大的数据范围。由于浮点数容易产生误差,因 此对精确度要求比较高时,建议使用DECIMAL来存储。DECIMAL在MySQL中是以字符串存储的,用于定义货币等对精确度要求较高的数据。 在数据迁移中,float(M,D)是非标准SQL定义,数据库迁移可能会出现问题,最好不要这样使用。另外,两个浮点数进行减法和比较运算时也容易出 问题,因此在进行计算的时候,一定要小心。进行数值比较时,最好使用DECIMAL类型

​ 3、日期和时间类型

​ MySQL对于不同种类的日期和时间有很多数据类型,比如YEAR和TIME。如果只需要记录年份,则使用YEAR类型即可;如果只记录时间,则使用TIME类型。

​ 如果同时需要记录日期和时间,则可以使用TIMESTAMP或者DATETIME类型。由于TIMESTAMP列的取值范围小于DATETIME的取值范围,因此存储范围较大的日期最好使用DATETIME。

​ TIMESTAMP也有一个DATETIME不具备的属性。默认的情况下,当插入一条记录但并没有指定TIMESTAMP这个列值时,MySQL会把TIMESTAMP列设为当前的时间。因此当需要插入记录的同时插入当前时间时,使用TIMESTAMP是方便的。另外,TIMESTAMP在空间上比 DATETIME更有效。

​ 4、CHAR与VARCHAR之间的特点与选择

​ CHAR和VARCHAR的区别如下:

​ CHAR是固定长度字符,VARCHAR是可变长度字符。
​ CHAR会自动补空格,VARCHAR不自动补。
​ ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名> 1
​ ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept; 1
​ ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>; 1
​ ALTER TABLE tb_deptment3 ENGINE=MyISAM; 1
​ DROP TABLE [IF EXISTS]表1, 表2,…表n; 1
​ CHAR是固定长度,所以它的处理速度比VARCHAR的速度要快,但是它的缺点是浪费存
储空间,所以对存储不大但在速度上有要求的可以使用CHAR类型,反之可以使用
VARCHAR类型来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值