首先演示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 ;