• 技术文章 >web前端 >前端问答

    javascript是sql语言吗

    青灯夜游青灯夜游2022-09-20 15:25:32原创87

    javascript不是sql语言。JavaScript是一种基于原型编程、多范式的动态脚本语言,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果;而SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

    大前端成长进阶课程:进入学习

    本教程操作环境:windows7系统、javascript1.8.5&&mysql8版、Dell G3电脑。

    javascript不是sql语言。javascript和sql语言是两种不同的语言,且用处也不一样。

    什么是javascript?

    JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

    JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。

    主要功能

    1.嵌入动态文本于HTML页面。

    2.对浏览器事件做出响应。

    3.读写HTML元素。

    4.在数据被提交到服务器之前验证数据。

    5.检测访客的浏览器信息。控制cookies,包括创建和修改等。

    6.基于Node.js技术进行服务器端编程。

    JavaScript的使用方式

    script的type属性可以不写,如果要写的话使用

    type="text/javascript"

    方式1:js的内部方式

    <script>
    //单行注释
    /*多行注释*/
    //在js常见的函数
    //向浏览器打印内容,类似于Java中的控制台输出语句
    document.write("hello,JavaScript我来了!") ;
    //还可以在浏览器中控制台中打印内容
    console.log("hello,JavaScript我来了") ;
    //在浏览中弹出一个提示框  
    //window对象是浏览器中顶级对象,可以省略不写!
    //window.alert("helloworld") ;
    //简写为:
    alert("helloworld") ;
    </script> -->

    方式2:外部方式

    实际开发中(前端开发人员开发使用的!)

    需要在js文件夹中单独创建一个后缀为.js的文件

    书写js代码,在当前html页面中将js文件导入即可!

    导入外部js文件

    <script src="js/01.js"></script>

    什么是SQL?

    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

    SQL从功能上可以分为3部分:数据定义、数据操纵和数据控制。

    DDL语句: 数据库操作语句

    数据库的DDL语句(数据库的定义语句)之库的操作

    -- :普通注释 当行注释
    /* 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)

    数据库DDL语句(数据库定义语句)之建表,修改表,查询表,删除表…

    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)

    DML数据:数据库操作语句 :操作表的记录

    查询数据

    -- 查询这个库中有哪些表
    SHOW TABLES ;
    
    -- 创建一张新的表学生表,id,姓名,年龄,性别,住址
    CREATE TABLE student(
        id INT ,  -- 学号
        NAME VARCHAR(10), -- 姓名
        age INT,  -- 年龄
        gender VARCHAR(5), -- 性别
        address VARCHAR(50) -- 住址
    ) ;
    
    -- 查询学生的表的结构
    DESC student ;

    插入数据

    -- 给学生表中插入数据 
    --  插入数据的语法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,'女','西安市') ;

    修改数据

    --  一般实际开发中修改:都是带条件修改  (推荐)
    -- 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 = '鄠邑区' ;

    删除数据

    -- 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) ;

    DQL语句:(数据库查询语句)

    -- 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)最基本的查询语句 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)DQL语句之条件查询 where 关键字

     -- 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)DQL语句之 where条件后面加入模糊查询 —关键字 like

    -- select 字段列表 from 表名 where 字段名称 like '%xxx%' ;
    -- %:代表任何多个字符或者某个字符   (使用居多):网站门户系统---"搜索商品" ,模糊搜索
    -- _:代表某个单个字符
    
    -- 需求:查询所有姓马的学生信息
    
    SELECT
        *
    FROM
        student3
    WHERE 
        NAME LIKE   '%马%'
        
    -- 查询学生姓名三个字符并且第二个字符是化的人
    SELECT 
        *
    FROM 	
         student3
    WHERE 
         NAME  LIKE '_化_' ;
         
    -- 查询姓名为三个字符的学生信息
    SELECT 
        *
    FROM 
    	student3
    WHERE 
    	NAME LIKE '___' ;

    4)聚合函数查询

    针对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)DQL之排序查询 order by

     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)DQL语句之分组查询:group by

    -- 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)筛选查询 having

    -- 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)分页查询 limit

    -- 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;

    【相关推荐:javascript视频教程编程视频

    以上就是javascript是sql语言吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:javascript
    上一篇:javascript怎么求3个数的和 下一篇:javascript的调试工具是什么
    VIP课程(WEB全栈开发)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• JavaScript webpack5配置及使用基本介绍• 归纳总结JavaScript条件判断使用技巧• 关于JavaScript中的数组方法和循环• 简单了解JavaScript变量or循环中的var和let• 分享12道面试题,看你懂不懂JavaScript!• JavaScript如何改变this指向?三种方法浅析
    1/1

    PHP中文网