1、在cmd中进入数据库
mysql -u用户名 -p数据库密码
2、创建数据库
create database 数据库名称;
3、查看数据库
show databases;
4、使用数据库
use 数据库名称
5、删除数据库
drop database 数据库名称
6、创建表
create table student(
-> id int(3) auto_increment not null primary key,
-> name char(10) not null,
-> address varchar(50) not null,
-> year date
-> );
7、表插入数据
insert into student values(1,'小明','中国广州',20221111);
8、修改表名:
rename table 旧表名 to 新表名;
9、查询当前表结构
desc 表名称
10、查看表详细结构的命令:
show create table 表名称;
或
show full columns from 表名称;
11、查询一个表里面所有的数据
select * from 表名
12、查看具体的一条数据
select * from 表名称 where name='小明';
13、修改表的字段类型
alter table 表名 modify column id tinyint;
或alter table 表名 modify id tinyint;
14、增加表的字段
alter table 表名 add grade int not null;
15、删除表的字段
alter table 表名 drop sex;
16、修改字段名称
alter table student change grade sex char(10);
17、修改字段的排列顺序
alter table 表名 modify name char(10) first;
注意:change/first | after 字段名 这些关键字都是属于MySQL在标准上SQL上的扩展,在其他的数据库上不一定适用
18、更新一条数据
update student set address='中国惠州' where id=4;
19、删除单表中的数据
delete from student where id=3;
20、排序(由高到低)
select * from student order by id desc;
21、排序(由低到高)
select * from student order by id asc;
22、聚合
(1)sum求和
select salary sum(字段名) from 表名
(2)count记录总数
select count(*) from 表名
(3)max最大值
select max(字段名) from 表名
(4)min最小值
select min(字段名) from 表名
(5)group by分类聚合
select department,sum(salary) from teacher group by department;
(6)with rollup分类聚合后的结果进行再汇总
select department,sum(salary) from teacher group by department with rollup;
(7)having
注意:having和where的区别在于,having是对聚合后的结果进行条件过滤,而where是在聚合前就对记录进行过滤,应该尽可能的对记录进行先过滤!
23、表连接
(1)内连接:选取两张表中相互匹配的记录
select * from teacher,teacher_record where teacher.id=teacher_record.id;
(2)外连接:不仅仅选举两张相互匹配的记录,并且回选出其他不匹配的记录
a. 左连接:
概念:包含左边表中的所有记录(包括右表中没有和它匹配的记录)
select * from teacher left join teacher_record on teacher.id=teacher_record.id;
b. 右连接:
概念:包含右边表中的所有记录(包括左表中没有和它匹配的记录)
select * from teacher right join teacher_record on teacher.id=teacher_record.id;
左连接和右连接是可以相互转换的!
24、子查询
需求:一个查询需要另一个查询的结果参与的时候
用于子查询的关键字:
in语法:select * from teacher where id in (select id from teacher_record);
注意点:in后面的子语句必须只返回一个字段
若查询结果唯一(只有一条)可以使用=代替in
not in 与上面那个相反
25、额外添加主键
alter table student_record add primary key(id);
26、添加自动增加字段
alter table student_record modify id int auto_increment;
27、删除主键(前提是如果有auto_increment要先删除auto_increment才行)
alter table student_record drop primary key;
28、删除auto_increment
alter table student_record modify id int
29、查看当前数据库的字符集和校对规则
show variables like 'character_set_database';
show variables like 'collation_database';
30、创建数据库的同时设置字符
create database student default character set utf8