连接方式
客户端进入数据库的方法:
-> mysql -h [localhost] -u root -p
-> (输入数据库的密码)
数据类型
1.数值类型
->TINYINT 大小:1 bytes
有符号(SIGNED)范围:(-128,127)
无符号(UNSIGNED)范围:(0,255)
描述:小整数值
->SMALLINT 大小:2 bytes
有符号(SIGNED)范围:(-32768,32767)
无符号(UNSIGNED)范围:(0,65535)
描述:大整数值
->MEDIUMINT 大小:3 bytes
有符号(SIGNED)范围:(-8388608,8388607)
无符号(UNSIGNED)范围:(0,16777215)
描述:大整数值
->INT或INTEGER 大小:4 bytes
有符号(SIGNED)范围:(-2147483648,2147483647)
无符号(UNSIGNED)范围:(0,4294967295)
描述:大整数值
->BIGINT 大小:8 bytes
有符号(SIGNED)范围:(-2^63,2^63-1)
无符号(UNSIGNED)范围:(0,2^64-1)
描述:极大整数值
->FLOAT 大小:4 bytes
有符号(SIGNED)范围:(-3.402823466 E+38,3.402823466351 E+38)
无符号(UNSIGNED)范围:0和(1.175494351 E-38,3.402823466 E+38)
描述:单精度浮点数值
->DOUBLE 大小:8 bytes
有符号(SIGNED)范围:(-1.7976931348623157 E+308,1.7976931348623157 E+308)
无符号(UNSIGNED)范围:0和(2.2250738585072014 E-308,2.2250738585072014 E+308)
描述:双精度浮点数值
->DECIMAL 大小:8 bytes
有符号(SIGNED)范围:依赖于M(精度)和D(标度)的值
无符号(UNSIGNED)范围:依赖于M(精度)和D(标度)的值
描述:小数值(精确定点数)
2.字符串类型
char(10) ---固定占用内存为指定值,性能好
varchar(10)----最多不超过指定值,性能较差,占用内存相对较少
3.日期类型
SQL分类:
1.DDL 数据定义语言,用来定义数据库对象(数据库、表、字段)
关于库的操作:
查询:
show databases; 查询所有数据库
select database(); 查询当前数据库
创建:
create database [if not exists] 数据库名 [default charset 字符集] [collcate 排序规则];
删除:
drop database[if exists]; 数据库名
使用:
use 数据库名;
关于表的操作:
添加:
ALTER table 表名 add 字段名 类型(长度) [comment 注释][约束]; 添加字段
查询:
show tables; 查询当前数据库的所有表
DESC 表名; 查询表结构
show create table 表名; 查询指定表的建表语句
修改:
ALTER table 表名 RENAME TO 新表名; 修改表名
ALTER table 表名 MODIFY 字段名 新数据类型(长度); 修改数据类型
ALTER table 表名 CHANGE 旧字段名 新字段名 类型(长度)[comment注释][约束]; 修改字段名和字段类型
删除:
ALTER table 表名 drop 字段名; 删除字段
drop table [if exists] 表名; 删除表名
truncate table 表名; 删除指定表,并重新创建
总结:
2.DML 数据操作语言,用来对数据库表中的数据进行增删改
添加数据(INSERT):
给指定字段添加数据——语法:insert into 表名(字段名1,字段名2,...) values(值1,值2...);
给全部字段添加数据——语法:insert into 表名 values(值1,值2,...);
批量添加数据——语法: insert into 表名(字段名1,字段名2,...) values(值1,值2,...),(值1,值2,...);
insert into 表名 values(值1,值2,...),(值1,值2,...);
注意:
1.字符串和日期型数据应该包含在双引号内
2.插入的数据大小,应该在字段的规定范围内
3.插入数据时,指定的字段顺序需要与值的顺序是一一对应的
修改数据(update):
修改数据——语法:update 表名 set 字段名1= 值,字段名2=值2,...[where 条件];
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
删除数据(delete):
删除数据——语法: delete from 表名 [where 条件]
注意:
1.delete语句的条件可以有,也可以没有,没有则会对整张表进行删除
2.delete语句不能删除某一个字段的值(可以使用update)
总结:
3.DQL 数据查询语言,用来查询数据库中表的记录
查询数据(select):![](https://i-blog.csdnimg.cn/direct/d3fe4f24f076448ebec90321ecc0b4f9.png)
基础查询方式:
select 字段1,字段2,字段3... from 表名; 查询多个字段
select * from 表名; 全表查询
select 字段1[AS 别名1],字段2[AS 别名2] ... from 表名; 设置别名
select DISTINCT 字段列表 from 表名; 去除重复记录
条件查询方式:
语法:select 字段列表 From 表名 where 条件列表;
条件:
注意:between 最小值 and 最大值
聚合函数:
定义:将一列数据作为一个整体,进行纵向计算
常见聚合函数:
1.count 统计数量
2.max 最大值
3.min 最小值
4.avg 平均值
5.sum 求和
语法: select 聚合函数(字段列表)from 表名;
分组查询:
语法:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
where 和 having 区别:
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
判断条件不同:where不能对聚合函数进行判断,而having可以
注意:
执行顺序:where >聚合函数 >having
分组之后,查询的字段一般为聚合函数和分组字段,查询其它字段无任何意义
排序查询:
语法:select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
排序方式:
->ASC:升序(默认值)
->DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
分页查询:
语法:select 字段列表 from 表名 limit 起始索引,查询记录数;
注意:
起始索引从0开始,起始索引=(查询页面-1)*每页显示记录数
分页查询是数据库的方言,不同数据库有不同的实现,mysql是limit
如果查询的是第一页数据,起始索引可以省略,直接简写成limit 10.
执行顺序:![](https://i-blog.csdnimg.cn/direct/392cc2449be0468da2c3aed99a58bcde.png)
总结:
4.DCL 数据库控制语言,用来创建数据库用户,控制数据库的访问权限
管理用户:
查询用户:
use mysql;
select * from user;
创建用户:
create user '用户名'@'localhost' identified by '12356';
create user '用户名'@'%' identified by '12356'; 任意主机都可通过该账户进行访问数据库
修改用户密码:
alter user '用户名‘@’主机名' identified with mysql_native_password by '新密码';
删除用户:
drop user '用户名'@'主机名';
注意:
1.主机名可以用%通配,设为任意主机都可访问
控制权限:
查询权限:
show grants for '用户名'@'主机名';
授予权限:
grant 权限列表 on 数据库名.表名 to ‘用户名'@'主机名';
撤销权限:
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
注意:
多个权限之间,使用逗号分隔
授权时,数据库名和表名可以使用*进行通配,代表所有