#####数据库操作语法
#遍历整个数据库
show databases ;
#创建一个数据库
create database SoftUser;
#删除一个数据库,如果这个表存在
drop database if exists superadmin1;
#使用这个数据库
use superadmin;
#查询当前处于哪个数据库
select database();
#####数据表操作语法
#遍历当前数据库所有表
show tables ;
#创建表
create table daili(
id int(4) not null primary key auto_increment,
name varchar(50) not null,
sex int(4) not null default '0',
degree double(16,2)) comment '信息表';
#给表添加成员类型
ALTER TABLE MyClass ADD MESSAGE VARCHAR(50) COMMENT '备注';
#修改表成员类型
ALTER TABLE MyClass change MESSAGE NEWname_MESSAGE int COMMENT '备注';
#删除表成员类型
ALTER TABLE MyClass drop NEWname_MESSAGE;
#修改表名
ALTER TABLE myclassnew RENAME TO MyClass;
#删除表,如果表存在
drop table if exists MyClass1;
#查询表成员类型
desc MyClass;
#显示表成员创建的sql语句
show create table superadmin;
#########DML对表的数据进行操作
#增加数据(指定字段赋值)
insert into MyClass(id,name) values (3223,'22'), (11,'ggg');
#增加数据(所有字段赋值)
insert into MyClass values (3223,'22',2,2), (11,'ggg',1,1);
#删除数据
delete from MyClass where name = '1';
#改单个字段数据
update MyClass set sex='221' where id=1;
#改多个字段数据
update MyClass set sex='221', name= 'ak' where id=3223;
#查询表里字段信息
select name,id from myclass;
#查询表里字段信息并起别名
select name '名字',id'编号' from myclass;
#查询表所有成员
select * from myclass;
#查询表过滤
select * from MyClass where degree='2';
select * from MyClass where degree is null;
select * from MyClass where degree is not null;
select * from MyClass where sex >10 && sex <500;
#查询表过滤 __每个字符代表一个占位符,%x代表最后一位是x
select * from MyClass where name like '__发';#查询名字是三个字,最后一个字是发的数据
select * from MyClass where name like '%发';
select * from MyClass where name like '%发%';#查询名字里任何位置包含发的数据
#聚合函数
#count统计数量 max取最大值 mix取最小值 avg取平均值 sum求和
select sum(sex) from myclass;
select sum(sex) from myclass where sex = 1;
#分组查询,大多数配合聚合函数
#根据sex分组 ,求不同sex数量
select sex, count(*) from myclass group by sex;
select sex, avg(sex) from myclass group by sex;
# 查询sex小于100的成员,并根据id分类,获取id = 1的成员
select id ,count(*) from myclass where sex < 100 group by id having id = 1;
#排序查询 asc升序(默认可不写) desc降序
select * from myclass order by sex desc;
#按sex降序,如果sex相同则根据id升序
select * from myclass order by sex desc,id asc;
#分页查询 limit必须再最后
# limit 索引(页码-1)*需要展示的数量 ,需要展示的数量;
select * from myclass limit 3 ,3 ;
# 按降序的方式查索引
select * from myclass order by sex desc limit 3 ,3 ;
#如果order by过滤的字段不唯一,则再加一个唯一的字段条件,否则可能漏数据
select * from myclass order by sex desc, name desc limit 3 ,3 ;
#用户管理
#创建用户 itcast,只能再当前主机localhost访问,密码 123456
create user 'itcast'@'localhost' identified by '123456';
#创建用户 heimna,可以再任意主机访问访问,密码 123456
create user 'heimna'@'%' identified by '123456';
#修改用户密码
ALTER USER 'heimna'@'%' identified with mysql_native_password by '1234';
#删除用户
DROP USER 'itcast'@'localhost';
#查询用户有什么权限
SHOW GRANTS FOR 'heimna'@'%';
#授予用户权限 all select insert update delete ALTER drop create
grant all on superadmin.* to 'heimna'@'%';
#撤销权限
revoke all on superadmin.* from 'heimna'@'%';
#默认是localhost,改成%可以外网连接
#刷新资源(更改用户信息后需要)
FLUSH PRIVILEGES;
#约束 用于创建表的时候给成员加限定条件
#非空约束:限制该字段的数据不能为null--- NOT NULL
#唯一约束:保证该字段所有数据唯一性,不重复--- unique
#主键约束:主键是一个表的唯一标识,非空且唯一 --- primary key
#默认约束:保存数据时,若为设置值,则采用默认值 --- default
#检查约束:保证字段值满足某一个条件 --- check ( )
#外键约束:让两张表建立连接,保证数据一致性 --- foreign key
#alter table 表名 add constraint 外键名 foreign key (此表设置外键成员) references 主表名(主表的primary key/UNIQUE 成员名)
#创建一张表:ID(bigint),name(varchar(10非空唯一)),age(int大于0,小于等于120),status(char(1)默认1),gender(char(1))
create table superadmin(
ID bigint primary key auto_increment comment '主键', #auto_increment 自动增长
name varchar(50) NOT NULL unique comment '名字',
password varchar(50) NOT NULL comment '安全码',
Version varchar(50) NOT NULL comment '版本号',
Updateaddress varchar(50) comment '更新地址',
Unbind int default 0 comment '解绑扣时间',
announcement varchar(500) comment '公告',
Staticdata varchar(50) comment '静态数据',
Softwarestatus int default 0 comment '软件状态', #收费 免费 停用
Updatemethod bool default 0 comment '更新方式', #0不强制 1强更
registerTime int default 0 comment '注册送时间',
Openmore bool default 0 comment '多开' #0不许 1可以
#constraint foreign key (此表设置外键成员) references 主表名(主表的primary key/UNIQUE 成员名)
) comment '软件信息';
drop table yueshu;
#外键约束
#alter table 表名 add constraint foreign key (此表设置外键成员) references 主表名(主表主键成员名)
#行为
#no action / restrict 拒绝参照表删除或更新参照字段;
# CASCADE 删除或更新参照表的参照字段时,外键表的记录同步删除更新;
#删除更新行为
#alter table 表名 add constraint foreign key (此表设置外键成员) references 主表名(主表主键成员名) on update行为 on delete 行为
#多表查询
#隐式内链接 查询的是 AB两表相交部分的信息
#select * from 表A,表B where 条件
select * from software,softkami where software.name = softwareName;
#显式内链接 查询的是 AB两表相交部分的信息
#select * from 表A inner join 表B on 条件
select * from software inner join softkami on software.name = softwareName;
#左外连接 查询的是 A表所有数据 + AB两表相交部分的信息
#select * from 表A left outer join 表B on 条件
select * from software left join softkami on software.name = softwareName;
#右外连接 查询的是 B表所有数据 + AB两表相交部分的信息
#select * from 表A right outer join 表B on 条件
select * from software right join softkami on software.name = softwareName;
#自链接 查询的是 A表所有数据 ,必须把A表当两个表来看,给A表起别名
#内查询
select A.name,B.name from software A,software B where A.name = B.name;
#外查询
select A.name 'a表',B.name 'b表' from software A left join software B on A.name = B.name;
#联合查询 union 把多次查询的结果合并,形成一个结果集
#union all 合并所有结果
#union 合并后结果去重
select * from software where name ='1'
union
select * from software where software.password ='1';
#事务
#查看事务提交方式,1为自动提交,0为手动
select @@autocommit;
#设置事务提交方式
set @@autocommit = 1;
#提交事务 前面的修改表的sql语句必须执行commit才会生效,否则都是无效的
commit ;
#回滚事务 出现错误就回滚
rollback ;
#事务方式二,不修改提交方式
#开启事务
start transaction ;#begin也可
#提交事务 成功则提交
commit ;
#回滚事务 出现错误就回滚
rollback ;
mysql的语句
于 2023-12-07 17:52:42 首次发布