DDL语言:数据定义语言,主要是库和表的管理
一、库的管理
1.库的创建
语法:create database [if not exists] 库名;
案例:创建库Books
create database Books;
2.库的修改
库名的修改:没有单独的SQL语句,一般不修改库,
更改库的字符集:
alter database [books] character set gbk;
3.库的删除
drop database if exists [books];
注:建库的通用写法:
drop database if exists 库名;
create database 库名;
二、表的管理
1.表的创建
create table 表名(
列名 列的类型【(长度)约束】
列名 列的类型【(长度)约束】
);
案例:创建表book
create table book(
id int,
bName varchar(20),
price double,
authorId int,
publishDate datetime
);
2.表的修改
语法:
alter table 【表名】 change|modify|add|drop|rename column 列名 【列类型 约束】;
(1)修改列名
alter table [book] change column [publishdate] [pubDate] Datetime;
语法:alter table 【表名】 change column 【原列名】【新列名】列的数据类型;
(2)修改列的类型或约束
alter table [book] modify column [pubdate] timestamp;
语法:alter table 【表名】modify column 【列名】列类型;
(3)添加新列
alter table [author] add colunm [annual] [double];
语法:alter table 【表名】 add column 【新列名】【新列类型】
(4)删除列
alter table [author] drop column [annual];
语法:alter table 【表名】 drop column 【列名】;
(5)修改表名
alter table [author] rename to [book_author]
语法:alter table 【表名】rename to【新表名】
3.表的删除
drop table if exists book_author;
desc book_author; #查看book_author表
show books; #查看当前库所有表
4.表的复制
(1) 仅仅复制表的结构
create table [copy] like author; #将author表中的结构复制到copy中
语法:create table 【需要复制的表】 like 【被复制的表】
(2)复制表的结构+数据
create table copy2
(a)只复制部分数据
create table copy3
select id,au_name
from author
where nation='中国';
(b)只复制某些字段(不要数据,只需要这两列的结构)
create table copy4
select id,au_name
from author
where 0;
三、数据类型介绍
1.常见的数据类型
数值型: 整型、小数(定点数,浮点数)
字符型:
较短的文本:char,varchar
较长的文本:text,blob(较长的二进制数据)
日期型
2.整型:
分类:tinyint、smallint、mediumint、int/integer、bigint
特点:
(1)如果不设置无符号还是有符号,默认有符号;如果想设置无符号,则需要添加 unsigned
(2)如果插入的数值超过了整型的范围,会报out of range异常,并且插入临界值
(3)如果不设置长度,会有默认的长度;长度代表显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用
1.如何设置无符号和有符号
drop table if exists tab_int;
create table tab_it(
t1 int(7) zerofill ,
t2 int unsigned
);
#zerofill表示0填充,即将123表示成0000123
2.小数
1.浮点型
float(M,D)
double(M,D)
2.定点型
dec(M,D)
decimal(M,D)
特点:
(1)M:(整数部位+小数部位)长度
D:小数部位长度
如果超过范围,则插入临界值
(2)M和D都能省略;如果是decimal,则M默认是10,D默认为0
如果是float和double,则会根据插入的数值的精度来决定精度
(3)定点型的精确度较高,如果要求插入数值的精度较高如货币运算,则考虑使用
选择数据类型原则:
所选择的类型越简单越好
3、字符型
#注:字符数和字节数的区别:一个汉字是一个字符,但是两个字节
写法 M的意思 特点 空间的耗费 效率
char char(M) 最大的字符数 固定长度的字符 比较耗费 高
varchar varchar(M) ~ 可变长度的字符 节省 低
案例:创建表,并设置列数据格式
create table tab_char(
s1 set('a','b','c','d')
);
insert into tab_char value('A','B');
4、日期型
date:日期
datetime:日期+时间
timestamp:日期+时间
time :时间
year:年
注:Timestamp和实际时区有关,更能反映实际日期;
datetime只能反映插入时的当地时区
案例:
create table tab_date(
t1 datetime
t2 timestamp
);
insert into tab_date values(now(),now());