MySQL狂神笔记(不全)

初始mysql数据库

alter table 表名 convert to character set gbk;

1.概念

1.1 DB database数据库 存数据

2. 数据库分类:
关系型数据库(sql):

mysql,Orcale,Sql Server,DB2,SQLlite

非关系型数据库(NoSQL)not only

Redis,MongDB

3.DBMS(数据库管理系统)处理数据

数据库的管理软件,科学有序维护获取数据

~~ Ctrl+R mspaint 画图工具~~

4.MySQL 简介:

前瑞典MySQL AB公司

后属于Oracle旗下产品

navicat软件使用

查询IP地址:win+R ipconfig

2操作数据库

操作数据库>表>表中数据

mysql不区分大小写、

2.1操作数据库(了解)

创建 create database [if not exists]库名;

删除数据库 drop database [if exists] kuming;

使用数据库 use 库名;-------库名为特殊字符用``票号

查看所有的数据库 show 库名;

数据库的列类型

数值:从小到大

·

create databases kuming;
show databases;
drop database kuming;

2.2 数据库列的类型

数值

  • tinyint 十分小的数据 一个字节
  • smallint 较小的数据 2个字节
  • mediumint 中等大小的数据 三个字节
  • int 标准的整数 4个字节 常用的int
  • bigint 较大的数据 8个字节
  • float 浮点数 8个字节
  • double 浮点数 8 个字节
  • decimal 字符串形式的浮点数 金融计算一般使用

字符串

  • char 字符固定大小 0~255
  • **varchar 可变字符串 0~65535 常用String **
  • tinyint 微型文本 2^8-1
  • text 文本串 2^16 -1

时间日期 Java.util.Date

  • data YYYY-MM-DD 日期 格式
  • time HH:mm:ss 时间格式
  • datatime YYYY-MM-DD HH: mm:ss 最常用的时间格式
  • timestamp 时间戳 1970.1.1到现在的毫秒数
  • year 年份表示

null

  • 没有值 未知
  • 不要用null运算
2.3数据库的字段属性(重点)

Unsigned

  • 无符号的整数
  • 声明该列不能为负数

zerofill

  • 0填充的
  • 不足的位数,使用0来填充,int(3),5……005

自增

  • 通常理解为自增,自动在上一条记录的基础+1 (默认)
  • 通常用来设置唯一的主键~ index 必须是整数类型
  • 可自定义设置主键自增的起步值和步长

非空 null not null

  • 假设设置 not null,如果不给它赋值,就会报错!
  • null,如果不填写值,默认就是null

默认

操作表
# 注意点 ,使用英文() 表的名称和字段尽量用``
#字符串使用单引号括起来!
#所有的语句后加  ,----英文 
#最后一个不用加
/* comment  '名' 注释
auto_increment   自增
default  '名' ///  default null   默认值
primary key  主键  一般一个表有一个唯一的主键
*/
create table if not exists `stedents`(
`id` int(4) not null auto_increment  comment `学号`,
 `name` varchar(30)  not null default '匿名'
primary key(`id`)

)engine=innodb  default charset=utf-8;

create table [if not exists]  `表名`(
`字段名` 列类型 [注释][索引][注释],
    `字段名` 列类型 [注释][索引][注释],
    ....
    `字段名` 列类型 [注释][索引][注释]
)[表类型][字符集设置][注释]

3.mysql数据管理

3.1外键(了解)
创建:

方式一:创建表时创建

方式二;创建表的时候没有外键

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IXpqBulf-1637144354165)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211029140955795.png)]

alter table 表 ADD

alter table 'employees'
add constrainf 'FK_departmentid' foreing
key('departmemtid') references 'departments' (departmentid);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4lGGA2P9-1637144354169)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211029141156892.png)]

4.DQL数据查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W4rdCfXg-1637144354171)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211105210755379.png)]

4.1指定查询字段

语法: select 字段,… from 表名

