MySQL常用命令

一、mysql 的基本使用命令

1.启动mysql服务

(1).windows中启动服务

net start mysql

关闭: net stop mysql

(2).linux启动服务, 默认开启的

service  mysql start

关闭:service mysql stop

2.进入mysql
命令: mysql -u 用户名 -p
然后输入密码即可进入, 如果看到 mysql> 则成功进入

3.window与linux的数据库命令一致

4.查看数据库的版本

select version();

5.查看当前的时间

select now();

6.退出
exit 或者 quit

二、库的操作

1.展示所有的数据库

show databases; 

展示所有的已经存在的数据库
mysql默认会有管理自己的库,表,用户,配置的数据库

2.创建一个数据库
格式: create database 数据库名 charset="utf8";
例: create database school charset="utf8";

3.删除一个数据库
格式: drop database 数据库名;
例: drop database school;

4.修改数据库的名字
Mysql没有直接更改数据库名称的命令。
如果非得修改数据库的名字,可以把原数据库的数据复制到一个新的数据库中(以需要的名字命名),然后把原数据库删除。

注:RENAME DATABASE这条命令在MySQL 5.1.7中被加入,但很快就发现这条命令所带来的危险,于是在MySQL 5.1.23中这条命令被移除。

5.使用某个数据库
格式: use 数据库名;

6.查看当前使用的数据库
格式: select database();

三、表的操作

1.查询当前库中的所有的表
格式: show tables;

2.创建一个表
格式: create table 表名(字段名 字段描述,字段名n 字段描述,.....);
例:

create table student(id int primary key auto_increment,name varchar(20) not null,age int default 17,address varchar(20),sex bit default 1,data1 varchar(20),data2 varchar(20));

3. 查看表的结构
(1).格式:

desc 表名;

(2).格式2:

show create table 表名;

查看创建表的sql语句

4. 删除一个表
格式: drop table 表名;
例: drop table student;

5.修改表
(1).修改表名
格式1: rename table 旧表名 to 新表名;
(2).修改表结构:
格式: alter table 表名 add|drop|change;

  1. 添加一个新的字段
    格式: alter table 表名 add 字段名 字段描述;
    例: alter table student add phonenumber varchar(20);

  2. 删除一个字段
    格式: alter table 表名 drop 字段名;
    例: alter table student drop phone;

  3. 修改一个字段
    格式: alter table 表名 change 要修改的字段名 新的字段名 新的字段类型描述;
    例: alter table student change phonenumber phone varchar(20);

注:开发过程中尽量的不要修改已经有数据的字段 ,
设计表的时候尽量设计一些预留字段

四、数据的操作

1.增加数据
(1).插入一条数据
格式: insert into 表名 values(对应的值1,对应的值2,对应的值n);
例: insert into student values(0,"三胖胖",38,"中国",1);
注意:插入的值要与表对应字段一一对应
如果是自动增长的数据类型,将该值设置为 0即会自动的增长

(2). 缺省值插入
格式:insert into 表名(字段1,字段2,字段n,...) values(字段1对应的值,字段2对应的值,字段n对应的值,....);
例: insert into student(name,age,sex) values("三棒子",74,0);

(3). 插入多条数据
格式: insert into 表名 values(对应的值1,对应的值2,对应的值n),(对应的值1,对应的值2,对应的值n) ,(对应的值1,对应的值2,对应的值n) ....;
例: insert into student values(0,"李大大",66,"北京",1),(0,"严呆呆",55,"北京",1),(0,"小峰子",67,"中南海",1),(0,"种小子",78,"北京",1);

2.删除数据
格式: delete from 表名 where 条件;
例1:

delete from student where id =2;
delete from student where name ='三棒子';

注意:删除一条数据后,该数据后的数据对应的id不会变

3.修改数据
格式: update 表名 set 字段名 = 值1,字段名2 = 值2 where 条件;
例2: update student set name = '金三胖胖', address = '中国' where id =1;

4.查询数据库的表中的所有数据
查询所有数据 格式: select * from 表名;
例: select * from student;

