对数据库中库的操作和表格结构的操作

一、对数据库的操作 

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值