您现在的位置是:首页 >学无止境 >SQL语句之DDL语言网站首页学无止境
SQL语句之DDL语言
说明:DDL(Data Definition Language,数据定义语言),用来定义数据库对象(数据库、表),包括了数据库和表的创建、查询、使用和删除操作。
一、数据库操作
新安装的数据库,默认有以下四个数据库,可输入下面的SQL语句查看
# 查看所有数据库
show databases ;
创建
创建一个名称为“db_test”的数据库;
create database db_test;
使用
使用db_test数据库,可以理解为切换到某个数据库内;
use db_test;
查询
(1)查询所有的数据库,可以看到我们刚刚新加的数据库;
show databases;
(2)查询当前的数据库
# 使用db_test数据库
use db_test;
select database();
删除
删除db_test数据库
drop database db_test;
show databases;
值得一提的是,如果创建数据库时数据库已存在,或者删除数据库时数据库不存在,执行SQL语句会失败。可以在创建或删除数据时,增加判断。表示如果数据库不存在,则创建;如果数据库存在,则删除,来避免SQL语句执行失败。
如果数据库不存在,创建数据库
create database if not exists db_test;
如果数据库存在,删除数据库
drop database if exists db_test;
二、表操作
约束
在设计表时,我们常常要用到约束,比如身份证号码唯一、姓名不能为空、默认为0等等;数据库中提供了以下五种约束,可在SQL语句中使用,表明设置该字段为对应的约束;
非空约束(not null):限制该字段不能为null;
唯一约束(unique):保证字段的所有数据都是唯一、不重复的;
主键约束(primary key):主键是一行数据的唯一标识,要求非空且唯一,可用auto_increment,即数字自增;
默认约束(default):保存数据时,如果未指定该字段值,则采用默认值;
外键约束(foreign key):让两张表的数据建立连接,保证数据的一致性和完整性;
创建
创建一个学生表:
学号:主键,字符长度为10;
姓名:非空,字符长度为6;
性别:字符长度为2,默认未知;
手机号:非空、唯一,字符长度为11;
入学日期:可为空,日期类型
use db_test;
create table tb_stu(
stu_id char(10) primary key comment '学号',
name varchar(6) not null comment '姓名',
gender char(2) default '未知' comment '性别',
phone char(11) not null comment '手机号',
join_date date comment '入学日期'
) comment '学生表';
注:comment为注释,加在字段后面为字段的注释,加在表后面为表的注释;
修改
(1)添加字段:添加年龄(age)、家庭地址(address)字段。修改后,可用SQL语句(desc 表名)查看表结构,看修改是否成功;
alter table tb_stu add age tinyint comment '年龄';
alter table tb_stu add address varchar(50) comment '家庭住址';
(2)修改字段类型:修改家庭住(address)类型为char(20);
alter table tb_stu modify address char(20) comment '家庭地址';
(3)修改字段名和字段类型:修改家庭住址(Address)字段名为籍贯,类型改为varchar(10);
alter table tb_stu change address origin varchar(10) comment '籍贯';
(4)删除字段:删除年龄(age)字段;
alter table tb_stu drop column age;
(5)修改表名:修改表名(tb_stu)为table_stu;
# 修改表名(tb_stu)为table_stu;
rename table tb_stu to table_stu;
# 显示当前数据下的所有表;
show tables;
查询
(1)查询当前数据库所有表:先再建一张表(tb_emp),查询当前数据库的所有表;
show tables;
(2)查询表结构:查看table_stu表的结构;
desc table_stu;
(3)查询建表语句:查看table_stu表的建表语句;
show create table table_stu;
删除
删除table_stu表;
drop table table_stu;