5.查询语句
(1).格式1: select 字段名1,字段名n,.... from 表名 where 查询条件;
格式2: select 字段名1 as 别名,字段名n,.... from 表名 where 查询条件;

  1. select表示查询
  2. select 后面是查询结果要显示的字段名
    例: select name,age from student;
  3. *:表示显示所有字段的数据
  4. from 后面是表名,表示从那个表中查询
  5. where 条件 表示以某个条件进行筛选
  6. 如果没有where条件,表示查询所有
  7. 字段名1 as 别名 可以给显示的字段名取个别名,方便查看

    需求: 展示所有的学生的姓名和年龄

select name as '姓名',age as '年龄'  from student;

查询所有: select * from 表名

(2).查询条件 表达式
1.比较运算符

大于
< 小于
= 大于等于
<= 小于等于
= 等于
!= 不等于
需求: 查询班上大于60岁的学生
例: select * from student where age > 60;
需求: 查询班上小于等于55岁的学生
例:select * from student where age <= 55;
需求: 查询班上不等于55岁的学生
例:select * from student where age != 55;

2.逻辑运算符
且 and
或 or
非 not

需求: 查询班上大于55岁且小于70岁的学生

select * from student where age>55 and age < 70;

需求: 查询班上除了北京的学生

select * from student where not address = '北京';

3.模糊运算符
格式: ..... where 字段名 like '字符串';
任意字符:

  • % 任意多个任意字符
  • _ 一个任意字符

    需求: 查询姓李的同学?

select * from student where name  like '李%';

需求: 查询姓李的同学,且只有2个字?

select * from student where name  like '李_';

需求: 查询名字中包含 胖 字的同学

select * from student where name like '%胖%';

4.范围运算符
成员运算符
格式1: ... where 字段名 in (值1,值2,值3);
是否等于 () 中的某一个值
格式2: ... where 字段名 between 值1 and 值2;

需求: 查询出住在北京或者 中南海或者.. 的同学

select * from student where address in  ('北京','中南海');

5.空值判断
格式1: .... where 字段名 is null;
需求:将address为空的所有数据筛选出来?

.. where  address is null;

格式2: .... where 字段名 is not null;
需求:将address不为空的所有数据筛选出来?

...where  address is not null;

6.运算符的优先级

  1. 以上运算符可以综合使用
  2. 加上()
  3. 聚合函数
    count(*) 统计查询结果的数量
    max(字段名) 统计某个字段的最大值
    min(字段名) 统计某个字段的最小值
    avg(字段名) 统计某个字段的平均值
    sum(字段名) 统计某个字段的总和
    格式: select 聚合函数 from 表名 where 条件;
    需求: 查询该表总共有多少学生
    例:select count(*) from student;
    需求: 获取学生的最大年龄?
    例: select max(age) from student;
    需求: 统计年龄的平均值 ?
    例:select avg(age) from student;

  4. 分组 group by
    格式: select ..... from 表名 where 条件 group by 字段名;

    **统计某个字段有多少种值
    需求: 查看有多少种地址 ?
    例:select address from student group by address;
    需求:查询每个地址有多少人?
    例:select address,count(*) from student group by address;
    需求: 再查询出中南海有多少人 ?
    例:select address,count(*) from student group by address having address = '中南海';

    having 条件:表示在某个结果集上继续筛选
    注意: where 与having 后面都是跟一个条件表示查询,但是where是先筛选, having是在where的结果后再筛选

  5. 排序 order by
    格式: select ..... from 表名 where 条件 order by 字段名 排序规则;
    需求:查询所有学生,并按年龄排序(升序,默认的)
    例:select * from student order by age desc;

    降序: desc
    升序:asc (默认的)
    需求:多个字段排序
    格式:select ..... from 表名 where 条件 order by 字段名 排序规则,字段名2 排序规则;

  6. 分页
    格式: select ... from 表名 where 条件 limit 值1,值2;
    例: select * from student limit 1,4;

    值1 表示的是分页的起始位置, 注意: 从 0 开始
    值2 表示的是每一页的结果数量

    获取第n页数据, 每一页4条数据

