一、MySQL服务的启动和停止
(1)启动MySQL
net start mysql
也可以在“计算机管理”——“服务和应用程序”——“服务”中找到MySQL,右键“启动”。
(2)停止MySQL
net stop mysql
也可以在“计算机管理”——“服务和应用程序”——“服务”中找到MySQL,右键“停止”。
二、使用数据库
这里的school为我自己建立的数据库。
(1)登录数据库
mysql [-h服务器主机地址] -u用户名 -p
注:-h表示所要登录的主机名,如果就是当前操作的机器,可以省略不写。
(2)查看所有数据库
SHOW DATABASES;
(3)创建一个数据库
CREATE DATABASE school;
(4)删除一个数据库
DROP DATABASE school;
(5)修改数据库的编码格式
ALTER DATABASE school CHARACTER SET utf8;
(6)切换到要使用的数据库
USE school;
三、使用表
注:下面我进行的操作都是在school这个数据库的环境下
(1)创建表
CREATE TABLE [IF NOT EXISTS] 表名(
列名1 列类型[属性][索引][注释],
列名2 列类型[属性][索引][注释],
……
列名3 列类型[属性][索引][注释]
)[表类型][表字符集][注释];
e.g. 创建freshman表,表中存放:学号(id)、姓名(name)、性别(gender)、专业(major)
CREATE TABLE freshman(
id int UNSIGNED NOT NULL AUTO_INCREMENT primary key,
name char(8) NOT NULL,
gender char(4) NOT NULL,
major char(10) NOT NULL
);
- UNSIGNED——无符号,不可为负数
- AUTO_INCREMENT——自动在上一个记录数上+1,通常用于设置主键(如果中间删除一个行数据,记录数不会补上)
扩:ZEROFILL——不足位用0填充,如int(3),那么就是005
COMMENT——注释
效果:
(2)查看school数据库中所有表
SHOW TABLES;
效果:
(3)删除表
drop table freshman;
(4)查看freshman表
describe freshman;
也可以是:
desc freshman;
效果:
四、表的修改
(1)添加列
alter table 表名 add 列名 列数据类型 [after 插入位置];
默认是添加在表的最后:
alter table freshman add age tinyint unsigned not null;
也可以指定添加的位置:
alter table freshman add age tinyint unsigned not null after gender;
效果:
(2)修改列名称
alter table 表名 change 旧列名 新列名 新数据类型;
e.g. 将freshman表中的“gender”名称改为“sex”:
alter table freshman change gender sex char(4);
效果:
(3)删除列
alter table 表名 drop 列名;
e.g. 删除freshman表中的“age”列
alter table freshman drop age;
效果:
(4)重命名表
alter table 旧表名 rename 新表名;
e.g. 将freshman表重命名为“dayi”
alter table freshman rename dayi;
效果:
(5)表中插入数据
insert into 表名 [(列名1,列名2,列名3,...)] values (值1,值2,值3,...);
[(列名1,列名2,列名3,...)] 这部分可以省略不写,但是添加的值必须要与表结构中的数据列顺序相对应,且数量一致。
e.g. 在freshman表中插入一条完整的数据
insert into freshman values(001,"asherrr","male","Mechanical Engnering");
也可以插入部分数据:
insert into freshman(id,name) values(002,"Peter");
效果:
五、表的查询
(1)指定列查询
select id,name from freshman;
效果:
(2)去重查询(重复的只记录一次)
相同姓名的只显示一次:
select distinct name from freshman;
效果:
(3)列运算
- 数量类型的列可以做加减乘除运算
select name,id+2 from freshman;
效果:
- 字符串连接
select name,concat(major,'hi') from freshman;
效果:
- 给列起别名
select name names,sex gender from freshman;
效果:
(4)模糊查询
- 查询名字为两个字并且是以‘子’结尾
select *from freshman where name like '_子';
‘_子’ 有一条下划线,表示‘子’前面只有一个字,即:有几条下划线,‘子’前面就有几个字
效果:
- 查询name列中带‘r’
select *from freshman where name like '%r%';
效果:
(5)排序
- 升序
asc(ascending)是默认的,可以忽略不写
select *from freshman order by id [asc];
效果:
- 降序
select *from freshman order by id desc;
效果:
- 多列排序
select * from freshman order by id desc,major desc;
效果:
(6)聚合函数
这里在freshman表中添加了score列:
- 查询所有列不全为空的个数
select count(*) from freshman;
效果:
- 查询score累加值
select sum(score) from freshman;
效果:
- 查询score平均分数
select avg(score) from freshman;
效果:
- 查询最高分数
select max(score) from freshman;
效果:
- 查询最低分数
select min(score) from freshman;
效果:
(7)分组查询
- 按性别分组,查询不同性别的人数
select sex,count(*) from freshman group by sex;
效果:
- 查看不同性别的得分大于85分的人数
select sex,count(*) from freshman where score>85 group by sex;
效果:
(8)limit
select *from freshman limit 2,2;
limit检索是从0开始的,故limit2,2意思为检索出第三和第四行
效果:
(9)更新表中数据
update 表名 set 列名1=新值1[,列名2=新值2,列名3=新值4,...] where 更新条件;
e.g. 将freshman表中id为1的人的分数设为90分
update freshman set score=90 where id=1;
新值可以嵌套select查询语句
e.g. 将freshman表中id为4的人的分数赋给id为1的人
update freshman set score =
(select score from
(select score from freshman where id = 4)
as num)
where id = 1;
效果:
(10)删除表中数据
- delete命令
delete from 表名 where 删除条件;
e.g. 将freshman表中分数为80分以下的行
delete from freshman where score<80;
- truncate命令
truncate [table] 表名;
- truncate与deleted的区别
- 相同
- 都能删除数据,不删除表结构,但truncate速度更快
- 不同
- 使用truncate会重新设置AUTO_INCRIMENT计数器
- 使用truncate不会对事务有影响
- 相同
推荐一本MySQL入门书《MySQL必知必会》(文字版),如有需要的同学欢迎下载,大家一起加油啊!ヾ(◍°∇°◍)ノ゙
链接:《MySQL必知必会》(文字版)
提取码:kdpk