当前位置:网站首页>MySQL基础学习
MySQL基础学习
2022-07-26 05:00:00 【19921106】
0、MySQL数据库介绍
0.1、数据库常见类型
关系型: 有表、有库,来存储和表达数据之间的关系。
oracle、mysql、sql server、sqlite
⾮关系型: 根据键值来存储,没有表
Redis、Mongodb0.2、sql语言分类

0.3、常用sql语句
模糊查询
任意⼀个字符:_
查询姓名为两个字的学⽣ select * from students where name like '__'
任意多个字符:%
查询姓百且年龄⼤于20的学⽣ select * from students where name like '百%' and age>20
连续范围 between 开始 and 结束
select * from students where age not between 20 and 25
查询1班除外其他班级学⽣的平均年龄、最⼤年龄、最⼩年龄
select class, avg(age),max(age),min(age) from students group by class having
class != "1班"
where和having的区别?
where是对from后边指定的表进行数据筛选,属于对原始数据的筛选。
having是对group by的结果进行筛选。having后边的条件中可以用聚合函数,where后边不可以。
分页
计算第⼏⻚取数据公式:
select * from 表名 limit (n-1)*m,m n:第⼏⻚ m:每⻚显示多条
内连接另⼀种写法
select * from students,scores where students.studentNo=scores.studentno
结论:产⽣笛尔卡积,执⾏速度会⾮常慢。禁⽌
⼦查询
sql语句中嵌套sql语句
⼦sql语句要么充当条件,要⻔充当数据源
select * from scores where studentNo = (select studentNo from students where
name = '王昭君’)
查询18岁的学⽣的成绩,要求显示成绩(列⼦查询)
select * from scores where studentNo in (select studentNo from students where
age=18)
查询和王昭君同班、同龄的学⽣信息(⾏⼦查询)
select * from students where (class,age)=(select class,age from students where
name='王昭君')
充当数据源
select * from scores inner join (select * from courses where name in ("数据
库","系统测试")) temp on temp.courseNo=scores.courseNo
列出每个部⻔中⼯资⼩于本部⻔平均⼯资的员⼯信息
select e.empname 姓名,s.salary ⼯资,d.deptname 部⻔, temp.avg_salary 部⻔平均薪资
from employees e
inner join departments d
on e.deptid=d.deptid
INNER JOIN salary s
on s.empid=e.empid
inner join (select d.deptid,avg(s.salary) avg_salary from employees e inner
join departments d on e.deptid=d.deptid INNER JOIN salary s on
s.empid=e.empid group by d.deptname) temp
on temp.deptid=d.deptid
where s.salary< temp.avg_salary
1、常用命令
登录相关
mysql -u root -p 本地登录MySQL
mysql -h 182.167.12.3 -u user1 -p -P 3308 指定IP地址和端口号登录MySQL数据库
删除
delete from 表名 where 字段=值;删除⼀条或部分记录
truncate table 表名; 删除所有记录(截断表)
drop table 表名 ; 删除表
delete 与 truncate的区别?
delete from 表名
说明:主键⾃增⻓不会从1开始,可以使⽤where条件
truncate table 表名
说明:保留结构,主键⾃增⻓从1开始,不可以使⽤where条件,速度⽐delete快
关键字
show databases, 查看当前有哪些库
use 数据库名; 选择使⽤库;
create database 库名 charset=utf8;⾃⼰新建⼀个库
drop database 库名;删除数据库;
select database();确认当前选择的哪个库
show tables, 查看当前库下所有表
desc 表名, 显示表设计
show create table 表名, 显示建表语句包括索引
数据约束
1、主键(primary key):每条记录的唯⼀标识符
2、⾮空(not null):此字段不允许填写空值
3、惟⼀(unique):此字段的值不允许重复
4、默认值(default):当不填写此值时会使⽤默认值,如果填写时以填写为准
5、外键(foreign key):维护两个表之间的关联关系2、数据类型及对应长度
2.1、整数
整数类型是不带小数部分的数值,可以设置有符号类型和无符号类型(就是正数)

2.2、小数
MySQL 中使用浮点数和定点数来表示小数。
浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);定点类型只有一种,就是 DECIMAL。
浮点类型和定点类型都可以用(M, D)来表示,其中M称为精度,表示总共的位数;D称为标度,表示小数的位数。
浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10。
FLOAT 类型的取值范围如下:
有符号的取值范围:-3.402823466E+38~-1.175494351E-38。
无符号的取值范围:0 和 -1.175494351E-38~-3.402823466E+38。
DOUBLE 类型的取值范围如下:
有符号的取值范围:-1.7976931348623157E+308~-2.2250738585072014E-308。
无符号的取值范围:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。
浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的范围;缺点是会引起精度问题。
最后再强调一下:在 MySQL 中,定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据),使用 DECIMAL 的类型比较好,另外两个浮点数进行减法和比较运算时也容易出问题,所以在使用浮点数时需要注意,并尽量避免做浮点数比较。
2.3、日期类型
MySQL 中有多处表示日期的数据类型:YEAR、TIME、DATE、DTAETIME、TIMESTAMP。当只记录年信息的时候,可以只使用 YEAR 类型。

2.4、字符串类型
MySQL 中的字符串类型有 CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET 等。VARCHAR(M) 是长度可变的字符串,M 表示最大列的长度,M 的范围是 0~65535。长度限制不能超过65535个字节。根据字符集,字符类型若为gbk,每个字符占用2个字节,最大长度不能超过65535/2 =32766; 字符类型若为utf8,每个字符最多占用3个字节,最大长度不能超过 65535/3 =21845
2.5、TEXT 类型
TEXT 列保存非二进制字符串,如文章内容、评论等。当保存或查询 TEXT 列的值时,不删除尾部空格。TEXT 类型分为 4 种:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。不同的 TEXT 类型的存储空间和数据长度不同。
TINYTEXT 表示长度为 255(28-1)字符的 TEXT 列。
TEXT 表示长度为 65535(216-1)字符的 TEXT 列。注意这个单位是字符,如果字符是GBK则为varchar的2倍长度,UTF-8则3倍长度
MEDIUMTEXT 表示长度为 16777215(224-1)字符的 TEXT 列。
LONGTEXT 表示长度为 4294967295 或 4GB(232-1)字符的 TEXT 列。
2.6、ENUM 类型
ENUM 值在内部用整数表示,每个枚举值均有一个索引值;列表值所允许的成员值从 1 开始编号,MySQL 存储的就是这个索引编号,枚举最多可以有 65535 个元素。
2.7、二进制字符串类型
二进制字符串类型有时候也直接被称为“二进制类型”。MySQL 中的二进制字符串有 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。

2.8、BLOB 类型
BLOB 是一个二进制的对象,用来存储可变数量的数据。

边栏推荐
- Recursive implementation of exponential enumeration
- An SQL server queries the latest records as of a certain date
- 奥特学园ROS笔记--6
- 2022 a.static query on tree (tree section)
- Google Emoji guessing game helps parents guide their children to surf the Internet safely
- 迁移服务器,重新配置数据库(数据库无监听,启动监听报TNS-12545、TNS-12560、TNS-00515错误)
- 滑动窗口——leetcode题解
- Vector explanation and iterator failure
- 注解@Autowired如何自动装配
- CountLaunch Demo的测试
猜你喜欢

Database startup message: ora-29702: error occurred in cluster group service

Principle of image nonlocal mean filtering

minipcie接口CAN卡解决工控机扩展CAN通道的难题 minipcie CAN

【语义分割】2018-DeeplabV3+ ECCV

Recursive implementation of exponential enumeration

Correspondence between IEC61131 data type and C data type

can 串口 can 232 can 485 串口转CANbus总线网关模块CAN232/485MB转换器CANCOM

2022 Henan Mengxin League game (3): Henan University L - synthetic game

Briefly describe the application fields of WMS warehouse management system

五个维度着手MySQL的优化,我和面试官都聊嗨了
随机推荐
Vector explanation and iterator failure
Molecular skeleton transition tool -delinker introduction
Solve the error string value: '\xf0\x9f\x98\xad',... 'for column' commentcontent 'at row 1
C language - pointer one touch ※
MySQL 执行失败的sql是否会计入慢查询?
Redis解决库存超卖问题
Database startup message: ora-29702: error occurred in cluster group service
Have you known several distribution methods of NFT? What are the advantages and disadvantages of different distribution methods?
JVM第五讲:纵横数据如何应对洪峰推送
2022 Henan Mengxin League game (3): Henan University B - reverse pair count
columns in GROUP BY clause; this is incompatible with sql_ mode=only_ full_ group_ By mysql8.0 solution
[mathematical modeling] analytic hierarchy process (AHP)
Use field parameters for report translation
C语言——字符串函数,内存函数集锦以及模拟实现
2022 Hangdian multi school DOS card (line segment tree)
The pit of history can only be filled up as far as possible
CountLaunch Demo的测试
推荐系统-机器学习
Soft exam review and plan
创建MySQL数据库的两种方式