select * from student limit  4(n-1),4;

6.表的设计(表的关系)
(1).一对一关系
场景: 学生 1—档案表 1
这里写图片描述
(2).一对多关系
场景: 班级 1 —-学生 多
这里写图片描述
(3).多对多关系
场景: 学生 多 — 课程 多
注意:需要第3张表来维护关系
这里写图片描述
7.一对一案例
在一对多的案例上的外键上加上唯一性约束即 ,unique

8.一对多关系
(1).设计表
1.班级表

create table classes(classid int primary key auto_increment,classname varchar(20));

2.学生表

create table student2(studentid int primary key auto_increment,studentname varchar(20) not null,classid int,foreign key(classid)  references classes(classid));

外键格式: foreign key(外键字段名) references 表名(关联字段名);
classid班级id是外键,需要关联classes班级表的classid主健

(2).插入数据
1.班级表

insert into classes values(0,"py01"),(0,"py02"),(0,"py03"),(0,"java01"),(0,"h501"),(0,"ui01"),(0,"java02"),(0,"h502"),(0,"ui02");

2.学生表

insert into student2 values(0,"张三",4); 
insert into student2 values(0,"李四",1);
insert into student2 values(0,"王五",1);
insert into student2 values(0,"赵六",2);
insert into student2 values(0,"田七",1);

注意:如果关联的外键,而外键的值在关联的表中不存在,则无法成功插入

error: insert into student2 values(0,"胖八",11);

(3).多表查询数据
1.需求: 查看所有的学生姓名及其所在的班级
例:

select student2.studentname,classes.classname from student2,classes  where  student2.classid = classes.classid;

注:

  1. 表名.字段名 可以指定到对应表中的某个字段,在多表联合查询的时候使用
  2. 在多表联合查询的时候,from后面可以跟多个表

2.需求2: 展示py01班所有的学生

select student2.studentname,classes.classname from student2,classes  where  student2.classid = classes.classid and classes.classid=1;

3.需求3: 展示所有学生的所有信息

select student2.*,classes.* from student2,classes  where  student2.classid = classes.classid;

4.连接关系查询

  1. 内连接 inner join
    查询所有学生及姓名
    例:select student2.studentname,classes.classname from student2 inner join classes on student2.classid = classes.classid;
  2. 左外连接 left join 或者 left out join
    例:select student2.studentname,classes.classname from classes left join student2 on student2.classid = classes.classid;
  3. 右外连接 right join 或者 right out join
  4. 格式: select .... from 表1 inner/left/right join 表2 on 条件;

9.多对多
(1).设计表
1.学生表
例:create table student3(studentid int primary key auto_increment,studentname varchar(20) not null);
2.课程表
例:create table courses(coursesid int primary key auto_increment,coursesname varchar(20));
3. 学生 —课程 表即选修课表

create table  elective(studentid int,coursesid int,primary key(studentid,coursesid),foreign key(studentid)  references student3(studentid),foreign key(coursesid)  references courses(coursesid));

(2).插入数据
插入学生:

insert into student3 values(0,"张三");  
insert into student3 values(0,"李四"); 
insert into student3 values(0,"王五"); 
insert into student3 values(0,"赵六"); 
insert into student3 values(0,"田七"); 

插入课程:

insert into courses values(0,"python");  
insert into courses values(0,"java"); 
insert into courses values(0,"h5"); 
insert into courses values(0,"ui"); 

插入选修课数据:

insert into elective values(1,1);
insert into elective values(1,2);
insert into elective values(1,4);
insert into elective values(3,1);
insert into elective values(3,4);

insert into elective values(1,1);
注意:如果关联了外键,而外键的值在关联的表中不存在,则无法成功插入,

(3).查询数据
查询学生的选修课

select student3.*,courses.* from student3,courses,elective where student3.studentid =  elective.studentid and courses.coursesid = elective.coursesid;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值