您现在的位置是:首页 >技术杂谈 >第9章:创建和管理表网站首页技术杂谈

第9章:创建和管理表

钟楼小奶糕6 2024-06-13 12:01:02
简介第9章:创建和管理表

一、数据库的创建修改和删除

1.SQL的分类

DDL:数据定义语言 create创建、alter修改、drop删除、rename重命名、truncate清空

DML:数据操作语言 insert、delete、update、select

DCL:数据控制语言 commit提交、rollback回滚、savepoint保存点、grant权限、revoke回收权限

2.数据的存储过程

3.标识符命名规则

①数据库名、表名不能超过30字符,变量名限制29字符

②使用A-Z,a-z,0-9,_共63个字符

③对象名中间不能包含空格

④在同一个mysql软件中数据库不能重名。在同一个库中,表不重名。同一个表中,字段不能重名

⑤如果字段有保留字,在sql语句使用`着重号引起来

⑥保持在多个表的相同的字段名和类型的一致性

4.如何创建数据库

如果数据库不存在那么创建成功

create database if not exists 数据库名;

5.管理数据库

①查看当前连接的所有数据库

show databases;

②切换数据库

use 数据库名;

③查看当前数据库的表格

show tables;

④查看当前使用的数据库

select database() from dual;

⑤查看指定的数据库下的表格

show tables from 数据库名;

6.删除数据库

drop database if exists 数据库名

如果存在删除成功,如果不存在默默结束,不会报错。

二、创建数据表

1.MySQL常用的数据类型

 2.创建数据表方式1:

create table if not exists test(
id int,
emp_name varchar(15),
hire_date date
);

①查看表结构

desc test;

②查看创建表的语句

show create table 表名

 3.创建数据表方式2:基于现有表,表中的数据也会复制过来

create table test2
as 
select employee_id,last_name,salary
from employees;

①查看表结构

desc test2;

 

应用:把查询的结果存放到另一张表中,查询语句的别名是新创建表的名称

4.练习:创建一个表emp_copy,实现对employees表的复制,包括数据

create table emp_copy
as
select *
from employees

5.练习:创建一个表emp_blank,实现对employees表的复制,不包括数据

create table emp_copy
as
select *
from employees
where 0

三、数据表(修改、重命名、删除、清空)

1.修改表

alter table

①添加一个字段

alter table test

add salary double(10,2)

②重命名一个字段

alter table test

change salary sal double(10,2)

④删除一个字段

alter table 表名

drop column 列名

2.重命名表

rename table 表名

to 新表名

3.删除表

drop table if exists 表名;

4.清空表

truncate table 表名;

四、DCL的commit和rollback的使用

1. commit:

提交数据。一旦执行commit数据永久保存在数据库中,意思着数据不可以回滚

2. rollback

回滚数据。一旦执行rollback可以实现数据的回滚。

3.对比truncate table 和 delete from

①相同点:对表中所有数据的删除,保留表结构。

②不同点:

truncate table 数据全部删除,数据不能回滚

delete from 数据全部删除,可以回滚

truncate table 比delete速度快,且使用的系统和事务日志资源少,但truncate无事务且不触发trigger,有可能造成事故。不建议使用truncate

4.DDL和DML的说明

①DDL不可回滚,执行完后会执行一次commit

②DML默认不回滚。执行之前设置了 set autocommit = false,可以实现回滚。到最近的commit之后

5.演示—引擎是InnoDB

①delete—回滚到最近的commit之后

commit;
set autocommit=false;
delete from emp_copy;
select * from emp_copy;
rollback;
select * from emp_copy;

②truncate—不能回滚

commit;
set autocommit=false;
truncate table emp_copy;
select * from emp_copy;
rollback;
select * from emp_copy;

6.MySQL8.0的新特性:DDL的原子化

要么执行成功,要么有一个失败后回滚。

五、命名规范

1.表名和字段名用小写字母或数字。用字母开头,不要用数字。单词之间用_

emp_name,level3_name

2.禁用关键字

六、练习

练习一:

#1创建数据库test01_office,指明字符集为utf8。

create database if not exists test01_office character set utf8

#2创建表dept01

create table dept01(

id int(7),

name varchar(25)

);

 #3将表departments中的数据插入新表dept02中

create table dept02

as

select *

from atguigudb.departments

#4创建表emp01

create table emp01(

id int(7),

first_name varchar(25),

last_name varchar(25),

dept_id int (7)

);

#5. 将列last_name的长度增加到50

alter table emp01

modify last_name varchar(50);

#6. 根据表employees创建emp02

create table emp02

as

select *

from atguigudb.employees

where 0

#7. 删除表emp01

drop table emp01

#8. 将表emp02重命名为emp01

rename table emp02 to emp01

#9. 在表dept02和emp01中添加新列test_column,并检查所作的操作

alter table dept02

add test_column int;

alter table emp01

add test_column int;

show create table emp01;

show create table dept02;

#10.直接删除表emp02中的列 department_id

alter table emp01

drop column department_id

练习二:

# 1创建数据库test02_market

create database if not exists test02_market

# 2创建数据表 customers

create table customers(

c_num int,

c_name varchar(50),

c_contact varchar(50),

c_city  varchar(50),

c_birth date

);

# 3将 c_contact 字段移动到 c_birth 字段后面

alter table customers

modify c_contact varchar(50) after c_birth;

# 4将 c_name 字段数据类型改为 varchar(70)

alter table customers

modify c_name varchar(70)

# 5将c_contact字段名改为c_phone

alter table customers

change c_contact c_phone varchar(50)

# 6增加c_gender字段到c_name后面,数据类型为char(1)

alter table customers

add c_gender char(1) after c_name

# 7将表名改为customers_info

rename table customers to customers_info

# 8删除字段c_city

alter table customers_info

drop column c_city

 

练习三:

# 1 创建数据库test03_company

create database if not exists test03_company;

# 2 创建表offices

create table offices(

officeCode int,

city varchar(30),

address varchar(50),

country varchar(50),

postalCode varchar(25)

);

# 3 创建表employees

create table employees(

empNum int,

lastName varchar(50),

firstName varchar(50),

mobile varchar(25),

code int,

jobTitle varchar(50),

birth date,

note varchar(255),

sex varchar(5)

);

# 4、将表employees的mobile字段修改到code字段后面

alter table employees

modify mobile varchar(25) after code;

# 5、将表employees的birth字段改名为birthday

alter table employees

change birth birthday date;

# 6、修改sex字段,数据类型为char(1)

alter table employees

modify sex char(1);

# 7、删除字段note

alter table employees

drop column note;

# 8、增加字段名favoriate_activity,数据类型为varchar(100)

alter table employees

add column favoriate_activity varchar(100);

# 9、将表employees的名称修改为 employees_info

rename table employees to employees_info

 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。