一、MySQL中的数据类型
整型
分类存储空间TINYINT8SMALLINT16MEDIUMINT24INT32BIGINT64浮点型 :
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对表的一些操作
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,"德国斯图加特");
以上几种的运行的结果:
表中的名字和地址纯属学习,没有其他意思。
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的学生的性别和年龄
结果:
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和地址为德国斯图加特的同学
结果:
4.查询表中的数据
WHERE后面加限定条件
- SELECT *FROM 表名; -- 查询表中所有的列和行
- SELECT 列名1,列名2,... FROM 表名; -- 查询表中指定的列
- SELECT 列名1 AS "别名1",列名2 AS "别名2",... FROM 表名; --使用别名进行查询(别名,为列名或表名重新起一个名字<外号、乳名>)
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"_布_"; -- 查询姓名由三个字组成,加强第二个字学生信息
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分组查询: **
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的学生
ps:关于多表的查询在下一个博客中。写在一起博客内容太多了 。
版权归原作者 不爱健身的数学子弟不是好程序员 所有, 如有侵权,请联系我们删除。