MySQL—关于数据表的基本语句及操作 (上)

MySQL—关于数据表的基本语句及操作 (上)

MySQL---关于数据表的基本语句及操作 (上)


目录

一、MySQL中的数据类型

二、MySQL数据表的创建

三、MySQL对表的一些操作

1.向表中添加数据

2.修改表中的数据

3.删除表中的数据

4.查询表中的数据

4.1模糊查询:

4.2计数查询(求和、平均值、最大最小值):

4.3排序查询: 

4.4获取最后一次添加的自增主键 :

4.5分组查询: 

4.6分页查询:

4.7去重查询: 


一、MySQL中的数据类型

  • 整型
分类 存储空间
TINYINT 8
SMALLINT 16
MEDIUMINT 24
INT 32
BIGINT 64
  • 浮点型 :

                FLOAT 和 DOUBLE 为浮点类型,

                DECIMAL 为高精度小数类型。 

  • 字符串:
CHAR(n) n表示长度,固定长度的字符串,不会随数据大小而变化
VARCHAR(n) n表示最大长度,变长类型能够节省空间,当实际数据小于 n 时,会自动释放多余长度
  • 时间和日期 :
DATE 年月日
TIME 时分秒
DATETIME 年月日时分秒
TIMESTAMP 时间戳(年月日时分秒毫秒)

二、MySQL数据表的创建

CREATE TABLE 表名(     

内容,

   )

  • primary key 用于定义主键列
  • not null 表示当前字段不允许为 null
  • auto_increment:设置自动增长数字,自动增长只能为 int 类型的列设置
  • 一个表中只能存在一个自动增长列而且为主键列

例子:学生表

CREATE table tbl_student1(
stu_Id int PRIMARY KEY NOT NULL auto_increment,
stu_Name VARCHAR(20) NOT NULL,
stu_sex CHAR(1) NOT NULL,
stu_age INT NOT NULL,
stu_address VARCHAR(200) NOT NULL
)

 结果:

MySQL---关于数据表的基本语句及操作 (上)

三、MySQL对表的一些操作

1.向表中添加数据

格式1:INSERT INTO 表名 VALUES(要添加的值);【也可以一次性添加多条数据,用,隔开,例子               中后面三个】

例子:

INSERT INTO tbl_student VALUES(DEFAULT,"乔布斯","男",66,"USA加州");
INSERT INTO tbl_student VALUES(DEFAULT,"马斯克","男",55,"USA纽约");
INSERT INTO tbl_student VALUES(DEFAULT,"理想","男",54,"北京"),(DEFAULT,"蒂姆·库克","男",56,"UAS加州");
INSERT INTO tbl_student VALUES(DEFAULT,"雷军","男",22,"北京"),(DEFAULT,"任正非","男",66,"中国北京");
INSERT INTO tbl_student VALUES(DEFAULT,"放逐之刃","女",23,"德玛西亚"),(DEFAULT,"保时捷","男",56,"斯图加特");

格式2:表中部分列添加数据:INSERT INTO 表名(列名(不添加数据的列分为以下几种情况(1.自               增列,2.存在默认值的列,3.允许为空的列))) values(要添加的值);

例子:

INSERT INTO tbl_student(stu_Name,stu_sex,stu_age,stu_address)VALUES("费迪南德","男",99,"德国斯图加特");

以上几种的运行的结果:

MySQL---关于数据表的基本语句及操作 (上)

MySQL---关于数据表的基本语句及操作 (上)表中的名字和地址纯属学习,没有其他意思。 MySQL---关于数据表的基本语句及操作 (上)

2.修改表中的数据

格式:UPDATE 表名 SET 列名 1=新值 1,列名 2=新值 2,… WHERE 更新条件

UPDATE tbl_student1 SET stu_address="深圳" WHERE stu_Id= 2;  -- 把id为2的学生地址修改成深圳
UPDATE tbl_student1 SET stu_age=16,stu_sex="女" WHERE stu_Id = 3; -- 修改id为3学生的年龄和性别
UPDATE tbl_student1 SET stu_age=stu_age+20,stu_sex="女" WHERE stu_Id = 4 or stu_Id = 5;  -- 修改年龄为4和5的学生的性别和年龄

结果:

MySQL---关于数据表的基本语句及操作 (上)

3.删除表中的数据

格式: DELETE FROM 表名 WHERE 条件 根据条件删除某些行数据

DELETE FROM tbl_student1 WHERE stu_Id = 4;  -- 删除id为4的学生
DELETE FROM tbl_student1 WHERE stu_age>80 AND stu_address = "德国斯图加特";  -- 删除年龄大于80和地址为德国斯图加特的同学

 结果:

MySQL---关于数据表的基本语句及操作 (上)

4.查询表中的数据

WHERE后面加限定条件

  • SELECT *FROM 表名;   — 查询表中所有的列和行
  • SELECT 列名1,列名2,… FROM 表名;   — 查询表中指定的列
  • SELECT 列名1 AS "别名1",列名2 AS "别名2",… FROM 表名;   –使用别名进行查询(别名,为列名或表名重新起一个名字<外号、乳名>)
  • 表的别名可以直接跟在表后面,列的别名需要加as
