SQL复习

来源:互联网 发布:西安事变 知乎 编辑:程序博客网 时间:2024/06/06 02:58

TOP/LIMIT操作符

当数据过多的时候用于分页操作。

mysql:        SELECT column_name(s)        FROM table_name        LIMIT number;    Oracle:        SELECT column_name(s)        FROM table_name        WHERE ROWNUM <=number;    SQL Server        SELECT TOP number|percent column_name(s) FROM table_name

LIKE操作符

用于where子句中模糊搜索

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

查找不包含的内容

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

SQL中通配符/正则表达式

通配符用于sql语句中代替其他字符 在sql语句中常和sql 的LIKE操作符一起使用%  代替0个或者多个_代替一个任意字符正则表达式 用regexp 或 not regexp来表示 eg: select * from websites where name regexp ‘^[GFS]’; 表示查找 name开始的所有name

IN操作符

IN操作符允许将where的范围限定在几个特定的值中Select * from websites where name in (‘google’,’菜鸟教程’) 那么搜索的name就在这两个之中

BETWEEN操作符

BETWEEN操作符,选取在两个值中间的数据 这些值可以是数值 文本 或者日期Select * from websites where alexa between 1 and 20;Between和in操作符一起使用 
select * from websites where alexa between 1 and 20 and country not in ('usa');

SQL别名

别名方便查找,更加直观。
常用的SQL:

SELECT name AS ‘姓名’ FROM websites;SELECT name ‘姓名’  from websites;SELECT name 姓名 from websites;

但是在定义别名没有单引号的时候别名不能有空格符号

SQL连接

SQL join用于把来自两个或者多个表的行结合起来,然后展示相关的信息。
INNER JOIN 内联当匹配条件成立时,将返回匹配后的行
这里写图片描述

LEFT JOIN 左联 左表中没有匹配的的行业会被全部显示出来
这里写图片描述

RIGHT JOIN 右联 右表中没有匹配的行也会被全部显示出来
这里写图片描述

MYSQL不支持 FULL JOIN 所以没有关于FULL JOIN 的相关测试记录 可以将FULL JOIN理解为左联加上右联

SQL UNION

UNION用于合并两个或多个select语句的结果集 两个select语句的列数必须相同
默认的union操作符不允许重复,希望重复的时候用 union all
这里写图片描述
App上面的结果是从websites中查询出来的,下面的app等 是从apps表中查询出来 这样就将两个结果集 结合到一起了

SQL SELECT INTO/SQL INSERT INTO SELECT语句

这两个语句都是将一个表的数据复制到另一个表中

MYSQL不支持SELECT * INTO newtable from table1;
只支持 INSERT into newtable select * from table1 其中newtable必须是创建好了。

SQL约束

创建某一个字段的时候给它添加约束 这样如果用户的行为不符合约束将不会操作成功
常用的约束如下
NOT NULL 指定某列的值不能为NULL
UNIQUE 保证某列的每行必须有唯一的值 不能够重复
PRIMARY KEY 主键 NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。
DEFAULT - 规定没有给列赋值时的默认值。

QL AUTO INCREMENT 字段

自增长 重1开始
Eg:ID INT NOT NULL AUTO_INCREMENT

SQL视图

在sql语句中,视图是基于SQL语句的结果集的可视化表,可以通过select * from viewname查找到视图的结果这里写图片描述
通过create or replace view viewteset as select name from websites;来更新视图
这里写图片描述
撤销视图 DROP VIEW viewname;

SQL Date函数

NOW()函数 返回当前的日期和时间
CURDATE()返回当前日期
CURTIME()返回当前的时间
上面的函数可以通过select now()直接查询出来并显示出来
DATE() 函数提取日期或日期/时间表达式的日期部分。语法DATE(date)
EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。语法:EXTRACT(unit FROM date) date是合法的日期表达式,unit参数可以是下列的值
这里写图片描述

显示效果如下:
这里写图片描述
DATE_ADD(date,INTERVAL exper type)想日期添加指定的时间间隔 day参数是合法的日期 exper是希望添加的时间间隔 type参数就是上面的值
这里写图片描述

DATE_SUB()用法和上面的DATE_ADD()是一样的。
DATEDIFF(date1,date2)返回两个日期之间的天数 天数是date1-date2
DATE_FORMAT(date,format)函数于不同格式显示日期/时间数据
就是按照下面的使用方式来但是有很多格式上的问题,就不写出来了

DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')DATE_FORMAT(NOW(),'%m-%d-%Y')DATE_FORMAT(NOW(),'%d %b %y')DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

SQL函数

AVG()函数 计算数列的平均值 select AVG(column_name) from table_name;
COUNT()函数 计算列的条码总数select COUNT(column_name) from table_name;
Mysql获取列的第一值 SELECT name as fristSite from websites LIMIT 1;
获取列的最后一个值 select name as lastSite from websites ORDER BY id DESC LIMIT 1;
MAX()获取例的最大值 MIN()获取列的最小值
SUM()获取例的总值
UCASE()将小写转换成大学
LCASE()将大写转换成小写
LEN()返回文本字段的长度
ROUND()获取四舍五入的一个整数

MYSQL数据类型

这里写图片描述
这里写图片描述
M是精度,D是标度。精度表示数字的整体长度小数点不占位,标度表示小数点后几位数,浮点数(FLOAT,DOULT)一般不用MD来表示,只有DECIMAL才用这个标识。浮点数在插入的数据精度超过规定的数据精度的时候就会四舍五入丢失精度,所以在精度要求高的时候就用定点数
这里写图片描述

0 0
原创粉丝点击