Mysql基本语句

1 篇文章 0 订阅

服务管理
启动:net start mysql
关闭:net stop mysql
登录:mysql -u用户名 -p密码 [ -hip地址 -P端口]
MySql数据类型和约束
数据类型
int:整数类型,对应Java的int
double(m,d):m表示数字的总位数,d表示小数位数
char(n):固定长度字符串。如果n是3,那么这个数据就必定要占用3个字符的空间
varchar(n):可变长度字符串。数据多大,就占多大存储空间。最多保存n个字符。占 65535字节
timestamp:时间戳类型。yyyy-MM-dd HH:mm:ss。 1970~2038
datetime:日期时间类型。yyyy-MM-dd HH:mm:ss。 1000~9999
date:日期类型。yyyy-MM-dd
varchar和char的区别在于char不够n个会用空格补全, varchar不够不会补全.
约束
主键约束:primary key
每一张表都必须有一个主键,是一张表里的唯一性标识。
把一个字段设置成为主键,要求这个字段的值:非空唯一
如果主键是数字类型,可以设置为自增:primary key auto_increment
在已有表中,修改表添加主键:
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
唯一性约束:unique
添加了唯一性约束的字段,值不能重复
非空约束:not null
添加了非空约束的字段,要求值不能为空
默认值约束:default 默认值
添加了默认值约束的字段,不设置值的时候,采用的是默认值
外键约束:constraint 约束名称 foreign key(外键字段) references 主表(主键)
添加了外键约束的字段,值必须从主表的主键中取值。
删除外键
ALTER TABLE 从表 drop foreign key 外键名称;
具体操作:修改从表丢弃外键,注意告诉我的是外键约束名,而不是外键名
删除从表的emp_depid_ref_dep_id_fk外键(外键约束名)
ALTER TABLE employee DROP FOREIGN KEY emp_depid_ref_dep_id_fk;

在表情存在况下添加外键
ALTER TABLE 表名 ADD CONSTRAINT emp_depid_ref_dep_id_fk FOREIGN KEY(dep_id) REFERENCES department(id);

外键的级联
在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作ON UPDATE CASCADE – 级联更新,主键发生更新时,外键也会更新ON DELETE CASCADE – 级联删除,主键发生删除时,外键也会删除

DDL

操作database
创建database:create database 数据库名
查看databse:
查看创建信息:show create database 数据库名
列出所有库:show databases;
查看当前在哪个库里:select database();
切换database:use 数据库名
删除database:drop database 数据库名
操作table
创建table
create table 表名称(字段名 字段类型 [约束], …字段名 字段类型 [约束] );
查看table
列出所有表:show tables;
查看表创建信息:show create table 表名称;
查看表结构:desc 表名称
修改table
重命名表:rename table 表名称 to 新名称
添加字段:alter table 表名称 add 字段名 字段类型 [约束]
修改字段类型:alter table 表名称 modify 字段名 字段类型 [约束]
修改字段名称:alter table 表名称 change 字段名 新字段名 字段类型 [约束]
删除字段:alter table 表名称 drop 字段名
删除table
drop table 表名称

DML

插入数据:
insert into 表名称 (字段1,字段2,…) values (值1, 值2,…);
可以插入指定字段的数据
前边写了几个字段,后边就必须有几个值
值必须要符合字段的精度要求。double(5,2) 999.99
insert into 表名称 values(值1, 值2,…)
必须插入表里所有字段的数据
数值必须要和表的字段顺序相同
修改数据
update 表名称 set 字段1=值1, 字段2=值2,… [where 条件]
删除数据
delete from 表名称 [where 条件]

DQL

单表查询
基本查询
查询所有数据:select * from 表名称
查询指定字段数据:select 字段1, 字段2,… from 表名称
查询并运算:select 字段1 + 1000, 字段2 - 200 ,… from 表名称
查询并处理空值:select ifnull(字段1, 为空时的取值) + 1000, 字段2 - 200 ,… from 表名称
查询并起别名:select 字段1 + 1000 [as] 别名1, 字段2 - 200 [as] 别名2 ,… from 表名称
去重查询:select distinct 字段1, 字段2,… from 表名称
重复数据:distinct后边所有字段的值全部都一样,才是重复数据。
条件查询
单条件查询
逻辑:>, <, >=, <=, =, <>(!=), is null, is not null
范围:字段 between 起始值 and 结束值 包含头尾值
集合:字段 in (值1, 值2)
模糊查询:字段 like ‘石%’
%:任意多个任意字符
_:一个任意字符
多条件查询
and:并且的意思
or: 或者的意思
not: not(条件) 排除符合条件的数据
排序查询
order by 排序字段1 排序规则1, 排序字段2 排序规则2,…
排序规则:
升序:ASC 默认
降序:DESC
一般是以int类型或者时间类型排序,针对varchar类型字段排序的话mysql会自动从首位字符排序,如果需要按int类型的排序方法 order by (字段+0) desc
聚合统计
统计个数:count(*)
求和:sum(字段)
求平均值:avg(字段)
求最大值:max(字段)
求最小值:min(字段)
注意:聚合函数会忽略null值
分组查询
group by 分组字段 having 分组后的过滤条件
where和having的区别:
where是对原始表字段进行过滤;having是对分组的数据进行过滤的
where在分组前进行过滤;having是在分组后进行过滤的
where的条件是原始表的字段;having的条件是分组后的值
分页查询
limit index,size
index:从哪个索引开始查询数据
size:查询几条数据
多表查询
内连接查询:查询多表中必然有关联的数据
隐式内连接查询:select * from 表1, 表2 where 关联条件 [and 过滤条件]
显式内连接查询:select * from 表1 inner join 表2 on 关联条件 [where 过滤条件]
外连接查询:查询一张表的所有数据,以及另外一张表有关联的数据。如果另外一张表中没有相关联的数据,显示成null
左外连接:查询左表的全部数据,右表的关联数据
select * from 左表 left [outer] join 右表 on 关联条件 [where 过滤条件]
右外连接:查询右表的全部数据,左表的关联数据
select * from 左表 right [outer] join 右表 on 关联条件 [where 过滤条件]
子查询
单行单列子查询-子查询结果是一个值
select * from user where uid = (select uid from orders where oid = 1)
多行单列子查询-子查询结果是一个集合
select * from user where uid in (select uid from orders where ordertime between ‘2018-01-01’ and ‘2018-12-31’)
多行多列子查询-子查询结果是一张虚拟表,需要拿虚拟表和其它表进行关联查询
select * from user u, (select * from orders where ordertime between ‘2018-01-01’ and ‘2018-12-31’) t where u.uid = t.uid

DCL

用户管理
创建用户
create user ‘用户名’@‘主机名’ identified by ‘密码’
主机名:localhost表示用户只能在MySql本机进行登录;%表示可以任意电脑上登录MySql
修改用户密码
管理员修改普通用户的密码:set password for ‘用户名’@‘主机名’ = password(‘新密码’);
修改管理员自己的密码(cmd里执行):mysqladmin -u用户名 -p password 新密码 -----回车之后,需要输入原密码
注意:新密码不需要使用引号括起来
删除用户
drop user ‘用户名’@‘主机名’
权限管理
增加授权:
grant 权限1, 权限2,… on 数据库名.表名 to ‘用户名’@‘主机名’
权限:select,update,delete,alter,drop等等。all:表示所有权限
查看授权
show grants for ‘用户名’@‘主机名’
取消授权
revoke 权限1, 权限2,… on 数据库名.表名 from ‘用户名’@‘主机名’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值