MySQL基础知识
一级目录
二级目录
三级目录
一、基本的SQL语句
1.SQL的分类
- DDL:数据定义语言。CREATE \ ALTER \ DROP \ RENAME \ TRUNCATE
- DML:数据库操作语言。INSERT \ DELETE \ UPDATE \ SELECT (重中之重)
- DCL:数据控制语言。COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE
2.创建和管理数据库
查看数据库:
== show databases; ==
查看创建的数据库:
== show create database test; ==
改utf8mb3是自己设置的字符集
显示了指明了要创建的数据库的字符集
create database test2 character set ‘gbk’;
切换数据库:
use test;
查看当前数据库中保存的数据表
show tables;
查看当前使用的数据库:
select database() from dual;
查看指定数据库下保存的数据表:
show tables from ssm;
3.修改数据库
更改数据库字符集:
alter database test character set ‘utf8’;
4.删除数据库
- 方式1:
drop database test;
- 方式2:
drop database if exists test; #(如果要删除的数据库存在,则删除成功。如果不存在,则默默结束,不会报错。)
5.如何创建数据表
use test;
show create database test;
#方式1:
create table if not exists myemp1(
id int,
emp_name varchar
)
6.修改表
- 添加一个字段:
alter table myemp1
add salary double(10,2);
- 修改一个字段:数据类型、长度、默认值(略)
alter table myemp1
modify emp_name varchar(25) default '默认值';
- 重命名一个字段:
alter table myemp1
change salary monthly_salary double(10,2);
alter table myemp1
change email my_email varchar(50);
- 删除一个字段:
alter table myemp1
drop column my_email;
7.重命名表
- 方式1:
rename table myemp1
to myemp2;
8.删除表
# drop删除后,不能回滚,删除表结构,同时删除表数据,释放表空间
drop table if exists myemp2;
9.清空表
#清空表中的所有数据,但是表结构保留
truncate table myemp1;
10.DCL中COMMIT 和 ROLLBACK
COMMIT:提交数据。一旦执行COMMIT,则数据就被永久的保存在了数据库中,意味着数据不可以回滚。
ROLLBACK:回滚数据。一旦执行rollback,则可以实现数据回滚。回滚到最近的一次commit之后。
11.对比truncate table 和 delete from
#相同点:都可以实现对表中所有数据的删除,同时保留表结构。
#不同点:
truncate table : 一旦执行此操作,表数据全部清除。同时,数据是不可以回滚的。
delete from : 一旦执行此操作,表数据可以全部删除。同时,数据是可以实现回滚的。
12.DDL和DCL的说明
- DDL的操作,一旦执行,就不可以回滚
- DML的操作,一旦执行,也是不可回滚的。但是,如果在执行DML之前,执行了set autocommit = false,则执行DML操作就可以实现回滚。
13.修改
#同时修改一条数据的多个字段
update emp1
set hire_date = CURDATE(), salary = 6000
where id = 4;
14.约束
-
为什么需要约束?为了保证数据的完整性
-
什么叫约束?对表中字段的限制
-
约束的分类:
角度一:约束的字段的个数
单列约束 VS 多列约束角度二:约束的作用范围
列级约束:将此约束声明在对应字段的后面
表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束角度三:约束的作用
- not null (非空约束)
- unique(唯一性约束)
- primary key (主键约束)
- foreign key (外键约束)
- check (检查约束)
- default (默认值约束)
-
如何添加约束?
create table 时添加约束
alter table 时添加或者删除约束 -
如何查看表中的约束
select * from information_schema.table_constraints
where table_name = '表名'
二、视图
15.视图
- 视图是一个虚拟的表,本身是不存储数据的。视图的本质就可以看做是存储起来的select语句
- 视图应用的场景:针对于小型项目,不推荐使用视图。针对于大型项目,可以考虑视图。
- 视图的优点:简化查询;控制数据的访问
精简版:
create view 视图名称 [(字段列表)]
as 查询语句
如何创建视图:
案例:
过程1.3 复制表的时候不会复制约束和自增策略
#针对于单表
CREATE VIEW v_users
AS
SELECT emp_id, emp_name, age
FROM users;
#查看视图
SELECT * FROM v_users;
创建视图的时候,在select 语句后面可以设置别名
小括号里面的字段个数与select后面的字段个数要相同
查看表对象、视图对象
show tables;
查看视图结构:
desc 视图名称;
查看视图的属性信息
show table status like '视图名称' \G;
查看视图的详细定义信息:
show create view 视图名称;
更新视图中的数据也会更新表中的数据,更新语法与修改表的语法一样。一般情况下,可以更新视图中的数据。但是也有不能更新视图中数据的场景
虽然视图可以更新数据,但总的来说,视图作为虚拟表,主要用于方便查询,不建议更新视图的数据。对视图数据的更改,都是通过对实际数据表里数据的操作来完成的。
删除视图:
drop view 视图名称;
三、存储过程与函数
后续再说。。。。