Mysql

什么是mysql? database 数据仓库

    DBNS 数据库管理系统   数据库通过这个创建和操作系统
    SQL管理数据库语音

数据库管理系统。数据库是关系型
使用内核线程完全多线程,可以轻松使用多个CPU
每个表最多支持64个索引。每个索引可以包含1到16列或部分列。

数据库储存数据的特点:1需要将数据放在表里,在把表放在库里。

        2 表示有特性的
        3必须有返回值,sql语句

my.ni修改配置的地方
mysql启动 : net start mysql net stop mysql
怎么看库: show databases;
怎么看表;show tables;
show tables from 库民;看库里面的表
查看版本 select version(); mysql -V
insert 表名(id,name) into value(15,"dsad");
查看表结构: desc 表名
注释:-- 空格 或者是# 多行注释 / /
数据库中这个表示这是个列名,不是关键字 格式化F12
Mysql_第1张图片
起别名 select 100*98 as 结果;
1 select name as 性,select age as 年龄 from 表名;
as起别名。去重重名。如果别名有特殊符号,如out #put,就加上"out # put".
2 去重 select distinct age as 年龄 from 表名;

不能有两个去重的东西,只能有一个列名

3 + 的作用 查询员和性连接成一个字段,并显示为姓名。
+号会把字符型转化成数值,成功就做加法运算。失败就变0.只要一方为null,结果就是null。
comcat中间有逗号隔开
拼接表名的写法: select concat(name,age) as 我多大了 from user;
注意字段中有一方为null,和任意字段结果都是null。有null和不为null,怎么办?
select concat(name,ifnull(age,0)as 我多大了 from user;
还有一个isnull,如果是0就是显示为1
字符型必须用单引号如a.
4 模糊查询 %多个字符 _一个字符
select name from user where name like%a;
select name from user where name like a___i_;
查名字第一个为a,第五个为i的员工名
如果查询里面有下滑线的_,进行转义
select name from user where name likea/_;
第二位数就是_这个。使用转义字符 escape 单引号
Mysql_第2张图片
把年薪不存在的用别名表示
select , salary12(1+ifnull(commission,0)) as 年薪 from employess order by 年薪;
按姓名的长度进行排序
select length(name) 名字长度
,name,id ,age from user order by 名字长度。
排序的话,会遇到两个一样的数值,怎么按规定排序,不规定即是默认。直接在后面加
select length(name)as 名字长度,id,name,age from user order
by 名字长度,id;名字长度一样按升序排序
11数据库的一个汉字占3个字节,一个字母一个字节
length就是获取字节长度为几

12 substr截取 索引从1开始
select substr('阿珍爱上了啊强',2) 牛啊; 结果:珍爱上了啊强
select substr('阿珍爱上了啊强',2,3
) 牛啊; 结果:珍
image.png
如果是等于,可以把salary提取case的后面 就是2000then A

22分组函数
sum
select sum(age) from user
select avg(age) from user
select min(age) from user
select max(age) from user
select count(age) from user
SELECT SUM(age),AVG(age),MIN(age),MAX(age),COUNT(age) FROM user
可以保留小数,round
SELECT SUM(age),ROUND(AVG(age),2),MIN(age),MAX(age),COUNT(age) FROM user
sum avg 处理数值型
min max cound 可以任何类型
全部忽略null值
都distinct搭配,Mysql_第3张图片

23 分组查询
Mysql_第4张图片
如果两个表都有这个列名,name就需要其别名
24 非等值连接
案例 查询出员工的工资和工资级别
用between and
22 自连接:自己一张表里面:
1查询员工名和上级名次
23语法 : select 查询列表

          from  表1 别名 【连接类型】    
          join 表2 别名
          on 连接条件
          【where 筛选条件】
          【group by 分组】
          【having 筛选条件】
          【order by 排序列表】
          ![image.png](/img/bVcHWFr)
          ![image.png](/img/bVcHWFv)

内连接 inner
左外 left
右外 right
交叉cross
非等值连接:between on
Mysql_第5张图片

23子查询
出现在其他语句内部的select语句,称为子查询,或者内查询
Mysql_第6张图片
按结果集的行列数不同
单行子查询 结果集只有一行一列,子查询只支持这种

列子查询,只有一列多行
行子查询 一行多列
表子查询  多行多列

Mysql_第7张图片

24 分页查询
当现实的数据一页现实不全,需要分页提交请求
Mysql_第8张图片
查询第11条到25条。 从第几条开始,索引是有0的,后面要显示几条
select * from user limit 11-1,25-(11-1)
如果是分页 page的时候
limit (page-1)*size,size

25 联合查询 union 查询部门编号大于90
查询的结果来自于多个表,而表之间是没有关系的
image.png
union会自动去重 变union all 会去重

26 insert
批量插入
Mysql_第9张图片

乐观锁,数据库查询之前加个字段,之后加个字段,

27 修改语句
1 修改单表
Mysql_第10张图片

2 修改多表
Mysql_第11张图片

28 删除 自增不需要'',直接写1,其他要单引号
1单表

2多表 delete 第一个跟的是要删除的数据那张表
image.png

29 DDL 数据对应语音对数据表,库的操作
创建库: create database user;

     create database if not exists user;
     Alter database user character set utf-8设置字符集
     drop user if exists user;

30表的修改 都的加column
列的操作
1 修改列名
Alter table 表名 change 列名 新列名 类型(可以改,或者原来的,必须写)
2 修改列队的约束或者类型
Alter table 表名 modify 改的列名 改的类型
3 添加新列
Alter table 表名 add 新列名
4删除列
Alter table 表名 drop 列名
5 修改表名
Alter table 表名 rename to 新表名
删除表 drop table 表名
6 复制表的结构 create table cope like 已经在的表
Mysql_第12张图片

30数据库的类型
Mysql_第13张图片
date 只到日 datetime到秒 timestamp差不多

31JDK1.8日期新特性
localDatetime用的比较多
Mysql_第14张图片

32 SQL性能下降的原因:
1 查询语句写的烂,各种子查询,建了索引,没建立索引
join少一点
2 索引失效: 建了没用。
单值索引:create index 建索引,比如name
比如买东西,品牌就会建立成索引。
image.png

复合索引:
3关联查询太多join
SQL执行顺序:手写:select

         机读:from开始读

Mysql_第15张图片

4服务器调优及各个参数设置

你可能感兴趣的