0
点赞
收藏
分享

微信扫一扫

第十章 创建和管理表

b91bff6ffdb5 2022-10-12 阅读 55

第十章 创建和管理表

1.1 一条数据的存储过程


创建数据库->确认字段->创建数据表->插入数据


1.2 标识符遵守一定的规则

数据库名,表名不超过30个字符,变量名为29个

只能在A-Z,a-z,0-9,_ 总共63个

相同字段数据类型的一致性


1.3 MySql中数据类型


2.创建和管理数据库

方式1:创建数据库

CREATE DATABASE test1 ;

SHOW  CREATE DATABASE test1

方式2:创建数据库并指定字符集

CREATE DATABASE test2 CHARACTER SET  字符集

方式3:

判断数据库是否存在,不存在则创建

CREATE DATABASE  IF NOT EXISTS test3;


DATABASE不能改名,一些可视化工具可以改名,它是创建新库,把所有的表复制到

新库,再删旧库完成的。


2.2管理数据库

查看当前连接中的数据库都有哪些

SHOW DATABASES;


切换数据库

USE mytest2


查看当前数据库中保存的表

SHOW TABLES


查看当前使用的数据库

SELECT DATABASE() FROM DUAL;


查看指定数据库下保存的数据表

SHOW TABLES FROM mysql;


2.3修改数据库

更改数据库的字符集

ALTER DATABASE 数据库名CHARACTER SET 字符集


ALTER DATABASE test1 CHARACTER SET 'gbk';


2.4删除数据库

方式1:

如果存在数据库,则删除成功,如果不存在,则会报错

DROP DATABASE 数据库名

DROP DATABASE test2;

SHOW DATABASES;


方式2:

如果存在数据库,则删除成功,如果不存在,则不会报错

DROP DATABASE IF EXISTS 数据库名;


3.如何创建表

USE atguigudb

CREATE TABLE


方式1:

需要用户具备创建表的权限

CREATE TABLE IF NOT EXISTS mytemp1(id INT,

emp_name VARCHAR(15),使用varchar来定义字符串时,必须使用varchar时指明其长度


hire_date DATE

);

SHOW TABLES;

SELECT * FROM mytemp1;

DESC mytemp1;


SHOW CREATE TABLE  mytemp1;



方式2:基于现有表创建一个表

查询字段的别名 可以作为新创建的表的字段的名称

CREATE TABLE mytemp2

AS

SELECT employee_id,last_name,salary

FROM employees;


SHOW CREATE TABLE mytemp2;

DESC mytemp2;


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

白手起家形式


CREATE TABLE IF NOT EXISTS employee_copy

AS

SELECT * FROM employees;


SHOW CREATE TABLE employee_copy;

DESC employee_copy;

SELECT * FROM employee_copy;


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

富二代模式

CREATE TABLE IF NOT EXISTS employee_blank

AS

SELECT  *

FROM employees

WHERE department_id>10000;


SELECT * FROM employee_blank;


3.1修改表

添加一个字段

ALTER TABLE mytemp1

ADD salary DOUBLE(10,2);默认添加到最后的位置

DESC mytemp1;


ALTER TABLE mytemp1

ADD email VARCHAR(45);


ALTER TABLE mytemp1

ADD phone_number VARCHAR(20) AFTER emp_name;


ALTER TABLE mytemp1

MODIFY emp_name VARCHAR(45) DEFAULT 'aaa';


修改一个字段 数据类型,长度,默认值

ALTER TABLE mytemp1

MODIFY emp_name VARCHAR(45);


重命名一个字段

ALTER ALTER mytemp1

CHANGE salary month_salary DOUBLE(10,2);


删除一个字段

ALTER TABLE mytemp1

DROP COLUMN email;



重命名表

方式1:

RENAME TABLE mytemp1 to mytemp2;


方式2:

ALTER TABLE mytemp1  

RENAME TO mytemp3;



4.清空表

清空表表示清空表中所有的数据,但是表结构保留

SELECT * FROM employee_copy;

TRUNCATE TABLE employee_copy;

SELECT * FROM employee_copy;

DESC employee_copy;



delete,drop,truncate 都有删除表的作用,区别在于:


1、delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。

2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。

3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。




4.DCL中COMMIT和ROLLBACK

COMMIT:提交数据。一旦执行commit,则数据就被永久保存到数据库中,意味着数据不可以回滚

ROLLBACK:回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最后执行的COMMIT之后


SELECT * FROM mytemp2;

DELETE FROM mytemp2;

SELECT * FROM mytemp2;

ROLLBACK;

举报

相关推荐

第十章 类

第十章 接口

第十章,XML

第十章 单调栈

第十章:函数(一)

0 条评论