什么是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
image.png
起别名 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 单引号
image.png
5 between and
select age from user where age between 20 and 30;
这个是包含20和30的,顺序不能换。
6 使用in,判断某字段的值,是否符合某一字段。列表的值必须统一
select age from user where age in(18,22,26)
7 查询名字为空的或者没有名字的员工年龄.is not null
select age from user where name is null;
8 <>就是等于的意思,可以代替7里的is
select name from where age <> 10;找年纪不为10岁的名字
9 注意如果问的是有哪些编号,记得要去重!!distinct
10排序查询 处理limit 就是这个在最后面
select * from user order by age desc;从高到低排序,降序
select name,age order by age asc;从低到高排序,升序。默认
查询id>10的名字,要求按年龄大小排序
SELECT name,id,age FROM USER WHERE id>10 ORDER BY age; 如果查询工信息和年薪,按年薪高低进行排序。年薪不在表格里
image.png
把年薪不存在的用别名表示
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
13 instr 出现索引的第一次的位置,找不到就为0;
SELECT INSTR('阿珍爱上了阿强','爱上了') ;
显示为3
14 trim去除空格,只能去除前后,不能去除中间
SELECT TRIM('aa' FROM 'aaa阿森aaaaa') 这个只能去除aa,不是去除a。
15 lpad 左填充
select lpad('我牛批无敌',8,'$');显示 我牛批无敌$$$
image.png
16 rpad 右边填充
17 replace 替换
select replace('我无敌牛批','无敌牛批','菜鸡真菜');
我菜鸡真菜
18 round 四舍五入
select round(2.369,2)小数点后取几位,2.36
19 时间函数 str_to_date -这个可以变/区别就是会加上0
image.png
y一定要大写!! 第二个后面的%可自己去定义。
image.png
如果日期格式不是常规的模式,要找到特定的入职时间
image.png
20date formact 用年月日的写法
select date_formact('1998-4-3','%Y年%m月%d日')
21 case 多重设定
select 显示的东西 case 工资 when 30 then 工资*1.1
when 40 then 1.2 end from 表名
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搭配,image.png
count可以统计行数image.png
image.png
image.png
myisam count速度最快
innodb count*和count(1)差不多 一般不用count加字段
因为查询出来基本上是一行,所有注意不能再查询一排,对应表格的格式
最大入职时间和最小入职时间的相差天数
image.png

23 分组查询
image.png
image.png
分解出来写,在合上去,看原有表里面有没有
image.png
有就放在where那里
image.png
分组查询可以分为两类: 主要根据数据,一个是数据表里已经有的,一个是通过自己的函数创造出来的
分组前: 放在group by 前面 where后面
以及分组后: 在having 后面
image.png
多表查询的时候,起了别名,查询的字段就不能用表名了
加查询条件用and,奖金不为0.
image.png
如果两个表都有这个列名,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
image.png
image.png
外连接
image.png
一样的只有部分,分主从表
特点:以主表为主
主表中有匹配的,则显示配的值,没有就显示null
外查询的结果=内连接结果+主表中有而从表中没有的记录
左外 左边主表 left
选谁为主表,看最终显示的信息。
后面的查询信息,所添加的条件不需要看前面要求。最好用从表的主键,也没事
image.png
image.png
select 需要查看的字段 from 主表
left join 从表表 on 连接条件 where 连接完成之后显示的数据,还需要进行的筛选
image.png
image.png
image.png

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

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

image.png
image.png
子查询是优先于主查询进行的,因为主查询要利用子查询的结果
image.png
image.png
注意子查询只能一条数据!!!!><=
image.png
image.png
image.png
image.png

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

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

26 insert
批量插入
image.png

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

27 修改语句
1 修改单表
image.png

2 修改多表
image.png
image.png

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

2多表 delete 第一个跟的是要删除的数据那张表
image.png
3 使用delete删除如果是自增的,删除了5条,往里面加入,从6开始
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 已经在的表
image.png
只复制部分数据
create table cope cope4 select id ,name where nation="条件"
image.png

30数据库的类型
image.png
设置无符号 加 unsigned 这个意思就是无符号了
image.png
设置了无符号,如果超出范围,显示临界值,比如int 设置了,
加个负数则显示为0
image.png
浮点型 设置float 后,小数点后保留几位。而前面那个数表示整个长度不能超过5位。 double随便插
image.png
char 表示的是固定的字符
varchar 表示的是可变的字符
如果 char(10) varchar(10)都插入中国两个字,2个字符
char还是开10个长度(效率高,耗时),varchar只会开2个长度
char有默认值,可以不用设置
image.png
只能插入一个数,有范围
31日期
image.png
date 只到日 datetime到秒 timestamp差不多

31JDK1.8日期新特性
localDatetime用的比较多
image.png
image.png
localdatetime没有偏移量,直接设置就行
image.png

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

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

         机读:from开始读

image.png

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


伍六七
1 声望0 粉丝

« 上一篇
面试题
下一篇 »
面试题