数据库基础知识
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
浙公网安备 33010602011771号