创建和管理表
在MySQL中,一个完整的数据存储过程总共有4步,分别是创建数据库、确认字段、创建数据表、插入数据。
从系统架构的层次上看,MySQL数据库系统从大到小依次是数据库服务器、数据库、数据表、数据表的行与列。
创建数据库
#方式一 创建的此数据库使用的是默认的字符集 utf-8
create database 数据库名;
#方式二
create database 数据库名 character set 字符集;
create database mytest character set 'gbk';
#方式三 判断数据库是否已经存在,不存在则创建数据库(推荐)
create database if not exists 数据库名;
查看数据库的结构
show create database mytest1
管理数据库
查看当前连接中的数据库有哪些
show databases;
切换数据库
use db_test;
查看当前数据库中有哪些表
show 表名;
查看当前使用的数据库
select database() from dual;
查看指定数据库下保存的数据表
show tables from mysql;
修改数据库
更改数据库的字符集
alter database db_test character set ‘gbk’;
注意
database不能改名。一些可视化工具可以改名,它是新建库,把所有表复制到新库,再删旧库完成的。
删除数据库
方式一
drop database mytest
方式二:推荐,若要删的数据库不存在,不会报错,而方式一会报错
drop database if exists mytest
常用的数据类型
创建数据表
use db_test
show create database atguigudb;
方式一:需要用户具备创建表的权限
create table if not exists myempl(
id int , #整型
emp_name varchar(15) , #字符类型
hire_date date # 日期类型
) ;
查看表的字段内容
desc myempl
create database if not exists db_test;#创建数据库
select database() from dual;#查看当前使用的数据库
use db_test;#切换数据库
show tables from db_test;#查看数据库中的数据表
show create database db_test;#查看数据库的属性
#创建数据表
create table if not exists myempl(
id int,
name varchar(15),
hire_date date
);
show create table myempl;#查看表的属性
desc myempl;#查看表的字段内容
select *from myempl;#查看表的内容
如果创建表时没有指明使用的字符集,则默认使用表所在数据库的字符集。
基于现有的表创建新表,可以把现有表中同名的字段以及字段中的内容复制过来
需求1:创建一个表employees_copy,实现对employees表的复制,包括表数据
create table if not exists employees_copy
as
select *
from employees;
需求2:创建一个表employees_blank,实现对employees表的复制,不包括表数据
create table employees_blank
as
select *
from employees
where 1=2;
修改表
alter table
添加一个字段
alter table myempl
add salary double(10,2);#默认添加到表中的最后一个字段位置
alter table myempl
add phone_num varchar(15) first;#指定添加到第一个字段位置
alter table myempl
add email varchar(45) after emp_name;#指定添加到emp_name后面
修改一个字段:数据类型、长度、默认值(略)
alter table myempl
modify emp_name varchar(25);#修改字段长度
alter table myempl
modify emp_name varchar(35) default 'aaa';#修改字段默认值,一般字段默认值为null
alter table customers
modify c_contact varchar(50) after c_birth;#将c_contact移动到c_birth后面
重命名一个字段
alter table myempl
change salary monthly_salary double(10,2);
alter table myempl
change email my_email varchar(50);
删除一个字段
alter table myempl
drop column my_eemail;
重命名表
方式一:推荐
rename table
rename table myempl to myempl1;
方式二:
alter table myempl1
rename to myempl2;
删除表
drop table
不光表结构删除掉,同时表中的数据也删除掉,释放表空间
drop table if exists myempl;
清空表
清空表中的所有数据,但表结构保留。
truncate table employees_copy;
DCL中commit与rollback的使用
commit:提交数据。一旦执行commit,则数据就被永久保存在数据库中,意味着数据不可rollback回滚(撤回),但可以采用其他操作。
rollback:回滚数据,可以实现数据回滚。回滚到最近的一次commit之后。
对比truncate table和delete from
相同点:都可以实现对表中所有数据的删除,同时保留表结构。
不同点:truncate table一旦执行,表数据全部清除。同时数据是不可以回滚的。
delete from表数据可以全部清除(不带where)也可以选择性删除。且数据可以回滚。
DDL和DML的说明
DDL操作一旦执行,就不可回滚。
DML操作默认情况下也是不可回滚的。但若在执行DML前执行了SET autocommit=FALSE,则执行的DML操作就可以实现回滚。