MySQL表的创建、修改、删除,表的字段类型有哪些
二十二、ddl(数据定义语言)->用于库和表的管理
一、 库的管理
a) 创建
b) 修改
c) 删除
二、 表的管理
a) 创建: create
b) 修改: alter
c) 删除: drop
#库的管理
1.库的创建
语法:
create database [if not exists] 库名;(if not exists->是为了提高容错性,没有就创建、有的就不创建)
如:create database if not exists books;
2.库的修改(基本上不修改,若想修改库名,则需要在服务端的data里修改)
修改库的字符集:
alter database 库名 character set 字符集;
如:
alter database books character set gbk;
3.库的删除
drop database if exists库名;
如:drop database if exists books;
#表的管理
1.表的创建
语法:
create table(if not exists) 表名(
列名 类型[(长度) 约束],
列名 类型[(长度) 约束],
列名 类型[(长度) 约束],
…
列名 类型[(长度) 约束]
);
案例:
create table emp5(
id int(7),
first_name varchar(25),
last_name varchar(25),
dept_id int(7)
); (可使用if not exists来提高容错性)
查看表结构:
2.表的修改
① 修改列名
② 修改列的类型或约束
③ 添加新列
④ 删除列
⑤ 修改表名
语法:
alter table 表名 change|modify|drop|add column 列名 【列类型 约束】;
#修改列名
语法:
alter table 表名 change column旧列名 新列名 新类型(一定要加上);
案例:把last_name字段名称改为last_name;
alter table emp5 change column last_name last_name varchar(30);
#修改列的类型或约束
语法:alter table 表名 change column列名 新类型或约束;
案例:修改了last_name字段的长度
alter table emp5 modify column last_name varchar(49);
#添加新列
语法:
alter table 表名 add 新列名 新类型【约束】;
案例:向表中添加新列test_column,类型自定义
alter table emp5 add column test_column varchar(25);
#删除列
语法:
alter table emp5 add column test_column varchar(25);
案例:删除表中的test_column字段
alter table emp5 drop column test_column;
语法:
alter table 表名 rename [to] 新表名;
案例:把表名重命名为emp6;
alter table emp5 rename to emp6;
3.表的删除
语法:
drop table 表名;
案例:
drop table 【if exists】emp6;(可使用if exists来提高容错性)
- 表的复制
#仅仅复制表的结构(使用like关键字)
create table employees2 like employees;
#复制表的数据+结构(使用子查询)
create table employee3
select * from employees;
#只复制部分表的数据(使用带筛选条件的子查询)
create table employee4
select * from employees
where employee_id>150;
#仅仅复制某些字段(不携带数据)
create table employee5
select job_id,department_id from employees
where 1=0;(只要where后的筛选条件不成立,那么就不会接待数据)
二十三、常见的数据类型
分类:
数值型:
整形
小数:
浮点型
定点型
字符型:
较短的文本:char、varchar
较长的文本:text、bolb(较长的二进制数据)
#整形
类型 tinyint smallint mediumint int/integer bigint
所占字节大小 1 2 3 4 8
特点:
① 如果不设置有符号还是无符号,则默认为有符号,如果想设置为无符号,则需要添加unsigned关键字
② 如果要插入的数据超出了整形的范围,会报出out of range异常,并且插入临界值
③ 如果不设置长度,则系统会有默认的长度
④ 类型中的长度字段代表的是显示数据的最大宽度,若数据小于该长度则会用0在左边填充,但必须搭配zerofull关键字使用(此时默认为无符号整形)
#小数
1.浮点型
a) float(m,d)
b) double(m,d)
2.定点型
a) dec(m,d)
b) decimal(m,d)
特点:
① m代表的是整数和小数部分的总长度,d代表的是小数部位的长度,若超过范围则插入临界值
② m和d度可以省略,如果是float和double,则会根据插入的数值来决定精度,如果是decimal,则m默认为10,d默认为0
③ 定点型的精度较高,如果需要求插入的数值类型精度较高如货币元素那则可以考虑使用
使用原则:所选择的类型越简单越好,能保存的数值的类型越小越好
#字符型
1.较短的文本
char(m)
varchar(m)
binary和varbinary(包含二进制文本字符串)
enum->枚举类型,要求插入的值必须属于列表中指定的值之一
set->集合类型,和enum类型类似,里面可以保存0~64个成,一次可以选取多个成员
2.较长的文本
text
bolb(较长的二进制数据)
特点:
① 关于char 和varchar
写法 m的意思 特点 空间的耗费
char char(m) 最大的字符数(可以省略,默认为1) 固定长度的字符 高
varchar varchar(m) 最大的字符数(不可省略) 可变长度的字符 低
关于固定与可变长度,那“数字”举例,char会给它分配m个字符大小的空间,而varchar 就给它分配2个空间,长度随输入的值变化
#日期型
date:只保存日期
time:只保存时间
year:只保存年
字节 范围 时区等的影响
datetime 8 1000-9999 受
timestamp 4 1970-2038 不受
具体如下:
create table tab_date(
t1 datetime,
t2 timestamp
);#创建表
insert into tab_date values(now(),now());
select * from tab_date;
show variables like 'time_zone';
set time_zone ='+9:00';#改变时区
可发现改变时区后,t2的值发生变化,受到了时区的影响
转自:https://www.cnblogs.com/jane315/p/12861095.html
上一篇: unittest最详细的解说
下一篇: Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘2424‘ for key ‘x.PRIMARY’
推荐阅读