sql 笔记

1.SQL SELECT TOP 子句

按要返回一定条数的查询结果

SELECT TOP number PERCENT * FROM tabel;

2. 通配符

常见的通配符有4中' %' , '_'

(1) '%' 代替一串字符

查询 table 表的 name 字段,且 name 是以李开头的数据

select name from table where name like'李%'

查询 table 表的 name 字段,且 name 是以李结尾的数据

select name from table where name like '%李'

(2) '_' 代替一个字符

查询 table 表的 name 字段,且 name 是 李_

select name from table where name like '李_'

查询 table 表的 name 字段,且 name 是  _ 洋_

select name from table where name like '_ 洋_'

3.正则表达式

MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

'[charlist]','^[charlist]','[^charlist]'

(1) '[charlist]' 代替字符列中的任何一个字符

查询 table 表的 name 字段,且 name 字符串中包含 'L' 的

select name from table where name regexp '['L']'

(2) '^[charlist]'  以charlist开头的

查询 table 表的 name 字段,且 name 字符串中以 'L' 或 'G' 开头 的

select name from table where name regexp '[^LG]'

查询 table 表的 name 字段,且 name 字符串中A-F开头 的

select name from table where name regexp '[^A-F]'

(3) '[^charlist]' 不包含charlist的

查询 table 表的 name 字段,且 name 字符串中不以 'L' 或 'G' 开头 的

select name from table where name regexp  '^[^LG]'

查询 table 表的 name 字段,且 name 字符不以A-F开头 的

select name from table where name regexp '^[^A-F]'

 3. 查询条件是一个范围的查询

IN 操作符、BETWEEN 操作符 都是表示范围的操作符,区别是IN是确定的明确的被列举出来的,BETWEEN只需要开始和结束范围的表示就可以的。BETWEEN 语句可以包含 IN语句

(1) IN 操作符

IN 操作符允许您在 WHERE 子句中规定多个值。

语法:

SELECT name FROM table WHERE name IN (value1,value2,...);

1. 作为where条件

查询 table 表的 name 字段,且 name 字段是'小红' ,'小明'的范围内的

SELECT * FROM table WHERE name IN ('小红','小明');

(2) BETWEEN 操作符

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。

语法:

SELECT name FROM table WHERE BETWEEN value1 AND value2;

查询 table 表的 age 字段,且 age 字段是不包括 1 - 17 范围内的

SELECT age FROM table WHERE age NOT BETWEEN 1 AND 17;

(3) BETWEEN 子句包含 IN

查询 table 表的 age 字段,且 age 字段是包括 1 - 17 范围内且name是小红' ,'小明'的

SELECT age FROM table WHERE (age BETWEEN 1 AND 17)
AND name NOT IN ('小红','小明');

4. AS 取别名

取别名的对象一般是 字段、表名、子查询结果临时表、查询多个字段作拼接成一个字段

(1)  字段取别名

SELECT age AS a FROM table 

(2) 表明起别名

SELECT age  FROM table AS tb

 (3) 子查询结果表起别名

SELECT tb01.age  FROM (

SELECT name,age FROM table01 WHERE age NOT BETWEEN 1 AND 17;

) tb01

 (3) 查询多个字段作拼接成一个字段起别名

SELECT name, CONCAT(age, ', ', birthday, ', ', sex) AS information
FROM table;

5. 联表查询

 join 用于把来自两个或多个表的行结合起来,LEFT JOIN、RIGHT JOIN、INNER JOIN(JOIN)、OUTER JOIN 相关的 7 种用法。

连接条件ON,连接条件的字段必须是总查询字段存在的。

语法:

SELECT name,age,sex

FROM TABLE01

JOIN (

SELECT age

FROM  TABLE02

WHERE age NOT BETWEEN 1 AND 17;

)ta02

ON sex = 'man';

eg:

TABLE01、TABLE02

(1) LEFT JOIN

TABLE01每一条去 匹配TABLE02的的所有字段,有的话合并为一列取出,没有匹配的就TABLE01字段数据结合TABLE02字段为空的合并为一列输出

(2) RIGHT JOIN

TABLE02每一条去 匹配TABLE01的的所有字段,有的话合并为一列取出,没有匹配的就TABLE02字段数据结合TABLE01字段为空的合并为一列输出

(3) INNER JOIN

只返回符合条v

6.信息复制

表信息的复制语句分两种SELECT INTO和 INTO SELECT,这两个语句都可以复制表的信息,区别是,SELECT INTO是将复制的信息同时创建一个新表,复制的信息作为新表的数据插入。INTO SELECT是将复制出来的数据插入到一个已有的表中

(1) SELECT INTO

你可能感兴趣的:(sql,数据库,mysql)