MySQL知识点梳理

您所在的位置:网站首页 数据库mysql基本语句用法 MySQL知识点梳理

MySQL知识点梳理

2023-12-23 19:51| 来源: 网络整理| 查看: 265

MySQL知识点梳理以及基本语句操作

1、开启和关闭

  使用管理员身份打开cmd,输入以下命令:

net start mysql # 开启MySQL net stop mysql # 关闭MySQL 2、连接 mysql -u root -p # 连接mysql并要求输入密码 3、对数据库操作 显示数据库 SHOW DATABASES; # 显示数据库 创建数据库 CREATE DATABASE 数据库名; # 创建 CREATE DATABASE IF NOT EXISTS 数据库名; # 如果**数据库不存在,则创建新数据库 删除数据库 DROP DATABASE 数据库名; # 删除 DROP DATABASE IF NOT EXISTS 数据库名; # 如果**数据库存在,则删除该数据库 选择数据库 USE 数据库名; # 选着操作的数据库对象 4、对数据库中表操作 创建数据库中表 # 方式一: USE 数据库名; CREATE TABLE 表名 (字段名 类型 [属性], 字段名 类型 [属性], ... 字段名 类型 [属性]); # 方式二: CREATE TABLE 数据库名.表名 [(...)]; 修改数据库中表 # 方式一: ALTER TABLE 表名 RENAME AS 新表名; # 修改表名 ALTER TABLE 表名 ADD 字段名 数据类型; # 增加表的字段 ALTER TABLE 表名 MODIFY 字段名 数据类型; # 修改约束 ALTER TABLE 表名 CHANGE 字段名 新字段名 新字段名数据类型; # 字段重命名 ALTER TABLE 表名 DROP 字段名; -- 删除表中字段 删除数据库中表 DROP TABLE 数据库名.表名; # 操作和以上创建类似 5、对数据库表中数据操作 添加数据 INSERT INTO 表名 (字段名1, 字段名2, ...字段名N) VALUES( 数值1, 数值2, ...数值N); 删除数据 DELETE FROM 表名 [WHERE 选择操作对象] -- 区分以下操作: DELETE FROM 表名; # 清除表中数据,包括表的结构和索引约 TRUNCATE 表名; # 清空表中数据,但表的结构和索引约束不变 DROP DATABASE 表名; # 删除整张表 修改数据 UPDATE 表名 SET [字段名1 = 数值1, ..., 字段名N = 数值N] [WHERE 选择操作对象]; 查找数据 SELECT * FROM 表名; # 查询整张表 SELECT [DISTINCT] 字段名1 [AS 重命名], ..., 字段名N [AS 重命名] # DISTINCT 去重操作 FROM 表名 [WHERE 选择操作对象] [LIMIT 起始下标][ OFFSET 偏移量]; -- 模糊查询、连表查询和子查询等见后面附录 6、事务与注入

  事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。比如:张三利用网上转账给李四转了500银两,只可能出现两种情况,要么转账成功,那么转账失败。不可能存在张三转过去,而李四没收到;或者张三没转过去,而李四收到money,这两种情况对开发业务是不可取的。模拟场景如下代码所示。   事务的4个条件::原子性、一致性、隔离性、持久性。   MySQL 事务处理主要有两种方法:

用 BEGIN, ROLLBACK, COMMIT来实现 BEGIN : 开始一个事务ROLLBACK : 事务回滚COMMIT : 事务确认 直接用 SET 来改变 MySQL 的自动提交模式 SET AUTOCOMMIT=0 : 禁止自动提交SET AUTOCOMMIT=1 : 开启自动提交 CREATE TABLE account( id INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(40), money FLOAT ); INSERT INTO account(NAME, money) VALUES ('A', 1000),('B', 1000),('C', 1000); # 模拟转账 SET autocommit = 0; # 关闭自动提交 START TRANSACTION; # 开启一个事务 UPDATE account SET money = money - 500 WHERE `name` = 'A'; UPDATE `account` SET money = money + 500 WHERE `name` = 'B'; COMMIT; # 提交事务,就被持久化 ROLLBACK; SET autocommit = 1; # 开启自动提交,恢复原来设置

  所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

7、基本语句操作实例 -- 查询 SELECT 字段 FROM 表 SELECT * FROM `student`; SELECT `studentno` AS 学号, `studentname` AS 学生名字 FROM student; SELECT CONCAT('姓名:', `studentname`) AS 新名字 FROM student; # CONCAT 连接字符串 SELECT * FROM `result`; SELECT DISTINCT `studentno` FROM `result`; # DISTINCT 去重操作 SELECT `studentno`, `studentresult` FROM result WHERE `studentresult` >= 70 AND `studentresult` = 60; # 方式二:子查询 SELECT `studentno`, `studentname` FROM `student` WHERE studentno IN ( SELECT `studentno` FROM `result` WHERE `studentresult` >= 60 AND `subjectno` = ( SELECT `subjectno` FROM `subject` WHERE `subjectname` = '高等数学-2' ) ); # 方式三:连接查询和子查询混合使用 SELECT stu.`studentno`, `studentname` FROM `student` stu INNER JOIN `result` res ON stu.`studentno` = res.`studentno` WHERE `studentresult` >= 60 AND `subjectno` IN ( SELECT `subjectno` FROM `subject` WHERE `subjectname` = '高等数学-2' ); -- 分组和过滤 SELECT `subjectname`, AVG(studentresult) AS 平均分, MAX(studentresult) AS 最高分, MIN(studentresult) AS 最低分 FROM result res INNER JOIN `subject` sub ON res.`subjectno` = sub.`subjectno` GROUP BY res.`subjectno` HAVING AVG(studentresult) >= 60;


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3