数据库

本文详细介绍了SQL的基本操作,包括数据的增删改查、条件筛选、排序、聚合查询等。通过实例讲解了各种SQL语句的用法,如SELECT、INSERT、UPDATE、DELETE等,并涵盖了WHERE、ORDER BY、LIKE等子句的使用。

从学习基本的SQL语句开始吧
https://www.w3school.com.cn/sql/sql_top.asp
https://www.runoob.com/mysql/mysql-like-clause.html
https://www.1keydata.com/cn/sql/

假设一个数据库

mysql> use RUNOOB;
Database changed

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
+----+--------------+---------------------------+-------+---------+
5 rows in set (0.01 sec)

1.先记录一下一些重要的SQL语句

SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

聚合查询:
COUNT AVG MIN MAX FLOOR(N)向下取整 CEILING(N)向上取整
如果WHERE没有匹配,COUNT返回0,其他的返回NULL

2.SELECT语句-选取数据

SELECT column_name,column_name
FROM table_name;

SELECT name,country FROM Websites;
select 字段名1 别名2,字段名2 别名2 from 表名

3.SELECT DISTINCT-返回无重复的取值

SELECT DISTINCT country FROM Websites;

4.WHERE-过滤记录

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

SELECT * FROM Websites WHERE country='CN';

5.AND OR-基于一个以上条件过滤记录

SELECT * FROM Websites
WHERE country='CN'
AND alexa > 50;

SELECT * FROM Websites
WHERE country='USA'
OR country='CN';

6.ORDER BY-排序
默认为升序,在最后加DESC为降序

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

SELECT * FROM Websites
ORDER BY alexa;//升序

SELECT * FROM Websites
ORDER BY alexa DESC;//降序

order by a desc,b 按a逆序,如果a相同,按b顺序

7.INSERT INTO-插入新数据

INSERT INTO table_name
VALUES (value1,value2,value3,...);//不指定列名,添加全部

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);//指定列名

INSERT INTO Websites (name, url, alexa, country)
VALUES ('百度','https://www.baidu.com/','4','CN');

8.UPDATE-更新表中记录
注意一定要加WHERE,否则全部更新

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

UPDATE Websites 
SET alexa='5000', country='USA' 
WHERE name='菜鸟教程';

9.DELETE-删除记录
不加WHERE 原地爆炸

DELETE FROM table_name
WHERE some_column=some_value;

DELETE FROM Websites
WHERE name='百度' AND country='CN';

10.SELECT TOP-返回头几条数据

SELECT TOP number|percent column_name(s)
FROM table_name;

SELECT * FROM Websites LIMIT 2;//返回前两条数据
SELECT TOP 50 PERCENT * FROM Websites;//返回前50%数据

11.LIKE-返回指定类型的数据

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

SELECT * FROM Websites
WHERE name LIKE 'G%';//返回G开头的数据,%为缺省字母

SELECT * FROM Websites
WHERE name LIKE '%k';//返回k结尾的数据

SELECT * FROM Websites
WHERE name NOT LIKE '%oo%';//选取不包括“oo”的数据

12.通配符
%:代替0个或多个字符
_:代替一个字符
^ [ ]:字符列中任何单一字符,如^ [ ABC ]表示含有A或B或C的数据
[ ^ ]:不含任意一个。^ [ ^ A-H ]不含A-H

这里要注意,like只支持_和%,regexp不支持_和%但支持正则表达式

like和regexp的区别在于,like只关注的是整个列,在列中寻找如like ‘a’,只会寻找列值为a,而regexp不同,关注的是列值,在每个列值里寻找,如regexp ‘a’只要列值里有a,都会选出来。

13.IN-WHERE语句中规定多个值

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

SELECT * FROM Websites
WHERE name IN ('Google','菜鸟教程');

13.BETWEEN-介于两个值之间的数据范围内的值

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

SELECT * FROM Websites
WHERE alexa BETWEEN 1 AND 20;

SELECT * FROM Websites
WHERE alexa NOT BETWEEN 1 AND 20;

14.DROP-删除

DROP INDEX index_name ON table_name//删除索引
DROP TABLE table_name//删除表
DROP DATABASE database_name//删除数据库
TRUNCATE TABLE table_name//删除表中内容,不删除表

15.JOIN-链接
四种不同的连接方式:
INNER JOIN:新表只显示两个表有相同主键的行
LEFT JOIN:坐表全都会在新表显示,右表只显示有相同主键的行
RIGHT JOIN: NOT 上
FULL JOIN:两个表都显示

SELECT Websites.name, access_log.count, access_log.date//选取新表要显示的列信息
FROM Websites//来自这个左表
INNER JOIN access_log//右表
ON Websites.id=access_log.site_id//两个表链接的主键
ORDER BY access_log.count;

这个主要使用是,inner join 是取交集,即两个表都满足
left join是主表都显示,副表有的话就显示,通俗点说就是列出所有主表,以及副表(如果有的话)

16.ALTER-添加删除修改列

ALTER TABLE Persons
ADD DateOfBirth date//data是日期的数据类型

ALTER TABLE Persons
ALTER COLUMN DateOfBirth year//改变数据类型

ALTER TABLE Persons
DROP COLUMN DateOfBirth//删除一列

练习题http://www.cnblogs.com/diffrent/p/8854995.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值