Maison > Article > interface Web > Javascript est-il un langage SQL ?
javascript n'est pas un langage SQL. JavaScript est un langage de script dynamique multi-paradigmes basé sur la programmation de prototypes. Il est souvent utilisé pour ajouter une variété de fonctions dynamiques aux pages Web afin de fournir aux utilisateurs des effets de navigation plus fluides et plus esthétiques, tandis que SQL est un langage de requête et de programmation de base de données. pour accéder aux données et interroger, mettre à jour et gérer les systèmes de bases de données relationnelles.
L'environnement d'exploitation de ce tutoriel : système windows7, version javascript1.8.5&&mysql8, ordinateur Dell G3.
javascript n'est pas un langage SQL. Les langages Javascript et SQL sont deux langages différents et ont des utilisations différentes.
Qu'est-ce que javascript ?
JavaScript ("JS" en abrégé) est un langage de programmation léger, interprété ou compilé juste à temps avec priorité aux fonctions. Bien qu'il soit réputé comme langage de script pour le développement de pages Web, il est également utilisé dans de nombreux environnements autres que les navigateurs. JavaScript est un langage de script dynamique basé sur une programmation prototype, multi-paradigme et prend en charge les modes orienté objet, impératif et déclaratif (tels que les langages de script). comme programmation fonctionnelle).
JavaScript est un langage de script de haut niveau pour Internet. Il a été largement utilisé dans le développement d'applications Web. Il est souvent utilisé pour ajouter diverses fonctions dynamiques aux pages Web et offrir aux utilisateurs des effets de navigation plus fluides et plus esthétiques. Habituellement, les scripts JavaScript réalisent leurs fonctions en les intégrant dans HTML.
Fonctions principales
1. Intégrez du texte dynamique dans des pages HTML.
2. Répondez aux événements du navigateur.
3. Lire et écrire des éléments HTML.
4. Validez les données avant de les soumettre au serveur.
5. Détectez les informations du navigateur du visiteur. Contrôler les cookies, y compris leur création et leur modification.
6. Programmation côté serveur basée sur la technologie Node.js.
Comment utiliser JavaScript
L'attribut type du script n'a pas besoin d'être écrit. Si vous souhaitez l'écrire, utilisez-le
type="text/javascript"
Méthode 1 : Méthode interne de js
<script> //单行注释 /*多行注释*/ //在js常见的函数 //向浏览器打印内容,类似于Java中的控制台输出语句 document.write("hello,JavaScript我来了!") ; //还可以在浏览器中控制台中打印内容 console.log("hello,JavaScript我来了") ; //在浏览中弹出一个提示框 //window对象是浏览器中顶级对象,可以省略不写! //window.alert("helloworld") ; //简写为: alert("helloworld") ; </script> -->
Méthode 2 : Méthode externe
.Développement réel (développeur front-end) Pour utilisation en développement !)
Vous devez créer un fichier séparé avec le suffixe .js dans le dossier js
Écrivez le code js et importez le fichier js dans la page html actuelle !
Importer des fichiers js externes
<script src="js/01.js"></script>
Qu'est-ce que SQL ?
Le langage de requête structuré (SQL), appelé SQL, est un langage de programmation à usage spécial. Il s'agit d'un langage de requête et de programmation de base de données utilisé pour accéder aux données et interroger, mettre à jour et gérer les systèmes de bases de données relationnelles.
SQL peut être fonctionnellement divisé en 3 parties : définition des données, manipulation des données et contrôle des données.
1. Fonction de définition de données SQL : capable de définir la structure du schéma à trois niveaux de la base de données, à savoir le schéma externe, le schéma global et la structure du schéma interne. En SQL, le schéma externe est également appelé vue et le schéma global est appelé schéma. Le schéma interne est automatiquement implémenté par le système en fonction du schéma de base de données et ne nécessite généralement pas l'intervention de l'utilisateur.
2. Fonctions de manipulation de données SQL : y compris l'insertion de données, la suppression et la modification de tables et de vues de base, en particulier des fonctions de requête de données puissantes.
3. Fonction de contrôle des données SQL : contrôle principalement les droits d'accès des utilisateurs pour assurer la sécurité du système.
Instruction DDL : instruction d'opération de base de données
Instruction DDL de base de données (instruction de définition de base de données) opérations de bibliothèque
-- :普通注释 当行注释 /* mysql的多行注释*/ #特殊注释 -- 查询当前mysql中自带的所有库有哪些 库在我们电脑磁盘上----> 文件夹 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | mysql的默认配置库 | mysql | 有user表 (管理员用户表) :root用户就在这个库中 | performance_schema | mysql其他库(性能相关) | test | 测试库,但是不用它,自己创建新的库 +--------------------+ 4 rows in set (0.00 sec) -- 创建库 -- create database 库名; mysql> create database myEE_2203 ; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | myee_2203 | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.00 sec) -- create database if not exists 库名; mysql> create database if not exists ee2203; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | ee2203 | | myee_2203 | | mysql | | performance_schema | | test | +--------------------+ 6 rows in set (0.00 sec) -- 查询创建库的字符集 -- show create database 库名; mysql> show create database myee_2203; +-----------+--------------------------------------------------------------------+ | Database | Create Database | +-----------+--------------------------------------------------------------------+ | myee_2203 | CREATE DATABASE `myee_2203` /*!40100 DEFAULT CHARACTER SET utf8 */ | +-----------+--------------------------------------------------------------------+ 1 row in set (0.00 sec) -- 修改库的字符集 -- alter database 库名 default character set 字符集名称; mysql> alter database myee_2203 default character set gbk; Query OK, 1 row affected (0.00 sec) mysql> show create database myee_2203; +-----------+-------------------------------------------------------------------+ | Database | Create Database | +-----------+-------------------------------------------------------------------+ | myee_2203 | CREATE DATABASE `myee_2203` /*!40100 DEFAULT CHARACTER SET gbk */ | +-----------+-------------------------------------------------------------------+ 1 row in set (0.00 sec) -- 删除库 -- drop database 库名 ; mysql> drop database ee2203; Query OK, 0 rows affected (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | myee_2203 | | mysql | | performance_schema | | test | +--------------------+ -- drop database if exists 库名 ; 如果存在这个库删除 mysql> drop database if exists myee_2203; Query OK, 0 rows affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec)
Instruction DDL de base de données (instruction de définition de base de données) pour créer des tables, modifier des tables, interroger des tables, supprimer une table...
mysql常见的数据类型 int :整数类型 默认最大长度11位字符,给int类型的数据的时候,当前存储的是值的真实长度 举例 年龄字段age int类型 int(字符数): 整数类型, 给int(3)这个值的时候,实际存储3位,但是赋值的时候不够3位 (使用很少) id字段 1-----int(3) -------------------001 varchar(最大支持255个长度): 字符串类型 指定varchar(指定长度) date:仅仅是日期类型 datetime:日期+时间类型 timestap:时间戳 (举例:管理员添加一个商品,商品上架的时间:当前系统瞬时时间 :2021-5-11 16:50分) double:小数类型 double(几位数,小数点后保留的位数) 举例: double(4,2): 4位,小数点后保留2位 clob:大字符类型 支持 "大文本" blob:大字节类型 最大支持4G -- 建表之前,必须使用哪个库 -- use 库名; mysql> use ee_2203; Database changed mysql> /* create table 表名( 字段名称1 字段类型1, 字段名称2 字段类型2, ... ... 字段名称n 字段类型n ) ; */ mysql> create table student( -> id int, -> name varchar(10), -> age int, -> gender varchar(2), -> address varchar(50), -> socre double(3,1) -> ); Query OK, 0 rows affected (0.02 sec) -- 查询当前库中有哪些表 -- show tables ; mysql> show tables ; +-------------------+ | Tables_in_ee_2203 | +-------------------+ | student | +-------------------+ 1 row in set (0.00 sec) mysql> -- 查看表的结构 -- desc 表名; mysql> desc student; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | | age | int(11) | YES | | NULL | | | gender | varchar(2) | YES | | NULL | | | address | varchar(50) | YES | | NULL | | | socre | double(3,1) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 6 rows in set (0.01 sec) -- 修改表的字段名称 -- alter table 表名 change 旧字段名称 新的字段名称 以前的字段数据类型; mysql> alter table student change gender sex varchar(2) ; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc student; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | | age | int(11) | YES | | NULL | | | sex | varchar(2) | YES | | NULL | | | address | varchar(50) | YES | | NULL | | | socre | double(3,1) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 6 rows in set (0.01 sec) -- 修改表的字段类型 modify -- alter table 表名 modify 字段名称 新的字段类型 ; mysql> alter table student modify address varchar(100) ; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc student; +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | | age | int(11) | YES | | NULL | | | sex | varchar(2) | YES | | NULL | | | address | varchar(100) | YES | | NULL | | | socre | double(3,1) | YES | | NULL | | +---------+--------------+------+-----+---------+-------+ 6 rows in set (0.01 sec) -- 修改表:给表中添加一个新的字段 -- alter table 表名 add 字段名称 字段类型; mysql> alter table student add description varchar(200) ; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0 -- 复制一张表 -- create table 新表名 like 旧表名; mysql> create table teachear like student ; Query OK, 0 rows affected (0.02 sec) mysql> show tables; +-------------------+ | Tables_in_ee_2203 | +-------------------+ | student | | teachear | +-------------------+ 2 rows in set (0.00 sec) -- 删除表 -- drop table 表名; -- drop table if exists 表名; mysql> drop table if exists teachear; Query OK, 0 rows affected (0.01 sec) mysql> show tables; +-------------------+ | Tables_in_ee_2203 | +-------------------+ | student | +-------------------+ 1 row in set (0.00 sec)
Données DML : Instruction d'opération de base de données : Enregistrement de la table d'opération
Requête de données
-- 查询这个库中有哪些表 SHOW TABLES ; -- 创建一张新的表学生表,id,姓名,年龄,性别,住址 CREATE TABLE student( id INT , -- 学号 NAME VARCHAR(10), -- 姓名 age INT, -- 年龄 gender VARCHAR(5), -- 性别 address VARCHAR(50) -- 住址 ) ; -- 查询学生的表的结构 DESC student ;
Insérer des données
-- 给学生表中插入数据 -- 插入数据的语法1:insert into 表名 values(值1,值2,值3,值4...值n); 插入全部数据 INSERT INTO student VALUES(1,'高圆圆',42,'女','西安市') ; -- 插入表的数据支持 :一次插入多条数据 -- insert into 表名 values(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n); INSERT INTO student VALUES(2,'文章',35,'男','咸阳市'), (3,'马伊琍',40,'女','上海市'),(4,'马保国',56,'男','宝鸡市') ; -- 语法2:插入部分字段,没有插入的字段,默认值就是null, 也支持一次性插入多条数据 -- insert into 表名(字段名称1,字段名称2....) values(值1,值2...) ; INSERT INTO student(id,NAME,age,gender) VALUES(5,'王宝强',35,'男') ; INSERT INTO student(id,NAME,age,gender) VALUES(6,'张三丰',60,'男'),(7,'令狐冲',38,'男') ; /* 注意事项: 1)插入的这些值必须要和表中的字段对应上; 先后顺序保证一致! 2)目前没有加入"数据库约束",可以插入非法数据,举例:id重复 , 后期需要使用数据库约束来限定用户的操作表的行为! */ -- 插入一个学生id为7的 INSERT INTO student VALUES(7,'张佳宁',32,'女','西安市') ;
Modifier les données
-- 一般实际开发中修改:都是带条件修改 (推荐) -- update 表名 set 字段名称 = 值 where 条件 ; -- 需求:将name为张佳宁的学生id改为8 UPDATE student SET id = 8 WHERE NAME = '张佳宁' ; -- 需求: 修改id为6的学生的姓名为 '姚笛' (id字段在实际开发中:都是非业务字段,以后唯一的) UPDATE student SET NAME = '姚笛' WHERE id = 6 ; -- 语法2:一次性修改多个字段 -- update 表名 set 字段名称1 = 值 ,字段名称2 =值2.... where 条件; -- 需求:将id为6的学生 的年龄改为25,性别改为女,地址改为上海 UPDATE student SET age = 25,gender ='女',address='上海市' WHERE id = 6 ; -- 语法3:不带条件 属于批量修改 (部分场景可以用的) -- update 表名 set 字段名称= 值,字段名称2 =值2.... UPDATE student SET address = '鄠邑区' ;
Supprimer les données
-- delete from 表名 where 条件 ; 带条件删除记录 (使用的非业务字段id删除) -- 需求:删除id为7的学生信息 DELETE FROM student WHERE id = 7 ; -- delete from 表名 :删除全表数据 DELETE FROM student ; -- truncate table 表名; 删除全表数据 TRUNCATE TABLE student; /* 面试题: delete from 表名 和 truncate table 表名 :两个区别? 共同点:都是可以删除全表的记录的; 不同点: delete from 表名 ; 仅仅只是将表的全部记录删除了,表还在! 它针对id(非业务字段:设置主键并且自增长),它不影响自增长主键的这个值; (数据库约束后面讲) truncat table 表名; 将表所有数据删除,而且还会把删除之后, 自动创建一个张一模一样的表,影响自增主键的值! */ DROP TABLE student ; SHOW TABLES ; -- 创建一个学生表,id 加入主键(非空且唯一)和自增长(不断的自增1)约束 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT , -- id主键并且自增长 NAME VARCHAR(20),-- 姓名 age INT ); -- 一次插入4条 INSERT INTO student(NAME,age) VALUES('高圆圆',42),('张佳宁',32),('文章',35),('王宝强',38) ; -- 自增长的id可以自己给个值 INSERT INTO student VALUES(15,'高圆圆2',42); INSERT INTO student(NAME,age) VALUES('姚笛',35) ;
Instruction DQL : (instruction de requête de base de données)
-- DQL语句最通用的语法:查询表的全部数据 -- -- * 代表所有字段,仅仅是自己玩的时候可以用,实际开发中不能用*,需要写上全部的字段名称 SELECT * FROM student ; CREATE TABLE student3 ( id INT, -- 编号 NAME VARCHAR(20), -- 姓名 age INT, -- 年龄 sex VARCHAR(5), -- 性别 address VARCHAR(100), -- 地址 math INT, -- 数学 english INT -- 英语 ); INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,'马云',55,'男',' 杭州',66,78), (2,'马化腾',45,'女','深圳',98,87), (3,'马景涛',55,'男','香港',56,77), (4,'柳岩 ',20,'女','湖南',76,65), (5,'柳青',20,'男','湖南',86,NULL), (6,'刘德华',57,'男','香港 ',99,99), (7,'马德',22,'女','香港',99,99), (8,'德玛西亚',18,'男','南京',56,65);
1) L'instruction de requête la plus basique select
-- 查询全表数据:select * from 表名; SELECT * FROM student3 ; -- 实际开发中查询全部字段,把字段名称全部写上 SELECT id, NAME, age, sex, address, math, english FROM student3; -- 查询全部字段的时候,给字段起一个别名 as '别名名称' ,as省略 SELECT id AS '编号', NAME AS '姓名', age AS '年龄', sex AS '性别', address AS '地址', math AS '数学成绩', english AS '英语成绩' FROM student3 ; -- as 可以省略的 SELECT id '编号', NAME '姓名', age '年龄', sex '性别', address '地址', math '数学成绩', english '英语成绩' FROM student3 ; -- 当表的名称比较长的时候,可以给表名起一个别名; SELECT s.`id` '学生编号', s.`name` '学生姓名', s.`age` '学生年龄', s.`sex` '学生性别', s.`address` '学生地址', s.`math` '数学成绩', s.`english` '英语成绩' FROM student3 s ;-- 起了一个别名s -- 可以查询部分字段 -- 需求:查询学生的姓名以及数学和英语成绩 SELECT NAME '姓名', math '数学成绩', english '英语成绩' FROM student3 ; -- 需求:查询学生的地址信息 SELECT address FROM student3; -- 发现:字段冗余(重复度大) 字段去重 DISTINCT 后面跟上字段名称 SELECT DISTINCT address FROM student3;
2) Requête conditionnelle où mot-clé de l'instruction DQL
-- 2.1)使用 赋值运算符=,比较运算符 <,<=,>=,>,!=, mysql中的不等于 <> -- 2.2)Java中逻辑运算符:&&,|| mysql推荐使用 and , or -- 2.2)针对两个范围查询: 可以使用&&,可以使用and, 也可以 "字段名称 between 值1 and 值2" -- 需求:查询年龄大于20岁的学生所有信息 SELECT * FROM student3 WHERE age > 20 ; -- 需求:查询年龄在20到30之间的学生的姓名,年龄,住址 ,数学和英语成绩信息 SELECT NAME '姓名', age '年龄', address '住址', math '数学成绩', english '英语成绩' FROM student3 WHERE age >= 20 && age <= 30 ; -- && 逻辑双与 -- mysql中使用and 并列关系 SELECT NAME '姓名', age '年龄', address '住址', math '数学成绩', english '英语成绩' FROM student3 WHERE age >= 20 AND age <= 30 ; -- and 连接 -- 使用的between 值1 and 值2 SELECT NAME '姓名', age '年龄', address '住址', math '数学成绩', english '英语成绩' FROM student3 WHERE age BETWEEN 20 AND 30 ; -- 需求:查询年龄是20岁学生的所有信息 SELECT * FROM student3 WHERE age = 20 ; -- 需求:查询年龄不是20岁的学生的所有信息 SELECT * FROM student3 WHERE age != 20 ; -- != Java中 的用法 SELECT * FROM student3 WHERE age <> 20 ;-- mysql中的不等于 <> -- 需求:查询年龄是18岁或者是20或者是45岁的学生的所有信息 SELECT * FROM student3 WHERE age = 18 || age =20 || age = 45 ;-- Java中逻辑双或|| SELECT * FROM student3 WHERE age = 18 OR age =20 OR age = 45 ; -- Mysql中的or这个表示 或(并集) -- 上面这个格式优化为 in(值1,值2,值3..值n) ;in集合语句 SELECT * FROM student3 WHERE age IN(18,20,45) ; -- Java语言中:去判断某个条件的内容为null ,mysql语言不支持这个格式 ==null -- 需求:查询学生的英语成绩为null的学生所有信息 -- select * from student3 where english == null ; -- mysql中判断某个字段为null,使用的语法是 is null -- 判断某个字段不为null,使用的语法是 is not null SELECT * FROM student3 WHERE english IS NULL ; -- 需求:查询学生的英语成绩不为null的学生的所有信息 SELECT * FROM student3 WHERE english IS NOT NULL ; -- 关于int类型字段求和的时候,注意: int类型的值 + null 值 = null; -- 查询学生的姓名以及英语和数学总分 SELECT NAME '姓名', (math+english) '总分' FROM student3 ; -- 上面这种情况:不太友好,数学成绩有值,但是结果求和是null -- mysql提供函数 ifnull(字段名称,值); 如果字段名称是null,给一个默认值 SELECT NAME '姓名', (math+IFNULL(english,0)) '总分' FROM student3 ; SHOW VARIABLES LIKE '%character%' ;
3) Ajouter une requête floue après la condition Where de l'instruction DQL - mot-clé comme
-- select 字段列表 from 表名 where 字段名称 like '%xxx%' ; -- %:代表任何多个字符或者某个字符 (使用居多):网站门户系统---"搜索商品" ,模糊搜索 -- _:代表某个单个字符 -- 需求:查询所有姓马的学生信息 SELECT * FROM student3 WHERE NAME LIKE '%马%' -- 查询学生姓名三个字符并且第二个字符是化的人 SELECT * FROM student3 WHERE NAME LIKE '_化_' ; -- 查询姓名为三个字符的学生信息 SELECT * FROM student3 WHERE NAME LIKE '___' ;
4) Requête de fonction d'agrégation
针对int类型: 单行单列数据 -- select 聚合函数 from 表名 where 还可以指定条件; -- count(字段名称):查询表中记录 ,字段名称使用都是id,非业务字段 -- avg(字段名称): 查询这个字段中平均值 -- sum(字段列表):求和函数 -- max(字段名称):最大值 -- min(字段名称):最小值 -- 需求:查询表的总记录数 -- select count(english) '总记录数' from student3; -- 前提条件使用业务字段查询,不能有null值 -- select count(ifnull(english,0)) '总记录数' from student3; SELECT COUNT(id) '总条数' FROM student3 ; -- 查询数学平均分 avg(字段名称) SELECT AVG(math) '数学平均分' FROM student3; -- 数学和英语成绩求和的学生信息(姓名,和总分) SELECT SUM(math+IFNULL(english,0)) '总分' FROM student3; -- max()和min() SELECT MAX(math) '数学最高分' FROM student3 ; -- select语句嵌套select语句 --- 子查询 -- 需求:查询出学生数学成绩大于 数学平均分的学生所有信息; -- 使用where 条件 后面带上 比较运算符... -- Java中 -- int x =10,y ; -- y = y+x ; 将10代入 -- 1)查询数学平均分是多少 SELECT AVG(math) FROM student3; -- 79.5000 -- 2)查询大于数学平均分的学生信息 SELECT * FROM student3 WHERE math > 79.5000; -- 一步走 SELECT * FROM student3 WHERE math > (SELECT AVG(math) FROM student3) ; -- 查询数学成绩最高分的学生的姓名,年龄,地址以及数学成绩; -- 1)查询最高分是多少 SELECT MAX(math) FROM student3; -- 99 -- 2)查询最高分是这个成绩的学生信息 SELECT NAME '姓名', age '年龄', address '地址', math '数学成绩' FROM student3 WHERE math = 99 ; -- 一步走 SELECT NAME '姓名', age '年龄', address '地址', math '数学成绩' FROM student3 WHERE math = (SELECT MAX(math) FROM student3) ;
5 ) Ordre de requête de tri DQL par
select 字段列表 from 表名 order by 字段名称 排序规则(asc(默认值就是升序)或者desc 降序) UPDATE student3 SET english = 88 WHERE id = 5 ; UPDATE student3 SET english = 94 WHERE id = 6 ; -- 需求:按照数学成绩升序排序 单个字段 SELECT * FROM student3 ORDER BY math ASC ; -- 默认不写排序规则,就是asc 升序 -- 同时条件和order by,order by在where的后面 -- 需求:数学成绩大于56分的学生进行数学的降序排序 SELECT NAME , math FROM student3 WHERE math > 56 -- 先满足条件,才能排序!where 必须order by之前 ORDER BY math DESC ; -- 多个字段要同时排序,首先第一个字段排序规则,然后才是第二个字段 -- 需求:数学成绩降序,英语成绩升序排序 SELECT * FROM student3 ORDER BY math DESC , english ASC ; SELECT * FROM student3 ;
6) Requête de groupe d'instructions DQL : groupe par
-- select 字段列表 from 表名 group by 分组字段名称; -- 注意事项: 1)查询的字段列表中可以使用 分组字段 -- 2)group by之后不能使用聚合函数 -- 需求:按照性别分组,查询出他们的数学成绩的平均分 SELECT sex '性别', -- 查询的分组字段 AVG(math) '数学平均分' -- 查询每一个组的数学平均分 FROM student3 GROUP BY sex ; -- 带条件分组查询的语法: where 条件 必须放在group by 之前,否则语法错误! -- select 字段列表包含分组字段,聚合函数.. from 表名 where 条件 group by 分组字段; -- 需求:按照性别分组,查询出他们的数学成绩的平均分,数学成绩大于70分的参与分组 SELECT sex '性别', AVG(math) '数学平局分' FROM student3 WHERE math > 70 -- 先满足条件,然后才能分组; GROUP BY sex ;
7) Requête de filtre ayant
-- where条件,group by,having 必须先有条件,分组,然后才筛选! -- 注意:筛选的后面可以使用聚合函数,group by的后面是不能使用聚合函数的 -- 需求:按照性别分组,查询数学平局分,条件:数学成绩大于70的人参与分组, 筛选出人数大于2的这一组 SELECT sex '性别', COUNT(id) '总人数', AVG(math) '数学平均分' FROM student3 WHERE math > 70 GROUP BY sex HAVING -- 后面可以使用聚合函数 COUNT(id) > 2 ; -- 优化为 SELECT sex '性别', COUNT(id) 人数, AVG(math) '数学平均分' FROM student3 WHERE math > 70 GROUP BY sex HAVING -- 后面可以使用聚合函数 人数 > 2 ;
8) Limite de requête de pagination
-- select 字段列表 from 表名 limit 起始行数,每页显示的条数; -- 起始行数:从0开始算的, -- 起始行数 = (当前页码-1)*每页显示的条数 -- 前提条件:每页显示2条, -- 第一页数据 SELECT * FROM student3 LIMIT 0,2; -- 第二页数据 SELECT * FROM student3 LIMIT 2,2 ; -- 第三页数据 SELECT * FROM student3 LIMIT 4,2 ; -- 第四页数据 SELECT * FROM student3 LIMIT 6,2 ; -- 第五页数据 SELECT * FROM student3 LIMIT 8,2; -- 第六页数据 SELECT * FROM student3 LIMIT 10,2; -- 第七页数据 SELECT * FROM student3 LIMIT 12,2;
[Recommandations associées : Tutoriels vidéo javascript , Vidéos de programmation 】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!