SELECT * FROM tbl_student1 WHERE stu_Id=7;  -- 查询学号为7的学生
SELECT * FROM tbl_student1 WHERE stu_age%2=0;  -- 查询年龄为偶数的学生
SELECT * FROM tbl_student1 WHERE stu_age%2!=0; -- 查询年龄为奇数的学生
SELECT * FROM tbl_student1 WHERE stu_age%2<>0; -- 查询年龄为奇数的学生
SELECT * FROM tbl_student1 WHERE !(stu_age%2=0);  -- 查询年龄为奇数的学生
SELECT * FROM tbl_student1 WHERE NOT stu_age%2=0;  -- 查询年龄为奇数的学生
SELECT *FROM tbl_student1 WHERE stu_age>=20 AND stu_age<=30; -- 	查询年龄在[20,30]之间的人
SELECT * FROM tbl_student1 WHERE stu_age BETWEEN 20 AND 30; -- 	查询年龄在[20,30]之间的人
SELECT * FROM tbl_student1 WHERE stu_age>=22 AND stu_sex="男";	 -- 查询年龄大于等于22的男生
SELECT * FROM tbl_student1 WHERE stu_Name="乔布斯";  -- 查询名字为乔布斯的学生。(精确查询)

4.1模糊查询:

SELECT * FROM tbl_student1 WHERE stu_Name LIKE "%德%";  -- 查询名字中含有德的学生(模糊查询)
SELECT * FROM tbl_student1 WHERE stu_Name LIKE"_军";  -- 查询姓名由两个字组成,加强结尾学生信息
SELECT * FROM tbl_student1 WHERE stu_Name LIKE"_布_";  -- 查询姓名由三个字组成,加强第二个字学生信息
SELECT * FROM tbl_student1 WHERE stu_Name LIKE"张%";  -- 查询姓张的同学;名字字数不限

4.2计数查询(求和、平均值、最大最小值):

SELECT COUNT(stu_Id) FROM tbl_student1;  -- 如何统计所有行数据,则建议使用主键统计以提高效率
SELECT SUM(stu_age) FROM tbl_student1;  -- 获取所有学生的年龄和
SELECT SUM(stu_age) FROM tbl_student1 WHERE stu_sex="男";  -- 获取所有男学生的年龄和
SELECT AVG(stu_age) FROM tbl_student1;  -- 获取所有学生年龄的平均值
SELECT MAX(stu_age) FROM tbl_student1;  -- 获取所有学生年龄的最大值
SELECT MIN(stu_age) FROM tbl_student1;  -- 获取所有学生年龄的最小值

4.3排序查询: 

SELECT * FROM tbl_student1 ORDER BY stu_age DESC  -- 将学生按照年龄降序排列
SELECT * FROM tbl_student1 ORDER BY stu_age ASC  -- 将学生按照年龄升序排列
SELECT * FROM tbl_student1 ORDER BY stu_age DESC,stu_Id DESC;  -- 将学生首先按照年龄降序排列,当年龄相同时按照学号
SELECT * FROM tbl_student1 WHERE stu_sex="男" ORDER BY stu_age DESC -- 将所有男生按照年龄降序排列	

4.4获取最后一次添加的自增主键 :

SELECT LAST_INSERT_ID(); 

4.5分组查询:

(having:分组查询的条件)

SELECT stu_sex,COUNT(*) 人数 FROM tbl_student1 GROUP BY stu_sex; -- 根据性别分组并计数
SELECT stu_age,COUNT(*) 人数 FROM tbl_student1 GROUP BY stu_age; -- 根据性别分组并计数
SELECT stu_age,COUNT(*) 人数 FROM tbl_student1 GROUP BY stu_age HAVING stu_age>30; -- 把年龄大于30岁的人分组并计数

4.6分页查询:

SELECT * FROM tbl_student LIMIT 3,3   -- 第一个参数限制起始行数(不包括第一个参数),第二个参数查询的总行数
SELECT * from tbl_student WHERE stu_id=6 OR stu_id=8 OR stu_id=10 -- 使用 OR 或运算  查询学号为6,8,10的学生
SELECT * FROM tbl_student WHERE stu_id in(6,8,10) -- 使用 IN 运算实现   查询学号为6,8,10的学生

4.7去重查询: 

-- 查询所有员工的工作(distinct去除重复的查询)
SELECT DISTINCT JOB FROM emp

MySQL---关于数据表的基本语句及操作 (上)
  

ps:关于多表的查询在下一个博客中。写在一起博客内容太多了 。

MySQL—关于数据表的基本语句及操作 (下)多表联查


MySQL---关于数据表的基本语句及操作 (上)

                       

点击阅读全文

上一篇 2023年 5月 27日 am10:40
下一篇 2023年 5月 27日 am10:41