笔记
1.group_concat(X,Y)
其中X是要连接的字段,Y是连接时用的符号,可省略,默认为逗号。此函数必须与 GROUP BY 配合使用。
2.substr(X,Y,Z) 或 substr(X,Y)
其中X是要截取的字符串。Y是字符串的起始位置(第一个字符起始位置为1),Z是要截取字符串的长度。
3.UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
更新多列用逗号连接不能用AND 连接
4.ALTER table titles_test rename to titles_2017
改表名
ALTER table titles_test rename column id to id_2017
改列名
ALTER table titles_test add column id1 int
增加列
ALTER table titles_test drop column id
删除列
SQL修改列名,增加列,删除列语句的写法
5.REPLACE INTO titles_test VALUES()
或UPDATE titles_test SET emp_no = REPLACE(emp_no,10001,10005) WHERE id = 5
替换指定位置的值
6.DELETE FROM 表名 WHERE ..
删除指定值
7.ALTER TABLE 表名 ADD 新列名 类型 not null default '0000-00-00 00:00:00'
给表增加新列
8.
CREATE VIEW actor_name_view (fist_name_v, last_name_v) AS
SELECT first_name, last_name FROM actor
创建视图,新列名为fist_name_v和last_name_v
9.
insert or ignore into actor
values(3,'ED','CHASE','2006-02-15 12:34:33')
插入数据,如果存在则忽略
10.datetime('now','localtime')
获得系统当前时间
11.SQL语句执行顺序
(1)from
(3)join
(2)on
(4)where
(5)group by (开始使用select中的别名,后面的语句中都可以使用)
(6)avg,sum....
(7)having
(8)select
(9)distinct
(10)order by
(11)limit
12.date_format(date,format)
%k表示显示的是24小时制中的小时
转换日期格式,一般用于按年月分组聚合
cast()
:转换格式
date_sub()
函数(subdate函数用法一致)
例:
SELECT login_time,DATE_FORMAT(login_time,'%Y-%m-%d'),CAST(login_time as date)
FROM login_log
13.COUNT() 函数遇到NULL返回的是NULL而不是略过,因此可以用IFNULL来返回0值
14.分组聚合返回的列只能为分组的那一列和聚合函数的那一列,不能再添加其他的列
15.同一条SQL语句中,若要用新建列排序,最好用order by 列数而不是用别名
16.使用NOT IN+子查询的时候,SELECT 后面必须返回单个结果,除非使用括号WHERE (a,b) IN SELECT a,b FROM table
参考
查找排除最大、最小salary之后的当前(to_date = ‘9999-01-01’ )员工的平均工资avg_salary。
17.distinct必须在字段的最前面,且后面有几个字段就必须所有字段都相同才会删除重复行。
sql distinct某个字段
建表
CREATE TABLE score(
学号 VARCHAR(255) NOT NULL ,
课程号 VARCHAR(255) NOT NULL ,
成绩 FLOAT(3) NOT NULL,
PRIMARY KEY(学号,课程号));
(1)必须在类型后面加长度,否则会报错。
(2)需要创建联合主键时,必须在最后一行写,而不能在每一行后面加PRIMARY KEY
2.
-- 这里的教师姓名是空值(null)
insert into teacher(教师号,教师姓名)
values('0003' , null);
-- 这里的教师姓名是空字符串('')
insert into teacher(教师号,教师姓名)
values('0004' , '');
空值和空字符串不一样