数据库基础操作
SQL可实现的操作:
操作 | 语言 |
---|---|
建表 | CREATE TABLE table (c1 int,c2 varchar(50),c3 varchar(50)); |
删表 | DROP TABLE table; |
修改列 | ALTER TABLE table ADD/DROP/ALERT column_name (datatype); |
选择 | SELECT c1,c2 FROM table WHERE … ; |
插入 | INSERT INTO a VALUES(9,30,30); |
更新 | UPDATE table SET c1=value1,c2=value2,…WHERE… ; |
删除 | DELETE FROM table WHERE …; |
连接 | select * from [user] full JOIN phone ON [user].id=phone.id |
WHERE | |
HAVING | 筛选分组后的各组数据SELECT FROM WHERE GROUP BY HAVING ; |
操作结果处理 | WHERE |
---|---|
AND | SELECT * FROM table WHERE c1=‘a’ AND c1=‘b’; |
OR | SELECT * FROM table WHERE c1=‘a’ OR c1=‘b’; |
排序 ORDER BY | 关键字用于对结果集按照一个列或者多个列进行排序,降序 ORDER BY 列名 DESC,列名 DESC |
指定模式LIKE | 操作符用于在 WHERE 子句中搜索列中的指定模式。 |
返回行数COUNT(c1) | SELECT COUNT(c1) FROM table WHERE ; |
别名 AS,AS可省略 | 名字AS别名,如SELECT 列名 FROM 表名 AS 别名; |
SQL join 用于把来自两个或多个表的行结合起来:INNER JOIN与JOIN(INNER JOIN与JOIN是相同
), LEFT JOIN(左加入:左满右空)、RIGHT JOIN、FULL JOIN
处理视图VIEW,索引
触发器
Create TRIGGER [dbo].[Trigger_Insert]
ON a
AFTER INSERT
AS
BEGIN
Declare @age int; --@age为局部变量
Select @age=Age From inserted
IF(@age<150)
Begin
Insert into a(id, name, age)
Select ID, Name, Age From inserted
END
ELSE
Begin
print('年龄应小于150')
rollback transaction --数据回滚
END
END
SELECT name, AVG(age) AS age FROM a
GROUP BY name HAVING AVG(age) > 12
其他
报错处理
user属于sql里的关键字,所以会报错,一般不要用关键字作为表名,如果关键字做表名用[]括起来
书写规范
1.SQL语句全部使用小写
2.引用字符时用单引号
3.在子查询中前后加上括号
4.禁止使用select * 形式的语句,必须指出select的具体字段。select子句中避免使用’*’ 数据库在解析的过程中,会将‘*’依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间
5.禁止使用 insert into table values(?,?,?),必须指出具体要赋值的字段,即 insert into tablea (col1, col2,…) values(?,?,…)
6.避免隐含的类型转换。例如在where子句中numeric 型和int型的列的比较或相加,字符串的转换等
7.禁止使用视图(视图 基本上都是 几张表之间的关联数据。对大数据量查询非常有压力)