MySQL基本语法复习

阅读: 评论:0

MySQL基本语法复习

MySQL基本语法复习

1、操作数据库

1.1操作数据库

1、创建数据库

CREATE DATABASE	[IF NOT EXISTS] school   //[]内可做选择,判断创建的数据库是否已经存在

2、删除数据库

DROP DATABASE [IF EXISTS] school     //[]内可做选择,判断删除的数据库是否已经存在

3、使用数据库

USE `school`     //如果你的表名或字段名是一个特殊字符,就需要带` `

4、查看数据库

SHOW DATABASES    //查看所有的数据库

1.2创建数据库表

格式:

CREATE TABLE [IF NOT EXISTS] `表名`(`字段名` 数据类型 [属性] [索引] [注释],`字段名` 数据类型 [属性] [索引] [注释],`字段名` 数据类型 [属性] [索引] [注释],.......`字段名` 数据类型 [属性] [索引] [注释],PRIMARY KEY(`字段名`)   -- 主键
)[表类型][字符集设置][注释]

示例:

-- NOT NULL 非空
-- AUTO_INCREMENT 自增
-- DEFAULT 默认
-- COMMENT 注释
-- PRIMARY KEY(`id`) 主键 一般一个表只有一个唯一主键CREATE TABLE IF NOT EXISTS `student` (`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

1.3修改删除表字段

修改:

-- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1-- 增加表的字段 ALTER TABLE 表名 ADD 字段名 属性
ALTER TABLE teacher1 ADD age INT(2)-- 修改表的字段(重命名,修改约束)
ALTER TABLE teacher1 MODIFY age VARCHAR(5)  -- 修改约束
ALTER TABLE teacher1 CHANGE age age1 INT(1)  -- 重命名

删除:

-- 删除表的字段
ALTER TABLE teacher1 DROP age1-- 删除表
DROP TABLE [IF EXISTS] teacher1

2、DML语言

2.1添加数据

Insert
格式:insert into 表名 (字段名1,字段名2,字段名3) values (‘值1’…),(‘值2’…),(‘值3’…)
示例:
-- 插入语句
-- insert into `表名` (`字段名1`....) values ('值1'...),('值2'...),('值3'...)
INSERT INTO `grade` (`gradename`) VALUES ('大三')INSERT INTO `grade` (`gradename`) VALUES ('大三'),('大一'),('大二')INSERT INTO `grade` (`gradename`,`gradeid`) VALUES ('大三','22')INSERT INTO `student` (`name`,`age`,`finally`) 
VALUES ('吴彦祖','88','5'),('刘德华','14','3'),('刘胜','6','1')

2.2修改

update
格式:UPDATE 表名 SET 字段名 = ‘林允儿’ WHERE 条件
-- 修改
UPDATE `student` SET `name`='林允儿' WHERE age=6UPDATE `student` SET `name`='裴秀智'UPDATE `student` SET `name`='金智秀',`finally`='5' WHERE age=14UPDATE `student` SET `name`='林允儿',`age`='18' WHERE id=2 OR finally=5

2.3删除

delete命令
格式:DELETE FROM 表名 WHERE 条件
-- 删除数据 (避免这样写,会全部删除)
DELETE FROM `student`
-- 删除指定数据 
DELETE FROM `student` WHERE id = 2
truncate 命令
作用:完全清空一个数据库表,表的结构和索引约束不会变。
格式:TRUNCATE 表名
-- 清空表
TRUNCATE `student`

delete 与 truncate 区别
相同点:都能删除数据,都不会改变表结构
不同点:
truncate 不会影响事务
truncate 重新设置 自增列 计数器回归零

3、DQL查询数据



具体分析

3.1 查询指定字段

选择:select

-- 查询所有的学生   SELECT 字段 FROM 表名
SELECT * FROM student-- 查询指定字段
SELECT `StudentNo`,`StudentName` FROM student-- 别名,给查询结果的列名(表名)起一个新的名字
SELECT `StudentNo` AS 学号,`StudentName` AS 姓名 FROM student AS s-- 函数 Concat(a,b)  拼接
SELECT CONCAT('姓名:',StudentName) AS 新名字 FROM student

去重:diatinct
作用:去除查询结果中的重复数据,只显示一条

-- 查询一下有哪些同学参加了考试,成绩
SELECT * FROM result
-- 查询有哪些同学参加了考试
SELECT `studentno` FROM result
-- 发现重复数据,去重
SELECT DISTINCT `studentno` FROM result

3.2where条件子句

作用:查询符合条件的数据

-- 查询成绩在95~100之间的学生
SELECT `StudentNo`,`StudentResult` FROM result
WHERE `StudentResult` >=95 AND `StudentResult`<=100SELECT `StudentNo`,`StudentResult` FROM result
WHERE StudentResult >=95 && StudentResult<=100-- 模糊查询(区间)
SELECT `StudentNo`,`StudentResult` FROM result
WHERE Studentresult BETWEEN 95 AND 100-- 查询除了1000号学生以外的同学的成绩
SELECT `StudentNo`,`StudentResult` FROM result
WHERE Studentno !=1000SELECT `StudentNo`,`StudentResult` FROM result
WHERE NOT Studentno =1000

模糊查询:比较运算符

-- ========模糊查询=========
-- like 结合 %(代表0到任一个字符) _(一个字符)
-- 查询姓张的同学
SELECT `studentno`,`studentname` FROM student
WHERE studentname LIKE '张%'
-- 查询姓张的同学,名字后面有两个字
SELECT `studentno`,`studentname` FROM student
WHERE studentname LIKE '张__'-- 查询名字中间有嘉字的同学 %威%
SELECT `studentno`,`studentname` FROM student
WHERE studentname LIKE '%威%'-- ========in(后面是具体的值)========
-- 查询1000,1001号学生
SELECT `studentno`,`studentname` FROM student
WHERE   `studentno` IN (1000,1001)
-- 查询在北京的学生
SELECT `studentno`,`studentname` FROM student
WHERE  `address` IN ('北京朝阳')-- =======null     not null ======-- 查询地址为空的学生 null  ''
SELECT `studentno`,`studentname` FROM student
WHERE  `address` IS NULL OR address = ''-- 查询地址不为空的学生
SELECT `studentno`,`studentname` FROM student
WHERE  `address` IS NOT NULL AND address != ''

3.3联表查询


-- ==========联表查询 join======-- 查询参加考试的同学(学号,姓名,科目编号,成绩)
SELECT * FROM student
SELECT * FROM result/*思路
1.分析需要哪些表
2.确定使用哪种连接查询? 7种确定交叉点(两表中相同的字段)
3. 判断条件:学生表中的 studentno =   成绩表中的 studentno
*/SELECT s.studentno,`studentname`,`subjectno`,`studentresult`
FROM student AS s
INNER JOIN result AS r
ON s.studentno = r.studentno-- right join
SELECT s.studentno,`studentname`,`subjectno`,`studentresult`
FROM student AS s
RIGHT JOIN result AS r
ON s.studentno = r.studentno-- left join
SELECT s.studentno,`studentname`,`subjectno`,`studentresult`
FROM student AS s
LEFT JOIN result AS r
ON s.studentno = r.studentno
-- 查询缺考的同学
SELECT s.studentno,`studentname`,`subjectno`,`studentresult`
FROM student AS s
LEFT JOIN result AS r
ON s.studentno = r.studentno
WHERE studentresult IS NULL-- 查询参加考试的同学的信息:学号,姓名,科目名,分数SELECT r.studentno,studentname,subjectname,studentresult
FROM result AS r
RIGHT JOIN student AS s
ON r.studentno = s.studentno
INNER JOIN `subject` AS sub
ON r.subjectno = sub.subjectno

注意:
From a left join b -->a 表为主
From a right join b -->b 表为主

3.4查询的其他语句

排序

/*============== 排序 ================
语法 : ORDER BYORDER BY 语句用于根据指定的列对结果集进行排序。ORDER BY 语句默认按照ASC升序对记录进行排序。如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。*/-- 查询 数据库结构-1 的所有考试结果(学号 学生姓名 科目名称 成绩)
-- 按成绩降序排序
SELECT s.studentno,studentname,subjectname,StudentResult
FROM student s
INNER JOIN result r
ON r.studentno = s.studentno
INNER JOIN `subject` sub
ON r.subjectno = sub.subjectno
WHERE subjectname='数据库结构-1'
ORDER BY StudentResult DESC

…未完待续

本文发布于:2024-02-01 05:33:51,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170673682934260.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:6.Servlet和Http
下一篇:1.狂神说HTML
标签:语法   MySQL
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23