MySql基础命令详解(基础篇)

MySql学习笔记(基础篇)-MySql基础命令详解

目录

  • MySql学习笔记(基础篇)-MySql基础命令详解
    • 环境介绍
      • Sql的分类
        • DDL语句
          • 对库的操作
          • 对表的操作
        • DML语言
          • 插入记录
          • 更新记录
          • 删除记录
          • 查询记录
            • 查询
            • 排序和限制
            • 聚合
      • MySql语法规范
      • MySql错误记录-1

环境介绍

  • Centos7
  • MySql5.7

Sql的分类

Sql,分为DQL(查询),DML(修改),DDL(管理),TCL(事物的处理)。

DDL语句: 数据定义语句,定义了不同的数据库,表,列,索引等。

DML语句: 数据操纵语句,用于添加,删除,更新和查询数据库记录和检查数据完成性。

DCL语句: 数据控制语句,定义了数据库,表,列,字段等的访问权限和安全级别。

DDL语句

对库的操作
CREATE DATABASE 库名; 						//创建数据库
CREATE DATABASE 库名 CHARACTER SET utf8; 	//创建数据库并指定库的字符编码
ALTER TABLE 库名 CHARACTER SET utf8; 		//修改数据库的字符集编码
DROP DATABASE 库名; 							//删除数据库

/*案例*/

CREATE DATABASE school;						//创建一个姓名为 student 的数据库
DROP DATABASE school;						//删除了姓名为 student 的数据库

CREATE DATABASE school CHARACTER SET utf8; 	//创建一个姓名为 student 的数据库,并指定使用utf8编码

SHOW DATABASES; 							//查看已经创建的数据库
对表的操作
use 数据库; 	//在操作表之间需要先选择一个数据库
CREATE TABLE 表名(字段名 类型,字段名 类型 ....); 						//创建表
CREATE TABLE 表名(字段名 类型,字段名 类型 ....)CHARACTER SET utf8; 	//创建表并指定表的字符编码
ALTER TABLE 表名 CHARACTER SET utf8; 				//修改表的字符集编码
DROP TABLE 表名;		//删除表
ALTER TABLE 表名 RENAME 新表名						//修改表名
ALTER TABLE 表名 MODIFY 字段名 类型;			  		//修改已经创建表字段的类型
ALTER TABLE 表名 ADD 字段名 类型;				  		//添加新的字段
ALTER TABLE 表名 DROP 字段名;				   		//删除已经存在的字段
ALTER TABLE 表名 CHANGE 原字段名 新字段名 类型;	    //修改已经存在字段的名称和类型
ALTER TABLE 表名 ADD 新字段名 类型 AFTER 已有字段名;	//在已有字段名后面插入新的字段
ALTER TABLE 表名 MODIFY 字段名 类型 FIRST;			//将这个字段放到最前面

/*案例*/
use school;			//选择student数据库,接下来就可以对数据库进行操作了

SHOW TABLES;		//查看数据库中存在的表

CREATE TABLE ceshi(
ceshi CHAR,
);

DROP TABLE ceshi;	//删除 表名为ceshi的表

//创建一个名字为student的表
CREATE TABLE student(
学号 int(8),
姓名 CHAR(8),
行吧 CHAR(4),
年龄 int(4),
班级 CHAR(20)
);

ALTER TABLE student RENAME students; 				//修改student表的表名为students

ALTER TABLE students MODIFY 学号 char(8);		  	//修改字段学号的类型为char

ALTER TABLE students ADD 电话号码 char(13);		  	//添加新的字段电话号码 类型为char

ALTER TABLE students DROP 学号;				   		//删除已经存在的字段 学号

ALTER TABLE students CHANGE 行吧 性别 char(4);	  	//修改原字段名称的行吧为性别jia

ALTER TABLE students ADD 家庭住址 char(20) AFTER 电话号码;	//在电话号码的前面添加字段家庭住址

ALTER TABLE students ADD 学号 char(10);	
ALTER TABLE students MODIFY 学号 char(10) FIRST;

DESC students;		//查看表的字段信息

DML语言

