网站保持排名,杭州红房子妇科医院,学校定制网站建设公司,黄骅网站建设价格1.SQL的分类
DDL:数据定义语言. CREATE ALTER DROP RENAME TRUNCATE DML: 数据操作语言. INSERT DELETE UPDATE SELECT 重中之重 DCL: 数据控制语言. COMMIT ROLLBACK SAVEPOINT GRANT REVOKE 2.SQL语言的规则与规范
1.基本规则 SQL可以在一行或多行,为了提高可…1.SQL的分类
DDL:数据定义语言. CREATE ALTER DROP RENAME TRUNCATE DML: 数据操作语言. INSERT DELETE UPDATE SELECT 重中之重 DCL: 数据控制语言. COMMIT ROLLBACK SAVEPOINT GRANT REVOKE 2.SQL语言的规则与规范
1.基本规则 SQL可以在一行或多行,为了提高可读性,通常写在多行
SELECT * FROM emp; 每条命令以;或\g或\G结束 关键字不能被缩写也不能分行 关于标点符号 必须保证所有的(),单引号,双引号是成对结束的 必须使用英文状态下的半角输入方式 字符串型和日期时间类型的数据可以使用单引号( )表示 列的别名,尽量使用双引用( ),而且不建议省略as
2.SQL大小写规范(建议遵守) MySQL在Windows环境下大小写是不敏感的 MySQL在Linux环境下大小写是敏感的 数据库名,表名,表的别名,变量名是严格区分大小写的 关键字,函数名,列名(或字段名),列的别名(字段的别名)是忽略大小写的 推荐采用统一的书写规范: 数据库名,表名,表的别名,字段名,字段别名等都小写 SQL关键字,函数名,绑定变量等都大写
3.注释
可以使用如下格式的注释结构 单行注释: #注释文字(MySQL特有的注释方式) 单行注释: -- 注释文字(--后面必须包含一个空格.) 4.导入现有的数据表,表的数据
source 文件的全路径名
4.最基本SCLECT语句
SELECT 11,3*2;
SELECT 11,32
FROM DUAL; #dual: 伪表
SELECT * FROM xxx
# *就是表中所有的字段
5.列的别名
在列名后加空格再写名字就是别名
#as : (alias)
#类的别名可以使用一对双引号连起来
6.去除重复行
查询员工表中一共有哪些部门id呢?
在select 后面加上DISTINCT(去重)
7.空值参与运算 空值: null null不等同于0, , null 空值参与运算,结果一定也为空
8.着重号
若命名与关键词重名的表,调用时可使用着重号区分
9.查询常数
10.显示表结构
DESCRIBE employees;显示了表中字段的详细信息
DESC 也可以
11.过滤数据
#查询90号员工信息
SELECT *
FROM employees
#过滤条件
WHERE id 90;
SELECT *
FROM employees
WHERE name 邱宛彦;
SELECT *
FROM employees
WHERE salary 5000;
第四章: 运算符
1.算数运算符 加法 -减法 *乘法 /除法 %取余模
SELECT 10 5; -- 结果是 15
SELECT 10 * 3; -- 结果是 30
SELECT 10 % 3; -- 结果是 1
2. 比较运算符 (Comparison Operators)
这些运算符用于比较两个值的关系。 等于 : 安全等于 作用于相似,唯一的区别就是安全等于可以进行NULL运算 ! 或 不等于 小于 大于 小于等于 大于等于 IS NULL检查是否为 NULL IS NOT NULL检查是否不为 NULL
SELECT 12,1!2,11,1a,0a
FROM DUAL;
字符串存在隐式转换.如果转换数值不成功,则看作0;
字符串和字符串之间比较,直接比较ASCII值,不会看作0;
只要有null参与比较,结果为null; 3. 逻辑运算符 (Logical Operators)
这些运算符用于结合多个条件。
and优先级高于or AND并且两个条件都为真时结果为真 OR或者任意一个条件为真时结果为真 NOT非取反操作 XOR: 异或
4. 范围运算符 (Range Operators) BETWEEN指定一个范围包括边界用来筛选字段在某个范围内的记录 IN用于检查某个字段是否在给定的一组值中
SELECT *
FROM employees
where salary between 100 and 200;
5. 字符串匹配运算符 (String Matching Operators)
这些运算符用于对字符串执行模式匹配操作。 LIKE用于在字符串中进行简单的模式匹配 %(通配符)通常与LIKE搭配 SELECT *
FROM table
WHERE name like A% #以A开头的姓名
WHERE name like %com #以com结尾的结果
WHERE name like A%com #以A开头以com结尾的结果 一个下划线_代表一个字符 WHERE name like _A% #以A为第二个字符的姓名 转义字符 \ NOT LIKE与 LIKE 相反 REGEXP用于进行正则表达式匹配 难 点.匹配任意单个字符除了换行符。 SELECT *
FROM table
WHERE column REGEXP a.b; -- 匹配 aab, acb 等 脱字符^匹配字符串的开头。
SELECT *
FROM table
WHERE column REGEXP ^abc; -- 匹配以 abc 开头的字符串 美元符号$匹配字符串的结尾。 SELECT *
FROM table
WHERE column REGEXP abc$; -- 匹配以 abc 结尾的字符串 方括号[]匹配方括号内的任意单个字符。 SELECT *
FROM table
WHERE column REGEXP [aeiou]; -- 匹配包含元音字母的字符串 方括号内的脱字符[^]匹配不在方括号中的字符。
SELECT *
FROM table
WHERE column REGEXP ^[^aeiou]; -- 匹配以辅音字母开头的字符串 星号*匹配前面的字符或组零次或多次。
SELECT *
FROM table
WHERE column REGEXP ab*c; -- 匹配 ac, abc, abbc, abbbc 等 加号匹配前面的字符或组一次或多次。
SELECT *
FROM table
WHERE column REGEXP abc; -- 匹配 abc, abbc, abbbc 等但不匹配 ac 问号?匹配前面的字符或组零次或一次。
SELECT * FROM table WHERE column REGEXP ab?c; -- 匹配 ac 或 abc 竖线|逻辑“或”匹配左边或右边的模式。
SELECT *
FROM table
WHERE column REGEXP abc|def; -- 匹配 abc 或 def 圆括号()分组模式。
SELECT *
FROM table
WHERE column REGEXP (ab|cd)e; -- 匹配 abe 或 cde 大括号{n,m}匹配前面的字符或组出现至少 n 次最多 m 次。
SELECT *
FROM table
WHERE column REGEXP ab{2,4}c; -- 匹配 abbc, abbbc, abbbbc NOT REGEXP与 REGEXP 相反
6. NULL 检查运算符 (NULL Check Operators) IS NULL检查某个值是否为 NULL IS NOT NULL检查某个值是否不为 NULL
7. 集合运算符 (Set Operators)
这些运算符用于操作两个或多个查询结果集。 UNION合并两个查询的结果集去除重复项(求并集去重) UNION ALL合并两个查询的结果集包括重复项 INTERSECT返回两个查询结果的交集 EXCEPT返回第一个查询结果中存在而第二个查询结果中没有的记录(去交集)
第五章: 排序和分页
1.排序数据
1.1排序规则
如果没有使用排序操作,默认情况下查询的返回值写入数据的顺序显示的;
使用ORDER BY对查询到的数据进行排序操作 升序: ASC(默认升序) 降序: DESC
SELECT lastname
FROM employees
ORDER BY salary DESC;
1.可以使用列的别名,进行排序
2.列的别名只可以ORDER BY中使用,不能在WHERE中使用
3.ORDER BY语句和WHERE语句同时存在时.WHERE和FROM是紧密挨着的,在ORDER BY之前
SELECT lastname
FROM employees
WHERE salary1000
ORDER BY salary;
4.二级排序
当排序之后别的数据相同时.
SELECT lastname
FROM employees
WHERE salary1000
ORDER BY salary ASC,id ASC;
2.分页
#每页显示20条记录
select id,lastname
from employees
limit 0,20;#0是偏移量
公式: 显示第n页,每页显示pagesize条
limit (n-1)*pagesize WHERE ORDER BY LIMIT 声明顺序如下
where
order by
limit