MYSQL分类(Database)
数据库操作:
创建表:
库名、表名、字段名规范
表中的数据类型:
char(10) varchar(10) 区别
常用的类型:
常用的约束
数据库中表中记录的操作
数据库表中记录的查询操作(单表)
条件查询
分组操作(group by )
聚合函数查询
分页操作
排序操作(order by)
交叉查询
内连接查询
外连接查询
子查询
MYSQL分类(Database)
数据定义语言:(DDL)data definition language,是用来定义数据库对象:数据库、表、列等;关键字:create alter drop;
数据操作语言:(DML),用来对数据库中的记录进行更新,关键字:insert增、delete删、update改;
数据控制语言:(DCL),用来定义数据库的访问权限和安全级别、以及创建用户;
数据查询语言:(DQL)用来查询数据库中表的记录,关键字:select查、from、where;
数据库操作:
创建数据库: create database 库名 (character set 编码);
删除数据库: drop database 库名;
使用数据库: use 库名;
注释: Sql语句中的注释 在语句之前 --
查看当前所有数据库:show databases;
查看当前操作的数据库: select database();
查看当前数据库中表: show tables;
查看表结构:desc 表名;
删除表:drop table 表名;
修改表:
添加一列:alter table 表名 add 字段名 类名(长度) [约束];
修改列的类型(长度,类型):alter table 表名 modify 想要修改的字段名 类型(长度) [约束];
修改列名:alter table 表名 change 旧列名 新列名 类型(长度) [约束];
删除表中的列:alter table 表名 drop 列名;
修改表名:rename table 表名 to 新表名;
修改表的编码:alter table 表名 character set 编码
查看当前表结构语句: show create table 表名;
创建表:
create table 表名(
字段名 类型(长度) [约束] ,
字段名 类型(长度) [约束] ,
字段名 类型(长度) [约束]
);
库名、表名、字段名规范
随意定义,遵循响应命名规范,不区分大小写,所以驼峰命名法不中了,需要使用下划线,将多个单词分开;如果要使用关键字,需要使用 ` ` 包裹;
表中的数据类型:
整型:int(integer) 普通大小的数,默认就是不超过11位;tinyint 很小的整数 相当于Java的byte;smallint小的整数,相当于short;mediumint中等大小的整数long;
小数类型:float单精度浮点型;double 双精度浮点型;decimal(m,d)压缩严格的定点数,m代表位数,d小数点几位;
日期类型:year 格式YYYY(1901-2155) ;time 格式(HH:mm:SS); datatime 格式(YYYY-MM-DD HH:mm:SS) ;timestamp 格式(YYYY-MM-DD HH:mm:SS utc )
文本类型:char(m) 字符串类型m取值0-255之间整数,表示字符串个数;char(10) varchar(10)
varchar(m) 字符串类型允许长度0-65535之间;表示字符串的个数
char(10) varchar(10) 区别
1、char没加入一条数据 默认他的长度就是10个,如果不够10个,‘aa’ 剩下8位用空格占住;
2、varchar插入是的数据有多长,就占多长,最大是10;
常用的类型:
tinyblob 允许长度0-255字节
blob 允许长度0-65535字节
mediumblob 允许长度0-65535*65535字节
longblob 允许长度很大字节
text 允许长度0-65535字节;
常用的约束:
主键约束:primary key 唯一性,非空性;
唯一约束:unique 唯一性,可以为空,但是只能有一个;
默认约束:default 该数据的默认值;
非空约束:not null 数据不能为空;
外键约束:实际开发中外键会少用,foreign key
自增长:auto_increment 一般用于主键自增长;
数据库中表中记录的操作
1、插入记录:insert into 表名(列名1,列名2,....) values(值1,值2,....) 或者 insert into 表名 values(值1,值2,....);
2、删除记录(不带条件,记录全删,表还在):delete from 表名;
3、删除记录(带条件,只删除条件部分):delete from 表名 where 条件;
4、使用 truncate table 表名; 会删除自增的序列,而使用delete则不会删除之前自增序列;
5、修改表记录:update 表名 set 字段名 = 值,字段名=值,....;
6、修改表记录带条件:update 表名 set 字段名 = 值, 字段名 = 值 where 条件;
数据库表中记录的查询操作(单表):
查询所有: select * from 表名;
查询列:select 列名,列名 from 表名;
查询所有记录使用别名: select * from 表名 as 别名;
查询列名使用别名:select 列名 [as] 别名 from 表名;
查询去掉重复:select distinct(列名) from 表名;
将所有信息改变展示:select 列名+值 from 表名;
条件查询:
比较运算符:
①加在where后面 + 字段和值的比较
②> < >= <= =
③between ...and... 显示在某一区间的值(含头含尾)
④in(set) 显示在in列表中的值 set为集合
⑤like通配符 模糊查询,like语句中有两个通配符
⑥如果没有通配符,like 相当于 =
⑦%用来匹配多个字符(0-xxx): like ’%aa%’
⑧_ 用来匹配一个字符(1): like ‘ _aa_’
⑨is null 判断是否为空;is not null 判断非空
逻辑运算符:
①and 多个条件同时成立
②or 多个条件任一成立
③not 不成立
分组操作(group by ) :
不能和 * 一起使用,这样使用一定是错的;
必须使用分组的列名 作为字段名;
根据字段进行分组,分组后统计每个数据信息;
select 分组列名 from 表名 group by 分组列名;
分组之后再加条件用having 不能再用where:
select 字段名 from 表名 group by 字段名 having 条件。
聚合函数查询:
AVG平均值 select avg(字段名) from 表名;
SUM和值 select sum(字段名) from 表名;
MIN最小值 select min(字段名) from 表名;
MAX最大值 select max(字段名) from 表名;
COUNT总数 select count(字段名) from 表名;
分页操作:
select * from 表名 limit a , b ;
其中a 代表从第(几+1)条数据开始查询,如果是1 就从第2条开始查询,
b代表查询几条数据;当显示内容小于b的时候,会正常显示剩余的所有数据;
排序操作(order by):
select * from 表名 order by 字段名 asc(默认,升序)/desc(降序);
交叉查询(基本不用)
使用到关键字 cross join ,可以省略写成 , ;
内连接查询:
使用关键字inner join , inner 可以省略;
隐式内连接:使用交叉查询,限定(where)查询条件;
显示内连接:使用join来进行查询, 也需要加条件(on);
外连接查询:
使用关键字outer join 、outer可以省略,条件限制使用on,不能用where;
左外连接:left join 以左边表为准,有的数据全部展示;
右外连接:right join 以右边表为准,有的数据全部展示;
子查询:
将一个查询的结果当做另外一个查询的条件;
从staff表中找一个编号最大的人的全部信息;