插入记录
INSERT INTO 表名 VALUES(‘内容1’,‘内容2’,‘内容3...); 	   //需要注意插入内容的顺序是否对应

//只对表部分字段进行插入
INSERT INTO 表名(字段名)VALUES(‘内容’); 	

INSERT INTO 表名(字段名1,字段名2,字段名3...)VALUES(‘内容1’,‘内容2’,‘内容3...); 

//一次性插入多条记录
INSERT INTO 表名 VALUES(‘内容1’,‘内容2’,‘内容3...),(‘内容1’,‘内容2’,‘内容3...).....; 

/*案例*/
//插入一条记录
INSERT INTO students VALUES('20200001','张大胖','男',18,'19数据库1班','翻斗花园8栋5单元1号','18366579916');
//插入多条记录
INSERT INTO students VALUES
('20200001','张二胖','男',18,'19数据库1班','翻斗花园7栋5单元1号','18366579916'),
('20200002','张三胖','男',19,'19数据库1班','翻斗花园7栋5单元2号','18366579917'),
('20200003','张四胖','女',17,'19数据库1班','翻斗花园7栋5单元3号','18366579918'),
('20200004','李二胖','男',18,'19数据库1班','翻斗花园7栋5单元4号','18366579919'),
('20200005','李三胖','女',50,'19数据库1班','翻斗花园7栋5单元5号','18366579911'),
('20200006','李四胖','女',99,'19数据库2班','翻斗花园7栋5单元6号','18366579912'),
('20200007','王二胖','男',7,'19数据库2班','翻斗花园7栋5单元7号','18366579913'),
('20200008','王三胖','女',31,'19数据库2班','翻斗花园7栋5单元8号','18366579914'),
('20200009','王四胖','男',23,'19数据库2班','翻斗花园7栋5单元9号','18366579926'),
('20200010','徐二胖','男',17,'19数据库2班','翻斗花园7栋5单元10号','18366579816'),
('20200011','徐三胖','女',16,'19数据库3班','翻斗花园7栋5单元11号','18366579116'),
('20200012','徐四胖','男',19,'19数据库3班','翻斗花园7栋5单元12号','18366579316'),
('20200013','徐大胖','男',13,'19数据库3班','翻斗花园7栋5单元13号','18366579116'),
('20200014','王大胖','女',28,'19数据库3班','翻斗花园7栋5单元14号','18366579316'),
('20200015','李大胖','男',687,'19数据库4班','翻斗花园7栋5单元15号','18366577616'),
('20200016','张七胖','女',953,'19数据库4班','翻斗花园7栋5单元16号','18366552116'),
('20200017','刘九胖','男',48,'19数据库4班','翻斗花园7栋5单元17号','18366579221');
更新记录
//将字段名2为内容A的那条记录下的字段名1的内容更新为内容B 字段1和字段2可以为同一字段
UPDATE 表名 SET 字段名1='B' WHERE 字段名2='A';		

UPDATE 表名 SET 字段名1='B',字段名2 WHERE 字段名3='A';	

/*案例*/
UPDATE students SET 班级='19数据库2班' WHERE 姓名='张三胖'; 	//将张三胖的班级调整到2班

UPDATE students SET 班级='19数据库1班',电话号码='18365891254' WHERE 姓名='徐三胖';
删除记录
DELETE FROM 表名 WHERE 字段名='a1';				   //将字段名为a1的所以记录删除

DELETE a,b FROM1 a,2 b WHERE a.字段名=b.字段名 and b.字段名='a1';	//删掉多个表的记录。

//使用的时候一定要加WHERE条件不然会把所有的记录都删除。

/*案例*/
DELETE FROM students WHERE 姓名='张大胖';	//删除张大胖这条记录
查询记录
查询
DESC 表名;				// 显示表的状态

SELECT * FROM 表名;									// * 代表查询表的所有记录,会显示所以字段的记录
SELECT 字段名1,字段名2,字段名3 FROM 表名; 			//显示固定字段的记录
SELECT * FROM 表名 WHERE 字段名='a'; 		  		//显示满足条件的字段的记录

