mysql客户端登录及参数
mysql -uroot -p -P3306 -p接端口号 mysql -uroot -p -h -h代表主机,不写默认登录本机,登录别的电脑需要配置远程登录 客户端退出:exit,\q,(windows下ctrl+c可以退出)
密码相关操作
如何修改账户密码? 从5.7开始mysql强制要求修改密码再操作!!!
mysql数据库和表的操作
sql(结构化查询语言) 分为三大类
DDL(数据定义语言)
create
drop
DML(数据库 操作语言)
CRUD(增删改查)
DQL(数据查询语言)
select语言
DCL(数据控制语言)
grant
revoke
数据库对象(DB):
show databases; # 显示当前数据关系系统中所有的数据库 这4个数据库时官方内置的数据库,他们有特殊作用的,不要随意的修改
创建数据库
create 指令的使用
create [user|database|table......][其他条件]
创建数据库:cretae database 数据库名称 创建一个属性全部默认的数据库MYSQL默认编码时Latin1编码
cretae database 数据库名称 default charset=utf8mb4;创建数据库确定编码
数据库里面有表,存储真正的数据-->
use 数据库名 进入数据库
show table 查看表
删除数据库
drop{[user|database|table…} option drop datebase 数据库名称
表(table)
创建表: create table 表名称(
字段一 类型 [约束条件.....],
字段二 类型 [约束条件.....]
);
表的约束
约束条件: 主键约束:用来做唯一标识符 primary key 一般不关心主键的值,建议主键自增id int primary key auto_increment,用来区分每一条记录。关系型数据库必须有主键。 外键约束:指定和约束多张表的关联关系 非空约束:not null 唯一约束:不能重复,可以为空 默认值约束:如果在插入数据时没有给值,则默认为空,如果给了默认值则为给的值。 检查约束:8.0之前不生效,可以用枚举enum范围用触发器 desc 表名---->描述表 select * from表名 —>查询表的所有数据 插入数据 insert into 表名称[字段一…字段n] values (值1…值n);
删除表
drop table 表名
查看表
show columns from 表名称 show tables|from 数据库名][like wild]; 显示当前数据库已有的数据表的信息【结构和创建信息】
修改表的结构
以及存在了一张表,只是这表不能满足我们的需求
alter table 表名称 add|drop|modify|change 条件 add 添加字段 drop 删除字段 modif 更改字段的条件【主键条件,是否为空,默认值】 change 旧名字 新名字 条件 修改列的名字 rename 旧名字 新名字修改表的名字
复制表
复制表结构 creat table name like name 插入数据: 单个数据插入
INSERT INTO table_name (att_1, att_2, ..., att_n)
把查出来的数据插入到另一张表里去(结构需要相同)
insert into 目标name select * from 工具表
create table 目标name select * from 工具表name 结构内容一起复制(*可以换成name,id等指定复制列)
### 远程登录
MYSQL默认拒绝远程登录!!!!
#### 如何开启远程登录
MYSQL.user表下的host字段时用来规定客户端登录的
10.10.10.10 固定客户端ip
% 任意ip地址
10.30.40.% 规定了某一范围内的ip地址
```sql
user mysql;
update user set host='%' where user='root';
刷新权限或重启mysql服务
flush privileges;
mysql的数据类型
数值型: 整数:smallint ,int,bigint 浮点数:float,double,decimal(num1(共多少位),num2(小数展示几位)) 位(bit):二进制的位,只有0,1现在以及不怎么用了 字符串: char(长度) 定长 没有得补上 varchar(长度) 定长 智能 sql server中还有nchar(长度),nvarchar(长度)n表示Unicode编码 Oracle中有varchar2(长度)本质和varchar一样 文本字符串(大文本): text 日期:再数据库中,数字,字符串,日期可以自己完成转换。
自带数据库
授权和撤销授权
移除权限
DML语句
CRUD,增删改查
insert into table_name[(字段一,字段n)] values(值一,值n);
replace 是insert和update 的结合体,如果替换的数据不存在该表中,则使用insert如果存在则使用update(如果重复就相当于删除后再添加)
delete from table_name 全部清空
delete from table_name where条件 建议通过主键删除
delete删除是经过数据字典的。ID不会清除 truncate删除 truncate 表名字 ----非常具有风险的操作不经过数据字典,删除后自增的ID会从新开始
update table_name set 字段1=新值1 where条件
select * from table_name 查询全表,很有风险因为不确定表内容多少, select 字段1,字段2… from table_name select 字段1,字段2… from table_name where 条件查询 运算符(面试可能会问)
简单的条件查询
where id=1;<=>(该符号,1.等价于=2.可以当作is可以判断null)
不等值匹配
where id!=1;where id<>1
select * from t_name where age between 15 and 30 [num1,num2]闭区间
select * from t_name where id (也可以加NOT不在值内)in(1,3,5,6,7)
select distinct age from t_name
select age as 别名,gender as 别名 from 表
- 模糊查询
like 不是等于 % 任意匹配 _ 匹配一个位—第几位是什么
复杂的条件查询
分组: 分组时指值相同的值当作一个组 分组统计 分组统计时参与查询的字段必须时分组的字段 count()函数完成统计
count(column):null数据不统计 group by----分组配合聚合函数有很多作用 通过性别分组,查询人数大于三人的组—where和(过滤)Having筛选 排序:要求按照年龄从小到大排序 ORDER BY默认升序—asc升序,DESC降序 分页:将大量的数据,分批次展示—limit(截取) 关键字 limit num —截取多少数据 limit num1,num2 ----num1起始位置,num2长度(每页的数据) 在分页的时候,存在四个变量 当前页:pageNow 默认都是第一个页面 每页数量:pageSize 由程序员决定 总页数:allCount 查询出来,select count(*) 总页数:pageCount 算出来
查询语句,复杂时候,可能存在,where条件,分组,过滤,排序,分页 为什么需要将数据存在多张表: 如果将数据直接存在一张表中,字段如果部署于同一类信息就会产生大量数据冗余(重复) 外键:用来描述多张表之间关联关系
|