MYSQL简单总结
SQL的分类
数据查询语言(DQL - data querylanguage):select(针对表中数据)
数据操纵语言(DML - datamanipulation language):insert、delete、update(针对表中数据)
数据定义语言(DDL - data definitionlanguage):create、drop、alter(针对表的结构)
事务控制语言(TCL - transactionalcontrol language):commit、rollback
数据控制语言(DCL - data controllanguage):grant、revoke
数据类型
- varchar
* 可变长度字符串:根据实际长度动态分配储存空间
* varchar(3)表示存储的数据不能超过3个字符长度
- char
* 定长字符串:不用判断,效率高
* varchar和char相比:
- 都是字符串类型
- varchar比较只能,可以根据实际数据长度分配空间,比较节省空间,但是在分配的时候需要执行相关的判断程序,效率较低
- char不需要动态分配空间,所以执行效率很高,但是可能会导致空间浪费。
- 若字段中数据不具备伸缩性,如性别,建议采用char类型存储
- 若字段数据具备很强伸缩性,建议采用varchar类型存储
* char(3) 表示存储的数据不能超过3个字符长度
- int
* 整数型
* int(3)表示最大可以存储999
- bigint
* 长整型
* 对应java程序中的long类型
- float
* 浮点型单精度
- double
* 浮点型双精度
* double(7,2),表示7个有效数字,两个小数位
- date
* 日期类型
* 在实际开发中为了通用,所以日期类型一般不使用,一般采用字符代替
- blob
* Binary LargeObject 二进制大对象
* 专门存储图片、声音、视频等数据
* 数据库表中存储一个图片是很常见的,但是存储一个比较大的时间是很少的,一般都是提供一个视频的链接地址
- clob
* CharacterLarge Object 字符大对象
* 可以存储比较大的文本,4G+的字符串可以被储存
- 其他...
DQL
格式:SELECT <变量名> FROM <表名> WHERE <条件> GROUP BY <变量名> HAVING <条件> ORDER BY <变量名> limit a,b; a,b为数字
select ename from emo where ename = trim(‘ SMITH ‘);
select empno,ename,sal from emp where sal between 3000 and 5000;
select ename,sal fromemp where sal not in (1500,5000);
select job,avg(sal)from emp group by job having avg(sal)> 1500;
select ename,salfrom emp order by sal desc limit 2,7;
分组函数:count、sum、avg、max、min
分组函数不能直接使用在where语句中
select sal from emp where sal > avg(sal)
select sum(sal) from emp;
select avg(sal) from emp;
select max(sal) from emp;
select min(sal) from emp;
select count(ename) from emp; (count(字段),当前该字段不为null的计数)
select count(*) from emp;【14个】
select count(*) from emp where comm is null;【10个】(count(*)是满足某个条件的计数)
简单语句
show tables; 查看表格
desc dept;查看表结构
show databases;查看所有database
show tables from world; 查看其它库的表
show create table city;查看建表语句
select database();查看当前所使用数据库名称
select version();查看版本
创建数据库
create database bjpowernode;
use database bjpowernode;
drop database bjpowernode;
连接
select e1.ename empname,e2.enameleadername,from emp e1 inner join emp e2 on e1.mgr = e2.empno;
select e.ename,d.dnamefrom emp e right join dept d on e.deptno= d.deptno;
select e.ename,d.dnamefrom dept d left join emp e on e.deptno= d.deptno
创建表格
drop table if exists t_user;
create table t_user(
idint(10),
namevarchar(32) not null,
emailvarchar(128),
constraint t_user_email_unique unique(email),
constraint t_user_id_pk primary key(id) auto_increment
);
增删改表的数据
insert into t_student(no) values(1);
update t_student set name = 'zhangsan'where no = 3;
delete from t_student where no = 3;
增删改表的结构
ALTER TABLE t_student ADD tel VARCHAR(10);
ALTER TABLE t_student DROP tel;
ALTER TABLE t_student MODIFY tel VARCHAR(20);
事务的四个特征(ACID)
-原子性(A)
*事务是最小的工作单元,不可再分
-一致性(C)
*事务要求所有的DML语句操作的时候,必须同时成功或者同时失败
-隔离性(I)
*事务A和事务B之间具有隔离
-持久性(D)
*是事务的保证,事务终结的标志。【内存中的数据持久到硬盘文件中】
关于事务的术语【不是SQL语句】
-开启事务: start transaction
-结束事务: end transaction
-提交事务: commit transaction
-回滚事务: rollback transaction