字段名不见名知意可以起别名(字段名as新名from表名as新表名

select 字段 from表明

查询全部学生:select *from student;

查询指定字段 select ‘字段名’ ,’字段名‘ ,… from student

给字段起别名,也可以给表其别名:select ’Name’ AS 姓名,‘ID’ AS 学号 from student AS 学生表

##函数 拼接字符串concat(a,b)
select concat ('姓名:',Name) AS 新姓名  froms tudent
--发现重复数据,去重  ==distinct==
 select distinct 'ID' from employees;

4.2数据库的列(表达式)

语法:select 表达式 from表名

select version() --查询版本
select 299*3-3 as 计算结果     ---用来计算
select @@auto_increment_increment  ---咨询自增步长
------学习成绩+1分
select 'studentscores'+1 AS '提分后'from result

4.3 where语句

作用:检索数据中符合条件的值

搜索的条件由一个或者多个表达式组成!结果 布尔值

1.逻辑运算符

运算符语法描述
and &&a and b a&&b
or ||a or b a||b
not !not a ! a
--查询收入在两千~3000	
select employeesid,'income' from salary
where income>=2000 and  income>=3000;
------模糊区间查询
select employeesid,'income' from salary
where  income between 2000 and  3000;
-----取反
select employeesid,'income' from salary
where  income!=2000;

模糊查询:比较运算符

运算符语法描述
is nulla is null如果操作符为null,结果为真
is not nulla is not null如果操作符不为null,结果为真
betweena between b and c若a在b和c之间,则结果为真
likea like bSQL匹配,如果a匹配b,则结果为真
ina in(a1,a2,a3)假设a在a1,或者a2…其中的某一个值有,结果为真
=====模糊查询=====
select 'employeeid' 'Name' from employees
where Name like '王%'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oF5erRrj-1637144354174)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211026220432525.png)]

单引号不要忘写

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4PbZSZAD-1637144354176)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211026220819770.png)]

====null not null====
--查询note为空的的部门--
select note from departments
where departmentid=''OR  departmentid IS NULL
--where 'zifucuan' is null

4.4联表查询join

join( 链接的表) on (判断的条件)连接查询

where等值查询

思路

  1. 分析需求,分析查询的字段来自哪些表(连接查询)

  2. 确定运用哪种连接方式 7种

    确定交叉点 (数据相同的)

    判断 kc.课程号=xs

----全连接查询----
select distinct kc.课程名,xs_kc.课程号
from kc , xs_kc
where kc.课程名=xs_kc.课程号;
-----join连接----
---1.内连接  笛卡尔积  inner join
---2.



on用于批量,where用于单个

on不会筛选主表信息,

操作描述
inner joinIF 表中至少有一个匹配,就返回行
left join即使右表中没有匹配,也会从左表中返回所有的值
right join即使左表中没有匹配,也会从右表中返回所有的值 (没有–null值)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DA1wUJEm-1637144354177)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211027195849404.png)]

from a left join b on(条件)

自连接----自己的表和自己的表链接

核心:一张表拆为两张一样的表 即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hf2ZHRuZ-1637144354178)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211105091152120.png)]

操作:查询对应子类与父类的关系

--查询父类信息
select a.'categoryid' AS'父栏目', b.'categoryid' AS'子栏目'
from 'category' AS a,'category' AS b
where a.'categoryid' = b.'categoryid' ;--链接条件

4.6子查询

where (值是计算出来的)

本质:在where语句中嵌套一个子查询语句

(由立即外)

where (select* from)


5.mysql函数

5.1常用函数

#数学运算
select ABS(-5) #绝对值
select ceiling(9.8)#向下取整
select floor(98.8)#向上取整
select rand()  #返回一个0~1之间的随机数
select sing(10)#判断一个数的符号  0-0  负数返回-1  正数返回1
#字符串函数
select char_length('加油')#字符串长度
select concat('我','是','你')# 拼接字符串
select insert('我like你',2,4,'喜欢')# 查询,从某个位置开始替换某个长度
select lower('Txy')#转成小写字母
select upper('Txy')#转成大写字母
select instr('txy','t')#返回第一出现的子串的索引
select replace('坚持就能成功','坚持','努力')#替换出现的制定字符串
select substr('坚持就能成功',4,3)#  返回指定的字符串(原字符创,截取的位置,截取的长度)
select reverse('清晨我上马')#反转字符串


#查询姓 周 的同学,并将姓改为  zhou  显示在屏幕
select replace (NAME,'周','zhou') from employees
where name  like '周%';

#时间 和日期函数!!!!
select current_date()   #获得当前日期
select CURDATE()  #获得当前日期
select now()      #获得当前的时间  
select localtime  #本地时间
select sysdate()   #系统时间

#系统 
select system_user()
select user()
select version()

5.2聚合函数

# 聚合函数

#sount()三种   都能统计表中的数据(想查询一个表中有多少记录,用count())
select count(name) from employees;
#count(指定列) 会忽略所有的null值
select count(*) from employees;
#count(*) 不会忽略null值   计算行数
select count(1) from employees;
#count(1) 不会忽略null值,本质 计算行数

select sum(`income`) as 总和 from salary;

复习

顺序很重要
select  去重  要查询的字段 
from  表名(注意:表和字段可以区别名)
xxx join  要连接的表 on 等值判断
where (具体的值 or 子查询语句)
group by (通过哪个字段排序的字段名)
Having (过滤分组后的信息,条件和where是一样的,位置不同)
Order By (通过哪个字段排序)[降序/升序]
limit startindex,pagesixe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值