[数据库笔记] SQL补充知识

本文深入讲解SQL中的LIMIT用法,包括查询指定行数和范围,实现全外连接的方法,解析数据库三范式,演示如何获取数据库中所有表名和列名,解决MySQL存储过程创建时的常见错误,展示如何使用存储过程批量插入数据,以及导入大批量CSV文件的实战技巧。
摘要由CSDN通过智能技术生成
1.sql中limit的使用方法
查询前10行数据
select * from customer limit 10;

从第2行开始查询,查询10条记录
select * from customer limit 1, 10;
2.实现全外连接
select * from emp e left join dept d on e.deptno=d.deptno
UNION
select * from emp e right join dept d on e.deptno=d.deptno;
3.数据库三范式
  • 第一范式:表中列的值不可再分

  • 第二范式:在第一范式的基础上,消除非主属性对主属性的部分依赖

  • 第三范式:在第二范式的基础上,消除非主属性的传递依赖

4.mysql获取数据库中所有表名和列名

获取表名

select table_name from information_schema.tables where table_schema='数据库名'

获取列名

select column_name from information_schema.columns where table_schema='数据库名' and table_name='表名';
5.mysql创建存储过程报错
ERROR 1064 (42000): You have an error inyour SQL syntax; check the manual that

corresponds to your MySQL server versionfor the right syntax to use near '' at

line 4

原因在于,默认的MySQL语句分隔符为’ ; ‘,在输入’ ; '的时候,“以为”语句已经结束了,但实际上语句还没有结束。

解决方案:使用DELIMITER临时改变命令行的语句分隔符,在存储过程创建之后再修改分隔符为原来的" ;

DELIMITER $$

CREATE PROCEDURE productpricing()
BEGIN
SELECT AVG(prod_price) AS priceaverage
FROM products;
END $$

DELIMITER ;
6.使用存储过程插入多条记录
DELIMITER $$
CREATE PROCEDURE newStudent()
BEGIN
	SET autocommit = 0;
	SET @num = 1;
	WHILE @num < 101 DO
		INSERT INTO student(NO, NAME, score)
		VALUES (@num, CONCAT('name', @num), FLOOR(0 + RAND()*100));
	SET @num = @num + 1;
	END WHILE;
	COMMIT;
END $$

DELIMITER ;
7.导入大批量csv文件
LOAD DATA INFILE 'E:/user_small_log.csv'
INTO TABLE user_log
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值