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

在这里插入图片描述

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

在这里插入图片描述
需求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') ;

在这里插入图片描述

需求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

然后数据库显示如下:

在这里插入图片描述

需求1,基本查询

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

SELECT * FROM `products`;

2.查询指定的字段

SELECT title,price FROM `products`;

在这里插入图片描述
3.对字段结果起一个别名

SELECT title as phoneTitle,price as currentPrice FROM `products`;

在这里插入图片描述
需求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;

在这里插入图片描述
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;

在这里插入图片描述
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%';

在这里插入图片描述
6.IN表示取多个值中的其中一个即可

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

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

价格升序

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

在这里插入图片描述
价格相同的话,按评分高低

SELECT * FROM `products` WHERE brand IN('华为','小米','苹果') ORDER BY price ASC , score DESC;

在这里插入图片描述
需求6,分页查询

limit条数,offset偏移量

SELECT * FROM `products` LIMIT 20 OFFSET 0 ;
SELECT * FROM `products` LIMIT 20 OFFSET 20 ;

在这里插入图片描述
在这里插入图片描述
简约写法,偏移数在前

SELECT * FROM `products` LIMIT 0 , 20 ;

猜你喜欢

转载自blog.csdn.net/weixin_45389051/article/details/112827780
今日推荐