全部笔记🔗
本文记录了学习MySQL的笔记,其中课件资源全部来源于尚硅谷,详细信息请移步b站
MySQL数据库、数据表的创建、修改、删除
1.1 数据存储的过程
- 创建数据库
- 确认字段
- 创建数据表
- 插入数据
1.2 标识符号命名规则
- 数据库名、表名不能够超过30个字符,变量名不能超过29
- 使用字母和数字
- 中间不能包含空格
- 保证字端名和类型的一致性
1.3 创建数据库
方式1:
CREATE DATABASE mytest1;
创建数据使用的是默认的字符集方式2:
CREATE DATABASE mytest CHARACTER SET 'gbk'
显示的指明了要创建的数据库的字符集,这里用gbk
为🌰方式3:
CREATE DATABASE IF NOT EXISTS mytest CHARACTER SET 'utf8'
如果要创建的数据库已经存在了就不会创建了(即使字符集不同),但是不会报错
1.4 管理数据库
- 查看当前连接中的数据库都有哪些:
SHOW DATABASES
- 切换数据库:
USE 数据库名
- 查看当前的数据库中保存的表:
SHOW TABLES
- 查看指定数据库下保存的数据表:
SHOW TABLES FROM 数据库名
1.5 修改数据库
一般的修改数据库都是更改字符集,因为修改数据库的成本是很高的:将旧库中的内容都要复制到新的库中
ALTER DATABASE mytest CHARACTER SET 'utf8'
1.6 删除数据库
重点来了:删库跑路的第一步
DROP DATABASE 数据库名
DROP DATABASE IF EXISTS 数据库名
2、如何创建数据表
方式1
创建的基本方式同上述的创建数据库
IF NOT EXITS
,注意指定好类型同时需要有创建表的权限,我们现在没有使用Linux,默认的都是有root权限的
CREATE TABLE IF NOT EXISTS myemp1(
id INT, #int 类型
emp_name VARCHAR(15), #字符串类型 15长度的VARCHAR
hire_date DATE #日期类型
)
#使用 DESC 表名看一下内容
DESC myemp1
#表查询的演示
id int YES
emp_name varchar(15) YES
hire_date date YES
查看创建表的语句的结构
SHOW CREATE TABLE myemp1
如果创建表的时候没有指明使用的字符集,默认使用表所在数据库的字符集
方式2:基于现有的表进行创建表
#会将查询的表的数据导入新建的表
CREATE TABLE myemp2
AS
SELECT employee_id, last_name, salary
FROM employees
#基于以前创建的表 employees 通过SELECT创建新的表
🌰1:创建一个表employees_copy,实现对于employees表的复制,包括表的数据
CREATE TABLE employees_copy
AS
SELECT *
FROM employees
🌰2:创建表employees_blank,实现对于employees表的复制,不要表的数据
CREATE TABLE employees_blank
AS
SELECT *
FROM employees
#WHERE department_id > 1000000; #在过滤条件上面写上一个不可能的表达式子
WHERE 1 = 2;
3、管理数据表
1.修改表
添加一个字段:
#默认添加到最后一个字段
ALTER TABLE myemp1
ADD salary DOUBLE (10, 2)
#通过FIRST关键字可以将添加的数据加入到表的前面
ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST
#使用AFTER显示的设置插入数据的位置,添加到emp_name的后面
ALTER TABLE myemp1
ADD email VARCHAR(45) AFTER emp_name
修改一个字段
#修改名称的长度
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25) DEFAULT 'aaa'
重命名一个字段
#将表中的salary重新命名
ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10,2)
删除一个字段
#将表中的id字段删除掉
ALTER TABLE myemp1
DROP COLUMN id
4.重命名表
方式1:
RENAME TABLE myemp1
TO myemp11
方式2:
ALTER TABLE myemp1
RENAME TO myemp2
5.删除表
不光将表结构删除掉,同时表中的数据也全部删除掉,释放表空间
DROP TABLE IF EXISTS myemp2
6.清空表
清空表:清空表中的所有的数据,但是表的结构保留
TRUNCATE TABLE employees_copy
#将上述的表中数据删除、但是表的结构还是存在的
7.DCL中COMMIT和ROLLBACK
COMMIT:提交数据。 一旦执行了COMMIT,数据就永久保存了,不能数据回滚
ROLLBACK:回滚数据,回滚到最后一次COMMIT之后
对比TRUNCATE TABLE 和 DELETE FROM
相同点:都可以实现对于表中的所有数据的删除,同时保留表的结构
不同点:
TRUNCATE TABLE:一旦执行表中数据全部清除,不支持回滚
DELETE FROM:可以全部清除,数据可以实现回滚
创建和管理表的练习题目
🌰1:创建数据库test01_office,指明字符集为utf8,在此数据库下执行:
CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8'
🌰2:创建表dept0
字段 类型
id INT(7)
NAME VARCHAR(25)
CREATE TABLE IF NOT EXISTS dept01(
id INT(7),
`name` VARCHAR(25)
)
🌰3:将表departments中的数据插入新表dept02中
CREATE TABLE dept02
AS
SELECT * FROM atguigudb.departments
🌰4:创建表emp01
字段 类型
id INT(7)
first_name VARCHAR(25)
last_name VARCHAR(25)
dept_id INT(7)
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
🌰7:删除表emp01
DROP TABLE emp01 #不能够进行回滚
🌰8:将表emp02重命名为emp01
RENAME TABLE emp02 TO emp01
🌰9:在表dept02中和emp01中添加新列test_column,检查操作
ALTER TABLE emp01 ADD test_column VARCHAR(10)
DESC emp01
ALTER TABLE dept02 ADD test_column VARCHAR(10)
DESC dept02