一、对数据库的操作
CREATE DATABASE web08; -- 创建web08库
SHOW DATABASES; -- 显示所有的库
CREATE DATABASE web08_01 CHARACTER SET gbk; -- 创建带有编码的库
SHOW CREATE DATABASE web08_01; -- 查看编码
DROP DATABASE web08_01; -- 删除web08_01库
USE web08; -- 使用库
二、对数据库表的操作:TABLE
1.创建表
crate TABLE 表名 (
字段名 类型(长度)[约束],
字段名 类型(长度)[约束],
字段名 类型(长度)[约束]
);
字符类型 :VARCHAR(n)
CREATE TABLE USER(
uid INT(32) PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(32),
upassword VARCHAR(32)
); -- 创建一张表
2.查看表:
SHOW TABLES; -- 查看当前正在操作的表
DESC USER; -- 查看表的结构
3.删除表:
DROP TABLE USER; -- 删除一张表
4.修改表:
ALTER TABLE 表名 ADD 字段名 类型(类型)[约束]
ALTER TABLE USER ADD uinfo VARCHAR(32) NOT NULL; -- 添加一个uinfo信息
4.2修改列的类型(长度、约束):
ALTER TABLE 表名 MODIFY 要修改的字段名 类型(长度)[约束]
ALTER TABLE USER MODIFY uinfo VARCHAR(100) NULL; -- 修改uinfo
4.3修改列的列名:
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度)[约束]
ALTER TABLE USER CHANGE uinfo info VARCHAR(32) NOT NULL; -- 把uinfo列名改为info
4.4删除表的列
ALTER TABLE 表名 DROP 列名
ALTER TABLE USER DROP info; -- 删除info列
4.5修改表名
RENAME TABLE 表名 TO 新表名
RENAME TABLE USER TO tbl_user; -- 修改表名
4.6修改表的字符集
ALTER TABLE 表名 CHARACTER SET 编码
SHOW CREATE TABLE tbl_user; -- 查看当前表的编码
ALTER TABLE tbl_user CHARACTER SET gbk; -- 将表的字符集修改为gbk格式
三、对数据库表记录进行操作(修改)
1.插入记录
INSERT INTO 表名(列名1,列名2,列名3……) VALUES(值1,值2,值3……)
INSERT INTO tbl_user(uid,uname,upassword) VALUES(NULL,'zhangshan','123');
SELECT * FROM tbl_user; -- 查看表
INSERT INTO 表名 VALUES(值1,值2,值3……)
INSERT INTO tbl_user VALUES(NULL,'liuyan',456);
1.1插入数据中文乱码问题解决方法
方式一:【不建议!】
直接修改数据库安装目录里面的my.ini 文件的第57行
方式二:SET NAMES gbk;
2.修改表记录
2.1不带条件的
UPDATE 表名 SET 字段名=值,字段名=值,字段名=值……
UPDATE tbl_user SET upassword='666'; -- 它会将该列的所有记录都更改
2.2带条件的
UPDATE 表名 SET 字段名=值,字段名=值,字段名=值……WHERE条件
UPDATE tbl_user SET upassword='999' WHERE uid=1;
3.删除记录:DELETE
DELETE FROM 表名 WHERE 条件
DELETE FROM tbl_user WHERE uid=1; -- 删除第1条uid。注意:删除后,uid不会重置!
3.2不带条件的
先准备数据
INSERT INTO tbl_user VALUES(NULL,'老王','666');
删除操作
DELETE FROM 表名;
DELETE FROM tbl_user;
3.3面试题
说说DELETE与TRUNCATE的区别?
DELETE删除的的时候是一条一条的删除记录,他配合事务,可以将删除的数据找回
TRUNCATE删除,它是将整个表摧毁,然后再出创建一张一摸一样的表。它删除的表无法找回。
DELETE操作演示:
START TRANSACTION; -- 开启事务
DELETE FROM tbl_user; -- 删除表
ROLLBACK; -- 回滚(找回)
TRUNCATE操作演示:
START TRANSACTION; -- 开启事务
TRUNCATE TABLE tbl_user; -- 摧毁表
ROLLBACK; -- 回滚(无法找回)
SELECT * FROM tbl_user; -- 查看表中内容
SHOW TABLES; -- 查看表的结构(表还存在)
注意:DELETE删除,uid不会重置!而使用TRUNCATE操作,uid会重置!(因为它删除了表结构,再创建一张一摸一样的表,所以再次插入数据的时候从1开始。)
4.查询操作
#创建商品表
CREATE TABLE product(
pid INT PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20),
price DOUBLE,
pdate TIMESTAMP
);
#自动增长列:auto_increment,要求:1.必须整型(int)2.必须是主键
INSERT INTO product VALUES (NULL,'谈妮平',0.01,NULL);
INSERT INTO product VALUES (NULL,'李士雪',38,NULL);
INSERT INTO product VALUES (NULL,'左慈',-998,NULL);
INSERT INTO product VALUES (NULL,'李士雪',38,NULL);
INSERT INTO product VALUES (NULL,'黄迎',99999,NULL);
INSERT INTO product VALUES (NULL,'南国强',99998,NULL);
INSERT INTO product VALUES (NULL,'士兵',1,NULL);
INSERT INTO product VALUES (NULL,'李士兵',698,NULL);
语法:
SELECT [DISTINCT] *|列名,列名 FROM 列表 [WHERE条件]
4.1.1查询所有商品
SELECT * FROM product;
4.1.2查询商品名和商品价格
SELECT pname,price FROM product;
4.1.3查询所有商品信息使用表别名
SELECT * FROM product AS p;
4.1.4.查询商品名,使用列别名
SELECT pname AS p FROM product; -- as可以省略
4.1.5.去掉重复值(按照价格)
SELECT DISTINCT(price) FROM product;
4.1.6.将所有的商品的价格+10进行显示
SELECT pname,price+10 FROM product;
4.2条件查询
4.2.1查询商品名称为“左慈”的商品信息
SELECT * FROM product WHERE pname='左慈';
4.2.2查询价格>60元的所有商品
SELECT * FROM product WHERE price>60;
4.2.3查询商品名称含有“士”字的商品信息
SELECT * FROM product WHERE pname LIKE '%士%';
4.2.4查询商品id在(3,6,9)范围内的所有商品信息
SELECT * FROM product WHERE pid IN(3,6,9);
4.2.5查询商品名称含有“士”字并且id为4的商品信息
SELECT * FROM product WHERE pname LIKE '%士%' AND pid=4;
4.2.6查询商品id为2或者6的商品信息
SELECT * FROM product WHERE pid=2 OR pid=6;
4.3排序
4.3.1.查询所有的商品,按价格进行排序(升序,降序)
SELECT * FROM product ORDER BY price ASC; -- 升序
SELECT * FROM product ORDER BY price DESC; -- 降序
4.3.2查询名称有“士”的商品信息并且按照价格降序排列
SELECT * FROM product WHERE pname LIKE '%士%' ORDER BY price DESC;
4.4.聚合函数
4.4.1获得所有商品的价格的总和
SELECT SUM(price) FROM product;
4.4.2获得所有商品的价格的平均价格
SELECT AVG(price) FROM product;
4.4.3获取所有商品的个数
SELECT COUNT(*)FROM product;
4.5分组
1.添加分类id (ALTER TABLE product ADD cid VARCHAR(32);)
2.初始化数据
UPDATE product SET cid='1'; -- 所有的cid设置为1
UPDATE product SET cid='2'WHERE pid IN (5,6,7); -- pid为5,6,7的设置为2
4.5.1根据cid字段分组,分组后统计商品的个数。
SELECT cid,COUNT(*) FROM product GROUP BY cid;
4.5.2根据cid分组,分组统计每组商品的平均价格,并且平均价格大于20000元。
SELECT cid,AVG(price) FROM product GROUP BY cid HAVING AVG(price)>20000;
4.6查询总结
SELECT *|字段... -- 一般在后面的内容都是要查询的字段
FROM 表 -- 要查询到表
WHERE 查询条件
GROUP BY 分组字段
HAVING 分组条件 -- 分组后带有条件只能使用having
ORDER BY 排序字段 ASC|DESC -- 它必须放到最后面
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_40826593/article/details/79698865