Navicate是什么? 答:“Navicat是一个可多重连接的数据库管理工具,它可以连接到MySQL、Oracle、PostgreSQL、SQLite、SQL Server和/或MariaDB数据库,让数据库管理更加方便。”
使用Navicate在已存默认值的表中插入datetime类型数据为什么报错? 答:根据初始默认值,给datetime进行了复制0000 但是datetime不支持这种无效的数据。
//-- 使用存储语句创建删除表格
CREATE DEFINER=`skip-grants user`@`skip-grants host` PROCEDURE `CreateTableTest`()
BEGIN
DROP TABLE IF EXISTS `user`;
CREATE TABLE IF NOT EXISTS `tbl`(
`id` INT UNSIGNED AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`author` VARCHAR(40) NOT NULL,
`date` DATE,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
END
//-- 使用存储语句在表格中插入项
CREATE DEFINER=`skip-grants user`@`skip-grants host` PROCEDURE `testK`()
BEGIN
DECLARE dt datetime DEFAULT '2016-04-18';
DECLARE n int DEFAULT 25;
WHILE(n<27) DO
set dt = '2006-04-18';
INSERT INTO rcs(_id,so_id,sns_id,epc,rng,az,el,rcs,frq,ctm,utm) VALUES(n,FLOOR(1+(RAND()*6)),FLOOR(1+(RAND()*6)),dt,FLOOR(1+(RAND()*6)),0,FLOOR(1000+(RAND()*100)),FLOOR(10+(RAND()*6)),21,'2016-04-19','2016-04-28');
set n = n + 1;
END WHILE;#Routine body goes here...
END
//-- SQL语句基础 可以参考菜鸟教程
CREATE DEFINER=`skip-grants user`@`skip-grants host` PROCEDURE `testLXK`()
BEGIN
DECLARE dt_epc,dt_ctm,dt_utm datetime DEFAULT NOW();
-- DECLARE dt_ctm datetime DEFAULT NOW();
-- DECLARE dt_utm datetime DEFAULT NOW();
DECLARE n int DEFAULT 57;
#set dt = DATE("2017-06-15");
#set dt = '2006-04-18 09:34:21';
WHILE(n<68) DO
set dt_epc = DATE_ADD(dt_epc, INTERVAL -2 DAY);
set dt_ctm = DATE_ADD(dt_ctm, INTERVAL -3 HOUR);
set dt_utm = DATE_ADD(dt_utm, INTERVAL 15 MINUTE);
IF n<68 THEN
#UPDATE 语句用于更新表中已存在的记录,WHERE 子句规定哪条记录或者哪些记录需要更新。如果省略了 WHERE 子句,所有的记录都将被更新!
UPDATE rcs
SET so_id=888+n, sns_id=999
WHERE _id=n;
ELSE
INSERT INTO rcs(_id,so_id,sns_id,epc,rng,az,el,rcs,frq,ctm,utm) VALUES(n,FLOOR(1+(RAND()*6)),FLOOR(1+(RAND()*6)),dt_epc,FLOOR(1+(RAND()*6)),0,FLOOR(1000+(RAND()*100)),FLOOR(10+(RAND()*6)),21, dt_ctm,dt_utm);
END IF;
-- #这样可以
-- set dt = DATE_ADD(dt, INTERVAL 10 DAY);
-- #这样不可以
-- #dt = SELECT DATE_ADD(dt, INTERVAL 10 DAY);
-- #这样可以
-- SELECT DATE_ADD(dt, INTERVAL 15 MINUTE);
-- SELECT DATE_ADD(dt, INTERVAL -3 HOUR);
-- SELECT DATE_ADD(dt, INTERVAL -3 MONTH);
set n = n + 1;
END WHILE;#Routine body goes here...
#查找语句
#读取数据表的信息, SQL 语句从 "rcs" 表中选取所有列
#SELECT * FROM rcs;
#SELECT so_id FROM rcs;
#仅从 "rcs" 表的 "so_id" 列中选取唯一不同的值,也就是去掉 "so_id" 列重复值:
#SELECT DISTINCT so_id FROM rcs;
#WHERE 子句用于提取那些满足指定条件的记录。
#SELECT * FROM rcs WHERE so_id=6;
#Select * from rcs where so_id > 6 or sns_id > 2;
#查询 rcs 表中 az 列中的空值。
#Select * from rcs where az is null;
#between and (在 之间的值)
#Select * from rcs where el between 1 and 3000;
#ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序
#SELECT * FROM rcs ORDER BY so_id;
#插入语句
#INSERT INTO 语句可以有两种编写形式。
#第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
#INSERT INTO rcs VALUES(101,FLOOR(1+(RAND()*6)),FLOOR(1+(RAND()*6)),'2022-03-22',FLOOR(1+(RAND()*6)),0,FLOOR(1000+(RAND()*100)),FLOOR(10+(RAND()*6)),21,'2016-04-19',NOW());
#第二种形式需要指定列名及被插入的值:
#INSERT INTO rcs(_id,so_id,sns_id,epc,rng,az,el,rcs,frq,ctm,utm) VALUES(100,FLOOR(1+(RAND()*6)),FLOOR(1+(RAND()*6)),'2022-02-22',FLOOR(1+(RAND()*6)),0,FLOOR(1000+(RAND()*100)),FLOOR(10+(RAND()*6)),21,'2016-04-19',NOW());
#在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
#DELETE FROM rcs;
#或
#DELETE * FROM rcs;
#SELECT TOP 子句用于规定要返回的记录的数目。
#注意:并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。
#从 rcs 表中选取头两条记录:
#SELECT * FROM rcs LIMIT 2;
END
https://www.runoob.com/mysql/mysql-drop-database.html
|