/*案例*/
SELECT * FROM students;		 						//显示students表里面的所以记录
SELECT 学号,姓名,班级 FROM students;					//只显示学号,姓名,班级 这个三个字段相关的信息
SELECT * FROM students WHERE 班级='19数据库4班';  	//只显示四班人员的信息
排序和限制
SELECT * FROM 表名 ORDER BY 字段名;			 		//依照某一字段名从小到大排序显示
SELECT * FROM 表名 ORDER BY 字段名 DESC;		 		//依照某一字段名从大到小排序显示
SELECT * FROM 表名 ORDER BY 字段名 LIMIT 2;	  		//排序后,只显示的前三行
SELECT * FROM 表名 ORDER BY 字段名 LIMIT 1,5;  		//排序后,只显示从第二行开的向后三行

/*案例*/
SELECT * FROM students ORDER BY 年龄;			 	//按照年龄从小到大排序显示
SELECT * FROM students ORDER BY 年龄 DESC; 	  		//按照年龄从大到小排序显示

SELECT * FROM students ORDER BY 年龄 LIMIT 2;		//只显示前三行
SELECT * FROM students ORDER BY 年龄 LIMIT 1,5;	 	//只显示从第二行开的向后三行
聚合
//常用的聚合函数 count 求记录数量、sum 求和、max 最大值、min最小值.....
SELECT 聚合函数 FROM 表名; 					   
SELECT COUNT(1) FROM students;		//students表中有多少条记录

//根据函数对数据进行分类查询
SELECT 字段名,聚合函数 FROM 表名 GROUP BY 字段名;  
SELECT 班级,COUNT(1) FROM students GROUP BY 班级;		//每个班级中有多少人
SELECT max(年龄)min(年龄) FROM students;	  			//表中年龄最大的,最小的。

//分类查询后在汇总数量
SELECT 字段名,聚合函数 FROM 表名 GROUP BY 字段名 WITH ROLLUP; 	
SELECT 班级,COUNT(1) FROM students GROUP BY 班级 WITH ROLLUP;	//每个班级中的人数,以及总人数

//对分类数据进行筛选
SELECT 字段名,聚合函数 FROM 表名 GROUP BY 字段名 HAVING 聚合函数>2; 
SELECT 班级,COUNT(1) FROM students GROUP BY 班级 HAVING COUNT(1)>3; 	//显示人数大于3个的班级

MySql语法规范

  • 不区分大小写,但建议关键字大写,表名,列名小写。
  • 每一条命令用;结尾
  • 每条命令根据需要,可以进行缩进或换行
  • 注释,单行注释#,多行注释/**/

MySql错误记录-1

//语法错误 检查关键字拼写是否正确,是否使用了中文符号
ERROR 1064 (42000): You have an error in your SQL syntax; 
//因为设置了主键,主键字段里不能有重复的数据。
ERROR 1062 (23000): Duplicate entry '000001' for key 'PRIMARY
//数据库已经存在
ERROR 1007 (HY000): Can't create database 'YGGL'; database exists
//插入数据数量与所有字段的数量不匹配
ERROR 1136 (21S01): Column count doesn't match value count at row 1

//解决方案
仔细检查命令,核对INSERT INTO 表名(字段名1,字段名2...)VALUES(‘内容1’,‘内容2...)命令字段是否于插入的数据一致。
//检查是否存在中文字符
ERROR 1054 (42S22): Unknown column '‘0001’' in 'WHERE clause'
//查询的表不存在
ERROR 1146 (42S02): Table 'YGGL.姓名' doesn't exist
//数据库不存在
ERROR 1049 (42000): Unknown database 't'
//mysql不能显示中文 建表时没有设置相关字符编码
ERROR 1366 (HY000): Incorrect string value: '\xE7\x94\xB7' for column '性别' at row 1

//解决方案
show create table student; //查看当前表的字符类似

alter table 表名 default character set utf8; //修改当前表的字符编码为utf8

alter table 表名 change 字段名 字段名 类型 character set utf8; //修改表中字段的字符编码为utf8

你可能感兴趣的:(MySql)