天天看点

SQL数据库DML和DQL基本指令(图文结合)

首先演示DML,对数据库进行增删改

1.创建一个表

– AUTO_INCREMENT:自增

– PRIMARY KEY:主键

– UNIQUE:不能重复

CREATE TABLE IF NOT EXISTS `users`(
  id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) NOT NULL,
	phoneNum VARCHAR(20) UNIQUE DEFAULT '',
	createTime TIMESTAMP,
	updateTime TIMESTAMP
);
           
SQL数据库DML和DQL基本指令(图文结合)

2.插入数据

INSERT INTO `user` VALUES (110,'lsh','020-10101','2020-10-10','2020-1-1');
或者
INSERT INTO `user` (name,telPhone,createTime,updateTime)
             VALUES ('james','020-10101010','2020-1-1','2021-1-1') ;
           
SQL数据库DML和DQL基本指令(图文结合)

需求1,createTime和upadteTime可以自动设置值

createTime是创建时间,upadteTime是更新时间

ALTER TABLE `user` MODIFY `updateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP  ON UPDATE CURRENT_TIMESTAMP;
           

再添加一个

INSERT INTO `user` (name,telPhone)
             VALUES ('gogoing','020-1010101') ;
           
SQL数据库DML和DQL基本指令(图文结合)

需求2,删除数据

1.删除所有数据

DELETE FROM `user`;
           

2.删除符合条件的数据

DELETE FROM `user` WHERE id = 110;
           

需求3,更新数据

1.更新所有的数据

UPDATE `user` SET `name` = '詹姆斯',telPhone = '110-110';
           

2.更新符合条件的数据

UPDATE `user` SET `name` = '詹姆斯',telPhone = '110-110' WHERE id = 117;
           

再演示DQL,对数据库进行查询

1.创建一个表

CREATE TABLE IF NOT EXISTS `products`(
  id INT PRIMARY KEY AUTO_INCREMENT,
	brand VARCHAR(20),
  title VARCHAR(100) NOT NULL,
	price DOUBLE NOT NULL,
	score DECIMAL(2,1),
	voteCnt INT,
	url VARCHAR(100),
	pid INT
);
           

2.导入我们的数据,打开我们的vscode编译器

先安装插件

cnpm i mysql2
           

编写导入数据库的代码

const mysql = require('mysql2');
 
const connection = mysql.createConnection({
  host: '127.0.0.1',
  port: 3306,
  user: 'root',
  password: '',//你设置的密码
  database: '' //你的database名字
});

const statement = `INSERT INTO products SET ?;`
const phoneJson = require('./phone.json');
//phone.json是我们写的json假数据

for (let phone of phoneJson) {
  connection.query(statement, phone);
}
           

然后运行

node insertSQL.js
           

然后数据库显示如下:

SQL数据库DML和DQL基本指令(图文结合)

需求1,基本查询

1.查询表中所有的字段和所有的数据

SELECT * FROM `products`;
           

2.查询指定的字段

SELECT title,price FROM `products`;
           
SQL数据库DML和DQL基本指令(图文结合)

3.对字段结果起一个别名

SELECT title as phoneTitle,price as currentPrice FROM `products`;
           
SQL数据库DML和DQL基本指令(图文结合)

需求2,where条件

1.查询价格小于1000手机

SELECT * FROM `products` WHERE price < 1000;
           

2.价格不等于999的手机

SELECT * FROM `products` WHERE price != 999;
或者
SELECT * FROM `products` WHERE price <> 999;
           

3.查询品牌是华为的手机

SELECT * FROM `products` WHERE brand = '华为';
           

需求3,逻辑运算语句

1.价格1000-2000之间手机

SELECT * FROM `products` WHERE price > 1000 AND price < 2000;
或者
SELECT * FROM `products` WHERE price > 1000 && price < 2000;

另外,如果包含等于这种写法

SELECT * FROM `products` WHERE price BETWEEN 1000 AND 2000;
           
SQL数据库DML和DQL基本指令(图文结合)

2.价格在5000以上或者是华为手机

SELECT * FROM `products` WHERE price > 5000 OR brand = '华为';
或者
SELECT * FROM `products` WHERE price > 5000 || brand = '华为';
           

3.将某些值设置为null

UPDATE `products` SET url = NULL WHERE id > 85 AND id < 90;
           
SQL数据库DML和DQL基本指令(图文结合)

4.查询某一个值是否为null

SELECT * FROM `products` WHERE url IS NULL;
SELECT * FROM `products` WHERE url IS NOT NULL;
           

需求4,模糊查询

字段里包含M都会被查询出来

SELECT * FROM `products` WHERE title LIKE '%M%';
           

第二个字符包含P

SELECT * FROM `products` WHERE title LIKE '_P%';
           
SQL数据库DML和DQL基本指令(图文结合)

6.IN表示取多个值中的其中一个即可

SELECT * FROM `products` WHERE brand IN('华为','小米','苹果');
           

需求5,对查询结果进行排序

价格升序

SELECT * FROM `products` WHERE brand IN('华为','小米','苹果') ORDER BY price ASC;
           
SQL数据库DML和DQL基本指令(图文结合)

价格相同的话,按评分高低

SELECT * FROM `products` WHERE brand IN('华为','小米','苹果') ORDER BY price ASC , score DESC;
           
SQL数据库DML和DQL基本指令(图文结合)

需求6,分页查询

limit条数,offset偏移量

SELECT * FROM `products` LIMIT 20 OFFSET 0 ;
SELECT * FROM `products` LIMIT 20 OFFSET 20 ;
           
SQL数据库DML和DQL基本指令(图文结合)
SQL数据库DML和DQL基本指令(图文结合)

简约写法,偏移数在前

SELECT * FROM `products` LIMIT 0 , 20 ;