目录
m结束符
库
1、创建数据库
2、查看数据库
3、选择,进入数据库
4、修改数据库
5、删除数据库
表
一、数据类型
1、数值类型
2、日期时间型
3、字符串类型
二、表的创建
1、表结构的设计
2、创建表
3、查看表
4、表修改
1、修改表名
2、修改字段名
3、修改字段类型
4、change
5、增加字段
6、删除字段
5、删除表
三、表的约束
1、非空约束
a、创建数据表时
b、修改数据表时
c、删除非空约束
2、唯一约束
3、主键约束
a、创建表时
b、修改表时
4、默认值约束
四、自动增长
要求:
数据操作
(一)、插入数据---insert
1、插入单条数据
验证数据是否插入
插入部分数据
插入多条数据
Insert into table_name set 字段名
更新数据---update
删除数据---delete
例子
单表查询
一、SELECT语句
二、简单查询
1、列出所有字段名称进行查询
2、使用通配符*进行查询
3、查询指定字段
4、查询去重数据
三、条件查询
(一)、常见比较运算符
1、例子
2、包含运算符in
3、逻辑运算符 or
4、is null
5、is not null
6、like
7、转义字符
(二)、逻辑运算符
1、not
2、and 条件同时满足
3、or
4、between 初值 and 结束值
5、优先级
四、高级查询
(一)、聚合函数
1、count----计数
2、sum() -------求和
3、avg ----平均值
嵌套函数
4、max
5、min
(二)、分组查询
(三)、排序查询
(四)、限量查询
(五)、内置函数
1、concat函数 ----链接函数
(六)、设置别名
多表查询
一、多表查询
一、交叉连接查询
二、内连接
补充:自然连接
自连接
三、外连接
复合条件连接查询
二、子查询
(一)、in关键字结合子查询
(二)、exists关键字
(五)、比较运算符
三、外键约束
索引
一、类型
1、普通索引
2、唯一性索引
3、主键索引
4、全文索引
5、空间索引
视图
事务
特性:
列---投影运算,行------条件运算
m结束符
\G -----纵向结构显示且为结束符
\g = “;”
库
1、创建数据库
create database database_name;2、查看数据库
show databases; -----查看所有库 show create database database_name; ------查看指定库的细节 select database(); ------查看当前选择数据库(前提是需要先进入该数据库)3、选择,进入数据库
use database_name;4、修改数据库
alter database database_name;5、删除数据库
drop database database_name;表
一、数据类型
1、数值类型
整数类型
浮点数类型
decimal(5,2) 5是数值总长度,小数位为2
定点数类型
BIT类型
2、日期时间型
date
3、字符串类型
char 固定 varchar 可变长 enum 枚举型
二、表的创建
1、表结构的设计
字段名 数据类型 是否为空 默认值 主键约束 唯一性约束 注释字端名 是否为外键 字端类型的属性
2、创建表
create table table_name ();
()中间填字段名,中间用“,”分隔开------字段名 数据类型 primary key ----主键 not null -----不为空 comment ----注释 engine -----存储引擎 default --默认值 engine=MYISAM default
3、查看表
desc table_name; ------查看指定的表,基本结构
show tables; ----查看所有表
show create table table_name ; -----查看创建表的细节
4、表修改
1、修改表名
alter table table_name rename to table_new_name; ------修改表名
2、修改字段名
alter table table_name rename column local_name_old to local_name_new; -----修改字段名
3、修改字段类型
alter table table_name modify dnsme char(16); --------修改字段类型
4、change
alter table table_name change local_name_old local_name_new char(20) first; -------修改表名,字段类型,字段位置(必须要带上旧、新表名)
5、增加字段
alter table table_name add id int first; alter table table_name add id int after id ; ------增加字段,默认增加在最后,first添加在第一行,after后要加上字段表示添加在其之后
6、删除字段
alter table table_name drop id; -----删除字段
验证------用desc
5、删除表
drop table table_name; -----删除表
三、表的约束
常见约束:
非空,唯一,主键,
1、非空约束
NOT NULL
a、创建数据表时
在字段的数据类型后加“NOT NULL”
CREATE TABLE tb_dept01( deptno INT, dname VARCHAR(14), local VARCHAR(13) NOT NULL );
b、修改数据表时
在ALTER TABLE语句中通过MODIFY或CHANGE重新定义字段的方式添加非空约束。
ALTER TABLE tb_dept01 MODIFY dname VARCHAR(14) NOT NULL;
c、删除非空约束
ALTER TABLE tb_dept01 CHANGE COLUMN dname dname varchar(14);
2、唯一约束
一个字段也可以做成表级约束(放到最下方)
3、主键约束
主键约束只能做一个(每个表中)
PRIMARY KEY
a、创建表时
CREATE TABLE tb_dept02( id INT PRIMARY KEY, dname VARCHAR(14) UNIQUE, local VARCHAR(13) NOT NULL );
b、修改表时
mysql> ALTER TABLE tb_dept01 ADD PRIMARY KEY(deptno); ------添加
ALTER TABLE tb_dept01 DROP PRIMARY KEY;-----删除
4、默认值约束
<字段名> <数据类型> default <默认值>
a、创建表时
CREATE TABLE tb_emp02( id INT PRIMARY KEY, ename VARCHAR(16) UNIQUE, sal DECIMAL(7,2), status VARCHAR(13) DEFAULT 1 );
b、修改表时
ALTER TABLE tb_emp02 MODIFY sal DECIMAL(7,2) DEFAULT 0.00;
c、删除
ALTER TABLE tb_emp02 CHANGE sal sal DECIMAL(7,2);
四、自动增长
<字段名> <数据类型> auto_incerment
要求:
1、一个表只能有一个
2、整型或浮点型
3、是键(主键或候选键)
可以手动更改,在前一个数值的基础上自动加1
数据操作
(一)、插入数据---insert
1、插入单条数据
Insert into table_name
给整张表的全部数据进行插入
验证数据是否插入
*代表所有字段信息
插入部分数据
插入多条数据
字符串,日期需要加定界符“”或‘’英文状态下
Insert into table_name set 字段名
更新数据---update
不加where,对所有进行修改
加上Where,对于满足条件的进行修改
删除数据---delete
对表中数据进行删除
例子
表中数据全部删掉------空表
单表查询
一、SELECT语句
select [distinct] *|{select_expr1, select_expr2, …} from 数据表名 [where 条件表达式1] [group by 字段名 [having 条件表达式2]] // 分组统计 [order by 字段名 [asc|desc]]s //排序 [limit [offset] 记录数] //限制输出二、简单查询
1、列出所有字段名称进行查询
SELECT 字段名1,字段名2,… FROM 数据表名; 字段名的顺序可以改变
2、使用通配符*进行查询
SELECT * FROM 数据表名;
3、查询指定字段
SELECT 字段名1,字段名2,… FROM 数据表名; 字段顺序可更改
4、查询去重数据
SELECT distinct 字段名 FROM 数据表名;
SELECT distinct 字段名1,字段名2,字段名3 FROM 数据表名; ------同时满足3个字段,条件同时满足
三、条件查询
(一)、常见比较运算符
| 比较运算符 | 说明 |
|---|---|
| = | 比较运算符左右两侧的操作数是否相等 |
| <> | 比较运算符左右两侧的操作数是否不相等 |
| != | 比较运算符左右两侧的操作数是否不相等 |
| < | 比较运算符左侧操作数是否小于右侧操作数 |
| <= | 比较运算符左侧操作数是否小于等于右侧操作数 |
| > | 比较运算符左侧操作数是否大于右侧操作数 |
| >= | 比较运算符左侧操作数是否大于等于右侧操作数 |
| BETWEEN ... AND ... | 比较数据是否存在于指定范围内 |
| IN(包含) | 比较数据是否存在于指定集合内 |
| IS NULL | 比较数据是否为NULL |
| IS NOT NULL | 比较数据是否不为NULL |
| LIKE(模糊查找) | 通配符匹配,获取匹配到的数据 |
列---投影运算,行------条件运算
1、例子
SELECT * FROM 数据表名 where sal<1000;
2、包含运算符in
select * from 数据表名 where deptno in (10,20);
3、逻辑运算符 or
mysql> select * from emp WHERE deptno=10 or deptno=20; 与in(10,20)结果相同
4、is null
mysql> select * from emp where mgr is null;
5、is not null
mysql> select * from emp where mgr is not null;
6、like
mysql> select * from emp where mgr like;
% ---长度为任意的字符串,包括空字符 代表0~n _----一个_代表一个字符
mysql> select * from emp where mgr like'%一';----最后一位为一
mysql> select * from emp where mgr like'__一';
7、转义字符
\%-----即%
mysql> select * from emp where mgr like'%\%%'; -----中间带%的数据
(二)、逻辑运算符
1、not
mysql> select * from emp where mgr not;
2、and 条件同时满足
mysql> select * from emp where 字段名=''and字段名='';
3、or
mysql> select * from emp where 字段名=''or字段名='';
4、between 初值 and 结束值
mysql> select * from emp where 字段名 between 初值 and 结束值;
5、优先级
not>and>or
四、高级查询
(一)、聚合函数
*不考虑空值
字段名会看具体数据是否为空值
1、count----计数
mysql> select count(*) from emp ;
mysql> select count(字段名) from emp ;
2、sum() -------求和
mysql> select sum(cumn) from emp ;
3、avg ----平均值
mysql> select avg(cumn) from emp ;
嵌套函数
mysql> select avg(ifnull(cumn,0)) from emp ;
4、max
mysql> select max(sal) from emp ;
5、min
mysql> select min(sal) from emp ;
(二)、分组查询
mysql> select deptno,avg(sal),sum(sal) from emp group by deptno ;
mysql> select deptno,avg(sal) from emp group by deptno having avg(sal)<3000;
(三)、排序查询
order by [asc|desc] 默认升序, desc---降序
mysql> select * from emp where deptno=30 order by job;
(四)、限量查询
limit [,]记录数
mysql> select * from emp order by sal desc limit 5; ----前5个
mysql> select * from emp order by sal desc limit 1,4; ------1是偏移量,偏移1位,即从第2个开始计算,4是要显示的数量
(五)、内置函数
1、concat函数 ----链接函数
2、
(六)、设置别名
mysql> select * from emp e where e.deptno=30; 表的别名
mysql> select ename as'姓名' from emp e where e.deptno=30; 表的别名 as可以省略
多表查询
一、多表查询
一、交叉连接查询
select 字段名 from 数据表1 cross join 数据表2
select 字段名 from 数据表1 , 数据表2
二、内连接
又叫简单连接
根据连接条件,仅筛选出两张表中相匹配的记录
select 查询字段 from 数据表1 [inner] join 数据表2 on 连接条件即 数据表1.字段=数据表2.字段;
补充:自然连接
可以去除重复字段
select * from 数据表1 natural join 数据表2 ; 把公共字段放在第一列
自连接
连接的两张表是同一张表,必须用别名
三、外连接
select 所查字段 from 数据表1 left|right [outer] join 数据表2 on 匹配条件
复合条件连接查询
select 字段 from 数据表1,数据表2,数据表3 where 数据表1.字段=数据表2.字段 and 数据表2.字段=数据表3.字段
二、子查询
(一)、in关键字结合子查询
mysql> select * from dept where deptno in(select deptno from emp where sal>2900);---工资大于2900
mysql> select * from dept where deptno not in(select deptno from emp where sal>2900); ----工资小于等于2900
(二)、exists关键字
EXISTS关键字用于判断子查询的结果集是否为空,若子查询的结果集不为空,返回TRUE,否则返回FALSE。
select * from dept where exists (select * from emp where emp.deptno=dept.deptno and emp.sal>2900); emp.deptno=dept.deptno ----连接条件
(三)、any关键字
任意一个,必须与比较操作符一起用
select * from emp where deptno=10 and sal>any(select sal from emp where deptno=20);
(四)、all关键字
所有
select * from emp where deptno=10 and sal>all(select sal from emp where deptno=20);
(五)、比较运算符
三、外键约束
注意:主表和从表的关联字段的数据类型必须是一样的
alter table 从表名 add constraint fk_外键字段名 foreign key(外键字段名) references 主表名(主键字段名) fk_外键字段名 ----可任意更改,不能加引号
查看
show create table 表名 \G
ALTER TABLE 从表名 ADD CONSTRAINT [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表表名(主键字段名); [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}] 默认拒绝| 参数名称 | 功能描述 |
|---|---|
| CASCADE | 主表中删除或更新记录时,同时自动删除或更新从表中对应的记录 |
| SET NULL | 主表中删除或更新记录时,使用NULL值替换从表中对应的记录(不适用于已标记为NOT NULL的字段) |
| NO ACTION | 拒绝主表删除或修改外键关联列 |
| RESTRICT | 拒绝主表删除或修改外键关联列。(在不定义ON DELETE和ON UPDATE子句时,这是默认设置,也是最安全的设置) |
删除
delete from emp where deptno=(select deptno from dept WHERE dname='人力资源部');
删除主键数据
DELETE FROM dept WHERE dname='人力资源部';
删除外键约束
ALTER TABLE emp DROP FOREIGN KEY fk_deptno;
索引
一、类型
1、普通索引
是MySQL中的基本索引类型,使用KEY或INDEX定义,不需要添加任何限制条件。
2、唯一性索引
创建唯一性索引的字段,允许有NULL值,但需要保证索引对应字段中的值是唯一的。
3、主键索引
是一种特殊的唯一性索引,用于根据主键自身的唯一性标识每一条记录。主键索引的字段不允许有NULL值。
4、全文索引
主要用于提高在数据量较大的字段中的查询效率。
5、空间索引
只能创建在空间数据类型的字段上。
创建索引
create index 索引名 ON 表名 (属性名 [ ( 长度) ] [ asc | desc ]);
查看索引
Show index from table_name ; ----纯查看索引
Show create table table_name ;
删除索引
drop index index_name on table_name ;
alter table table_name drop index index_name ;
视图
是一张虚拟表
创建
create [or replace] view 视图名[(字段名)] as
单表
查看
修改
事务
特性:
原子性
隔离性
一致性
持久性
p192 第二个蓝跳 查询事务隔离级别
select @@tx_isolation;