首页 web前端 前端问答 javascript是sql语言吗

javascript是sql语言吗

Sep 20, 2022 pm 03:25 PM
javascript

javascript不是sql语言。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部分:数据定义、数据操纵和数据控制。

  • 1、SQL数据定义功能:能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式又叫做视图(View),全局模式简称模式(Schema),内模式由系统根据数据库模式自动实现,一般无需用户过问。

  • 2、SQL数据操纵功能:包括对基本表和视图的数据插入、删除和修改,特别是具有很强的数据查询功能。

  • 3、SQL的数据控制功能:主要是对用户的访问权限加以控制,以保证系统的安全性。

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,&#39;高圆圆&#39;,42,&#39;女&#39;,&#39;西安市&#39;) ;

-- 插入表的数据支持 :一次插入多条数据
-- insert into 表名 values(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n);
INSERT INTO student VALUES(2,&#39;文章&#39;,35,&#39;男&#39;,&#39;咸阳市&#39;),
(3,&#39;马伊琍&#39;,40,&#39;女&#39;,&#39;上海市&#39;),(4,&#39;马保国&#39;,56,&#39;男&#39;,&#39;宝鸡市&#39;) ;

-- 语法2:插入部分字段,没有插入的字段,默认值就是null, 也支持一次性插入多条数据
-- insert into 表名(字段名称1,字段名称2....) values(值1,值2...) ;
INSERT INTO student(id,NAME,age,gender) VALUES(5,&#39;王宝强&#39;,35,&#39;男&#39;) ;
INSERT INTO student(id,NAME,age,gender) VALUES(6,&#39;张三丰&#39;,60,&#39;男&#39;),(7,&#39;令狐冲&#39;,38,&#39;男&#39;) ;

/*
注意事项:
	1)插入的这些值必须要和表中的字段对应上; 先后顺序保证一致!
	2)目前没有加入"数据库约束",可以插入非法数据,举例:id重复 ,
	后期需要使用数据库约束来限定用户的操作表的行为!
*/
-- 插入一个学生id为7的
INSERT INTO student VALUES(7,&#39;张佳宁&#39;,32,&#39;女&#39;,&#39;西安市&#39;) ;
登录后复制

修改数据

--  一般实际开发中修改:都是带条件修改  (推荐)
-- update 表名 set 字段名称 = 值 where 条件 ;

-- 需求:将name为张佳宁的学生id改为8
UPDATE student SET id = 8 WHERE NAME = &#39;张佳宁&#39; ;

-- 需求: 修改id为6的学生的姓名为 &#39;姚笛&#39; (id字段在实际开发中:都是非业务字段,以后唯一的)
UPDATE student SET NAME = &#39;姚笛&#39; WHERE id =  6 ;


-- 语法2:一次性修改多个字段
-- update 表名 set 字段名称1 = 值 ,字段名称2 =值2.... where 条件;

-- 需求:将id为6的学生 的年龄改为25,性别改为女,地址改为上海
UPDATE student SET age = 25,gender =&#39;女&#39;,address=&#39;上海市&#39; WHERE id = 6 ;


-- 语法3:不带条件 属于批量修改 (部分场景可以用的)
-- update 表名 set 字段名称= 值,字段名称2 =值2....
UPDATE student SET address = &#39;鄠邑区&#39; ;
登录后复制

删除数据

-- 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(&#39;高圆圆&#39;,42),(&#39;张佳宁&#39;,32),(&#39;文章&#39;,35),(&#39;王宝强&#39;,38) ;

-- 自增长的id可以自己给个值
INSERT INTO student  VALUES(15,&#39;高圆圆2&#39;,42);
INSERT INTO student(NAME,age) VALUES(&#39;姚笛&#39;,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,&#39;马云&#39;,55,&#39;男&#39;,&#39; 杭州&#39;,66,78),
 (2,&#39;马化腾&#39;,45,&#39;女&#39;,&#39;深圳&#39;,98,87),
 (3,&#39;马景涛&#39;,55,&#39;男&#39;,&#39;香港&#39;,56,77),
 (4,&#39;柳岩 &#39;,20,&#39;女&#39;,&#39;湖南&#39;,76,65),
 (5,&#39;柳青&#39;,20,&#39;男&#39;,&#39;湖南&#39;,86,NULL),
 (6,&#39;刘德华&#39;,57,&#39;男&#39;,&#39;香港 &#39;,99,99),
(7,&#39;马德&#39;,22,&#39;女&#39;,&#39;香港&#39;,99,99),
(8,&#39;德玛西亚&#39;,18,&#39;男&#39;,&#39;南京&#39;,56,65);
登录后复制

1)最基本的查询语句 select

-- 查询全表数据:select * from 表名;
SELECT * FROM student3 ;
-- 实际开发中查询全部字段,把字段名称全部写上
SELECT 
	id,
	NAME,
	age,
	sex,
	address,
	math,
	english

FROM 
	student3;
	
-- 查询全部字段的时候,给字段起一个别名  as &#39;别名名称&#39; ,as省略
SELECT 
  id AS &#39;编号&#39;,
  NAME AS &#39;姓名&#39;,
  age AS &#39;年龄&#39;,
  sex AS &#39;性别&#39;,
  address AS &#39;地址&#39;,
  math AS &#39;数学成绩&#39;,
  english AS &#39;英语成绩&#39; 
FROM
  student3 ;
-- as 可以省略的

SELECT 
  id  &#39;编号&#39;,
  NAME  &#39;姓名&#39;,
  age  &#39;年龄&#39;,
  sex  &#39;性别&#39;,
  address  &#39;地址&#39;,
  math  &#39;数学成绩&#39;,
  english  &#39;英语成绩&#39; 
FROM
  student3 ;
 -- 当表的名称比较长的时候,可以给表名起一个别名;
SELECT 
  s.`id` &#39;学生编号&#39;,
  s.`name` &#39;学生姓名&#39;,
  s.`age` &#39;学生年龄&#39;,
  s.`sex` &#39;学生性别&#39;,
  s.`address` &#39;学生地址&#39;,
  s.`math` &#39;数学成绩&#39;,
  s.`english` &#39;英语成绩&#39; 
FROM
  student3 s ;-- 起了一个别名s 
    
  -- 可以查询部分字段
 -- 需求:查询学生的姓名以及数学和英语成绩
 SELECT 
	NAME &#39;姓名&#39;,
	math &#39;数学成绩&#39;,
	english &#39;英语成绩&#39;
 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 &#39;姓名&#39;,
  age &#39;年龄&#39;,
  address &#39;住址&#39;,
  math &#39;数学成绩&#39;,
  english &#39;英语成绩&#39; 
FROM
  student3 
WHERE age >= 20 && age <= 30 ; -- && 逻辑双与

-- mysql中使用and 并列关系
SELECT 
  NAME &#39;姓名&#39;,
  age &#39;年龄&#39;,
  address &#39;住址&#39;,
  math &#39;数学成绩&#39;,
  english &#39;英语成绩&#39; 
FROM
  student3 
WHERE age >= 20 AND age <= 30 ; -- and 连接


-- 使用的between 值1 and 值2
SELECT
    NAME &#39;姓名&#39;,
    age &#39;年龄&#39;,
    address &#39;住址&#39;,
    math &#39;数学成绩&#39;,
    english &#39;英语成绩&#39; 
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 &#39;姓名&#39;,
    (math+english) &#39;总分&#39;
FROM
    student3 ;
-- 上面这种情况:不太友好,数学成绩有值,但是结果求和是null
-- mysql提供函数 ifnull(字段名称,值);  如果字段名称是null,给一个默认值
SELECT  
    NAME &#39;姓名&#39;,
    (math+IFNULL(english,0)) &#39;总分&#39;
FROM
    student3 ;
    
SHOW VARIABLES LIKE &#39;%character%&#39; ;
登录后复制

3)DQL语句之 where条件后面加入模糊查询 —关键字 like

-- select 字段列表 from 表名 where 字段名称 like &#39;%xxx%&#39; ;
-- %:代表任何多个字符或者某个字符   (使用居多):网站门户系统---"搜索商品" ,模糊搜索
-- _:代表某个单个字符

-- 需求:查询所有姓马的学生信息

SELECT
    *
FROM
    student3
WHERE 
    NAME LIKE   &#39;%马%&#39;
    
-- 查询学生姓名三个字符并且第二个字符是化的人
SELECT 
    *
FROM 	
     student3
WHERE 
     NAME  LIKE &#39;_化_&#39; ;
     
-- 查询姓名为三个字符的学生信息
SELECT 
    *
FROM 
	student3
WHERE 
	NAME LIKE &#39;___&#39; ;
登录后复制

4)聚合函数查询

针对int类型:
		单行单列数据
-- select  聚合函数 from 表名 where 还可以指定条件;

-- count(字段名称):查询表中记录 ,字段名称使用都是id,非业务字段
-- avg(字段名称): 查询这个字段中平均值 
-- sum(字段列表):求和函数
-- max(字段名称):最大值
-- min(字段名称):最小值

-- 需求:查询表的总记录数
-- select count(english) &#39;总记录数&#39; from student3; -- 前提条件使用业务字段查询,不能有null值
-- select count(ifnull(english,0)) &#39;总记录数&#39; from student3; 
SELECT COUNT(id) &#39;总条数&#39; FROM student3 ;
-- 查询数学平均分 avg(字段名称)
SELECT AVG(math) &#39;数学平均分&#39; FROM student3;
-- 数学和英语成绩求和的学生信息(姓名,和总分)
SELECT  
	SUM(math+IFNULL(english,0)) &#39;总分&#39;
FROM
        student3;
-- max()和min()
SELECT MAX(math) &#39;数学最高分&#39; 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 &#39;姓名&#39;,
    age &#39;年龄&#39;,
    address &#39;地址&#39;,
    math &#39;数学成绩&#39;
FROM 
    student3 
 WHERE 
	math = 99 ;


-- 一步走
SELECT 
    NAME &#39;姓名&#39;,
    age &#39;年龄&#39;,
    address &#39;地址&#39;,
    math &#39;数学成绩&#39;
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 &#39;性别&#39;, -- 查询的分组字段
     AVG(math) &#39;数学平均分&#39; -- 查询每一个组的数学平均分
FROM
	student3 
GROUP BY 
	sex ;
	
-- 带条件分组查询的语法:  where 条件 必须放在group by 之前,否则语法错误!
-- select 字段列表包含分组字段,聚合函数.. from 表名 where 条件  group by 分组字段;

-- 需求:按照性别分组,查询出他们的数学成绩的平均分,数学成绩大于70分的参与分组

 SELECT
     sex &#39;性别&#39;,
     AVG(math) &#39;数学平局分&#39;
 FROM

	student3

WHERE 
	math > 70    -- 先满足条件,然后才能分组;

GROUP BY 	
	sex   ;
登录后复制

7)筛选查询 having

-- where条件,group by,having  必须先有条件,分组,然后才筛选!
-- 注意:筛选的后面可以使用聚合函数,group by的后面是不能使用聚合函数的
-- 需求:按照性别分组,查询数学平局分,条件:数学成绩大于70的人参与分组, 筛选出人数大于2的这一组
SELECT 
     sex  &#39;性别&#39;,
     COUNT(id) &#39;总人数&#39;,
     AVG(math) &#39;数学平均分&#39;
     
FROM
    student3	
WHERE 
	math > 70
GROUP BY 
	sex 
HAVING      -- 后面可以使用聚合函数
	COUNT(id) > 2 ;
	
-- 优化为
SELECT 
     sex  &#39;性别&#39;,
     COUNT(id) 人数,
     AVG(math) &#39;数学平均分&#39;
     
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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1675
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
WebSocket与JavaScript:实现实时监控系统的关键技术 WebSocket与JavaScript:实现实时监控系统的关键技术 Dec 17, 2023 pm 05:30 PM

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何使用WebSocket和JavaScript实现在线语音识别系统 如何使用WebSocket和JavaScript实现在线语音识别系统 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

如何利用JavaScript和WebSocket实现实时在线点餐系统 如何利用JavaScript和WebSocket实现实时在线点餐系统 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统 如何使用WebSocket和JavaScript实现在线预约系统 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统 JavaScript和WebSocket:打造高效的实时天气预报系统 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

简易JavaScript教程:获取HTTP状态码的方法 简易JavaScript教程:获取HTTP状态码的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

javascript中如何使用insertBefore javascript中如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

如何在JavaScript中获取HTTP状态码的简单方法 如何在JavaScript中获取HTTP状态码的简单方法 Jan 05, 2024 pm 01:37 PM

JavaScript中的HTTP状态码获取方法简介:在进行前端开发中,我们常常需要处理与后端接口的交互,而HTTP状态码就是其中非常重要的一部分。了解和获取HTTP状态码有助于我们更好地处理接口返回的数据。本文将介绍使用JavaScript获取HTTP状态码的方法,并提供具体代码示例。一、什么是HTTP状态码HTTP状态码是指当浏览器向服务器发起请求时,服务

See all articles