数据库基础知识

group by 可以按多个字段进行分组,多个字段用逗号隔开,没有先后顺序,举例

查询每个部门每个工种的员工的平均工资

select  AVG(salary), department_id, job_id

from employees

group by department_id, job_id

左外连接和右外连接

左外连接,显示关键词left左边表中的所有数据,右边表数据数据少了补NULL值,数据多了不显示;

右外连接,显示关键词right右边表中的所有数据,左边表数据数据少了补NULL值,数据多了不显示;

1.内连接,显示两个表中有联系的所有数据;

2.左链接,以左表为参照,显示所有数据;

3.右链接,以右表为参照显示数据;

Mysql删、查、增、改

增加:alert...add

在已有的表中增加一列,列名为name字段类型为varchar(100)

   alter table 表名 add name varchar(100)

插入数据INSERT INTO 表名称 VALUES (值1, 值2,....) 

 

alter:是DDL语句,是修改数据库中对象(表,数据库,视图。。)的语句

 

update:是DML语句,是修改表中数据的语句。

DML与DDL的含义:

1、DML(Data Manipulation Language)数据操作语言-数据库的基本操作,SQL中处理数据等操作统称为数据操纵语言,简而言之就是实现了基本的“增删改查”操作。包括的关键字有:select、update、delete、insert、merge

2、DDL(Data Definition Language)数据定义语言-用于定义和管理 SQL 数据库中的所有对象的语言,对数据库中的某些对象(例如,database,table)进行管理。包括的关键字有:

create、alter、drop、truncate、comment、grant、revoke

二、DML与DDL的区别:

1.DML操作是可以手动控制事务的开启、提交和回滚的。

2.DDL操作是隐性提交的,不能rollback!

查找操作: select

select 内容  from  表名   where筛选条件  group by 分组 having 分组后筛选  order by +排序  limit+取top值

删除操作:Drop、delete与truncate区别

1、drop (删除表数据和结构):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。

drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。

2、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。

注意:truncate 不能删除行数据,要删就要把表清空。

3、delete (删除表中的数据):delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存

以便进行进行回滚操作。

truncate与不带where的delete :只删除数据,而不删除表的结构(定义)

4、truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用delete。

如果要删除表定义及其数据,请使用 drop table 语句。
5、对于由foreign key约束引用的表,不能使用truncate table ,而应使用不带where子句的delete语句。由于truncate table 记录在日志中,所以它不能激活触发器。

6、执行速度,一般来说: drop> truncate > delete。

7、delete语句是数据库操作语言(dml),这个操作会放到回滚中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。

truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到回滚中,不能回滚,操作不触发 trigger。

 

备注:数据库的增删查改和表的增删查改有些不同

数据库的相关操作
注意:数据库就相当于文件夹
      表就相当于文件
数据库的命名规则:
一.数据库的增删改查(sql语句)
增:create database db1;
删:drop database db1;
改:alter database db1 charset utf8
查:show databases;#查看所有的数据库
    show create database db1;查看指定的数据库
设置默认的utf8,在配置文件中:写上character_set_server = utf8
use db2   #代表你鼠标双击切换目录
select database() #查看你当前在哪个文件夹
二.表的增删改查
增:create table  t1(id int ,name char);  (t1.frm 表结构  ,t1.ibd 表数据) 
删:drop table t1;
改:
插入数据:insert into test(id,name) values(1,'x')
不写给谁传值就指定都传,而且还是按照位置传

查:show tables;  #查看所有表
   show create table t1;#查看指定的表
   select * from t1 #查看表数据
   select id,name from t1  #查看表数据
engine = InnoDB
表的存储引擎是InnoDB

 

posted @ 2020-09-01 21:42  小龙虾爱大龙虾  阅读(192)  评论(0)    收藏  举报