一、基本命令
1、启动服务:
以管理员的身份运行(windows-system32-cmd)cmd
net start mysql
2、停止服务
以管理员的身份运行(windows-system32-cmd)cmd
net stop mysql
3、链接服务
mysql -u root -p
4、退出链接
quit(exit)
(5-10:前提都是链接服务器)
5、查看版本
select version();
6、查看当前时间
select now();
7、远程连接
格式:mysql -h 192.168.0.104 -u root -p;
输入对方的密码
8、改密码
alter user user() identified by "新密码";
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
9、查看现有用户
select host,user,authentication_string from mysql.user;
10、新建用户
格式:create user "username"@"host" identified by "password";
1.mysql->create user 'test'@'localhost' identified by '123';
2.mysql->create user 'test'@'ip' identified by '123';
3.mysql->create user 'test'@'%' identified by '123';
11、删除用户
格式:drop user 'username'@'host';
12、授权
格式:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';
1、priveleges(权限列表),可以是all priveleges, 表示所有权限,也可以是select、update等权限,多个权限的名词,相互之间用逗号分开。
2、on用来指定权限针对哪些库和表。
3、*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名
eg:
grant all privileges on `test`.* to 'test'@'localhost';
grant select on test.* to 'user1'@'localhost'; 给予查询权限
grant insert on test.* to 'user1'@'localhost'; 添加插入权限
grant delete on test.* to 'user1'@'localhost'; 添加删除权限
grant update on test.* to 'user1'@'localhost'; 添加权限
flush privileges; 刷新权限
13、查看某个用户的权限
show grants for 'jack'@'%';
14、更改用户名
mysql> rename user 'jack'@'%' to 'jim'@'%';
二、数据库操作
1、创建数据库
格式:create database 数据库名 charset=utf8;
eg:create database pengwei charset=utf8;
2、删除数据库
格式:drop database 数据名
eg:drop database pengwei;
3、切换数据库
格式:use 数据库名;
eg:use pengwei;
4、查看当前数据库
select database();
5、查看当前有多少数据库
show databases
三、表操作
1、查看当前数据库中的所有表
show tables;
2、创建表
格式:create table 表名(列及类型)
说明:
auto_increament表示自增长
primary key 表示主题
not null 表示不为空
eg:create table student(id int auto_increment primary key,name varchar(20) not null,
age int not null,gender bit default 1,address varchar(20),isDelete bit default 0);
3、删除表
格式:drop table 表名;
eg:drop table student;
4、查看表结构
desc 表名;
5、查看建表语句
格式:show create table 表名;
eg:show create table student;
6、重命名表:
格式:rename table 原表名 to 新表面
eg:rename table student to students;
7、修改表结构
格式:alter table 表名 add|change|drop 列名及类型
四、数据操作
1、增
a、全列插入
格式:insert into 表名 values( )
说明:主键是自增长,但是在全列插入时需要占位,通常用0
eg:insert into students values(0,"lijuan",19,0,"河南",0);
b、缺省插入
格式:insert into 表名(列1,列2,....) values(值1,值2....)
eg:insert into students(name,age,address)values("pengwei",20,"河南");
c、同时插入多条数据
格式:insert into 表名 values(...),(....),...
eg:insert into students values(0,"zhangsan",19,1,"河南",0),(0,"lisi",20,1,"河南",0),(0,"zhangsan",21,1,"河南",0);
2、删
格式:delete from 表名 where 条件;
eg:delete from students where id=4;
3、改
格式:update 表名 set 列1=值1,列2=值2,...where 条件
eg:update students set name="lisi" where id=5;
4、查
说明:查询表中的全部数据
格式:select * from 表名;
五、查
1、基本语法
格式:select * from 表名;
说明:select后面写表中的列名,如果为*,表示所有列,列后as a表示为该列取了别名
eg: select name,age from students;
select name as n,age from students;
2、消除重复
在select后面,列前面使用distinct可以消除重复行
eg:select distinct name gender from students;
3、条件查询
a、语法
select * from 表名 where 条件;
b、比较运算符
等于 =
大于 >
小于 <
大于等于 >=
小于等于 <=
不等于 !=或<>
需求:查询id大于3的
eg:select * from students where id>3;
select * from students where id=3;
select * from students where id<3;
select * from students where id>=3;
c、逻辑运算符
and select * from students where id>3 and gender=0;
or select * from students where id>3 or gender=0;
not select * from students where id>3 not gender=0;
d、模糊查询
select * from students where name like "li%"
select * from students where name like "li_"
e、范围查询
in 非连续的集合
between....and... 连续结合
eg:select * from students where id in(6,8,10)
select * from students where id between 6 and 10;
f、空判断
insert into students(name,age)values("李孝利",40);
eg:select * from students where address is null;
g、优先级
小括号,not,比较运算符,逻辑运算符,and比or的优先级高
4、聚合
为了快速得到统计数据,提供了5个聚合函数
a、count(*) 总行数,括号可以写*或列名
b、max(列) 最大值
c、min(列) 最小值
d、sun(列) 求和
e、avg(列) 平均值
eg:select count(*) from students;
select max(id) from students where gender=0;
select min(id) from students where gender=0;
select sum(age) from students where gender=0;
select avg(age) from students;
5、分组
按照字段分组到不同的集合中
分组后只能查看相同的数据列
语法:select 列1,列2,聚合... from 表名 group by 列1,列2;
需求:查询男女生总数
select gender,count(*) from students group by gender;
分组后筛选:
select 列1,列2,聚合... from 表名 group by 列1,列2,...having 列1,聚合...;
select gender,count(*) from students group by gender having gender;
where与having的区别
where 是对from后面的指定的表进行筛选
having 是对分组后的结果进行筛选
6、排序
语法:select * from 表名 order by 列1 asc|desc,列2 asc|desc,...
说明:将数据按照列1,列1相同的按照列2接着排序
默认升序
asc:升序
desc:降序
eg:select * from students order by age;
select * from students order by age desc;
select * from students where gender=0 order by age;
select * from students where gender=0 order by age,id desc;
7、分页
语法:select * from 表名 limit start,count;
说明:start:索引从0开始
count:每次看的条数
eg:select * from students limit 0,3;
select * from students where gender=0 limit 0,3;
六、关联
建表
1、create table class(id int auto_increment primary key,name varchar(20) not null,
stuNum int not null);
2、create table student(id int auto_increment primary key,name varchar(20) not null,
gender bit default 1,classid int not null,foreign key(classid) references class(id) );
向class中插入数据
insert into class values(0,"class1",50),(0,"class2",55),(0,"class3",60),(0,"class4",75);
给班级插入学生
insert into student values(0,"苍井空",0,1);
insert into student values(0,"小泽",0,2),(0,"加藤鹰",1,3);
insert into student values(0,"加藤鹰",1,3);
需求:显示出每个学生所在的班级
select student.name,class.name from class inner join student on class.id=student.classid
select student.name,class.name from class left join student on class.id=student.classid
select student.name,class.name from class right join student on class.id=student.classid
分类:
1、表A inner join 表B:
表A与表B匹配的行为会出现在结果集中
2、表A left join 表B:
表A与表B匹配的行为会出现在结果集中,外加A中独有的数据用null匹配
3、表A right join 表B:
表A与表B匹配的行为会出现在结果集中,外加B中独有的数据用null匹配
Msql数据库常用操作命令
最新推荐文章于 2023-12-14 17:29:13 发布