SQL基础语法语句

SQL语法:

use **; 	#使用数据库
set names utf8;		#设置使用的字符集
SELECT * FROM Websites; 	#读取数据表的信息

SQL语句

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

示例表:
±—±-------------±--------------------------±------±--------+
| 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 |
±—±-------------±--------------------------±------±--------+
SELECT - 从数据库中提取数据,结果被存储在一个结果表中,称为结果集

SELECT column_name,column_name FROM table_name; #从指定的表里选出注定列内容

SELECT * FROM table_name; #表中选取所有列

SELECT DISTINCT - 用于返回唯一不同的值(去重)
SELECT DISTINCT语法l:

SELECT DISTINCT column_name,column_name
FROM table_name;  #根据列名去重

WHERE - 用于过滤记录,提取满足指标的标准记录
SQL WHERE语法:

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

文本字段 vs. 数值字段
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
在上个实例中 ‘CN’ 文本字段使用了单引号。
如果是数值字段,请不要使用引号。

SELECT * FROM Websites WHERE id=1;
SELECT * FROM Websites WHERE country='CN';

WHERE 子句中的运算符

运算符 描述
= 等于
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值

示例
Where 子句
搜索 empno 等于 7900 的数据:

Select * from emp where empno=7900;

Where +条件(筛选行)
条件:列,比较运算符,值

比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)

Select * from emp where ename='SMITH';

例子中的 SMITH 用单引号引起来,表示是字符串,字符串要区分大小写。

逻辑运算
And:与 同时满足两个条件的值。

Select * from emp where sal > 2000 and sal < 3000;

查询 EMP 表中 SAL 列中大于 2000 小于 3000 的值。

Or:或 满足其中一个条件的值

Select * from emp where sal > 2000 or comm > 500;

查询 emp 表中 SAL 大于 2000 或 COMM 大于500的值。

Not:非 满足不包含该条件的值。

select * from emp where not sal > 1500;

查询EMP表中 sal 小于等于 1500 的值。

逻辑运算的优先级:

() not and or
特殊条件
1.空值判断: is null

Select * from emp where comm is null;

查询 emp 表中 comm 列中的空值。

2.between and (在 之间的值)

Select * from emp where sal between 1500 and 3000;

查询 emp 表中 SAL 列中大于 1500 的小于 3000 的值。

注意:大于等于 1500 且小于等于 3000, 1500 为下限,3000 为上限,下限在前,上限在后,查询的范围包涵有上下限的值。

3.In

Select * from emp where sal in (5000,3000,1500);

查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。

4.like

Like模糊查询

Select * from emp where ename like 'M%';

查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。

% 表示多个字值,_ 下划线表示一个字符;
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
%M% : 表示查询包含M的所有内容。
%M_ : 表示查询以M在倒数第二位的所有内容。

不带比较运算符的 WHERE 子句:

WHERE 子句并不一定带比较运算符,当不带运算符时,会执行一个隐式转换。当 0 时转化为 false,1 转化为 true。例如:

SELECT studentNO FROM student WHERE 0

则会返回一个空集,因为每一行记录 WHERE 都返回 false。

SELECT  studentNO  FROM student WHERE 1

返回 student 表所有行中 studentNO 列的值。因为每一行记录 WHERE 都返回 true。
AND & OR 运算符
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
AND运算符实例:

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

OR运算符实例:

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

结合AND和OR(使用圆括号来组成复杂的表达式)。

SELECT * FROM Websites
WHERE alexa > 15
AND (country='CN' OR country='USA');

ORDER BY - 关键字用于对结果集进行排序。
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
SQL ORDER BY 语法:

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;#改为降序

INSERT INTO - 用于向表中插入新记录
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');

insert into select 和select into from的区别

insert into scorebak select * from socre where neza='neza'   --插入一行,要求表scorebak 必须存在
select *  into scorebak from score  where neza='neza'  --也是插入一行,要求表scorebak 不存在

UPDATE - 用于更新表中已存在的记录
SQL UPDATE语法:

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

实例:

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

执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。
在 MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。

set sql_safe_updates=1; 表示开启该参数

SQL DELETE - 用于删除表中的记录(行)
SQL DELETE语法:

DELETE FROM table_name
WHERE some_column=some_value; #忽略where子句将全部删除

实例:
删除网站名为 “百度” 且国家为 CN 的网站 。

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

删除所有数据
您可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:

DELETE FROM table_name;
或
DELETE * FROM table_name;

SQL关于删除的三个语句:DROP,TRUNCATE,DELETE
DROP:

DROP test;	#删除表test,并释放空间,将test删除的一干二净。

TRUNCATE:

TRUNCATE test;	#删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。

DELETE:
1、删除指定数据

删除表test中年龄等于30的且国家为US的数据
DELETE FROM test WHERE age=30 AND country='US';

2、删除整个表
仅删除表test内的所有内容,保留表的定义,不释放空间。

DELETE FROM test 或者 DELETE FROM test;
DELETE * FROM test 或者 DELETE * FROM test;

猜你喜欢

转载自blog.csdn.net/theone_1/article/details/84328304
今日推荐