关系数据库语言sql
DDL数据库定义语言
用来创建或删除存储
Crete Datebase aaa
Drop database aaa
Alter 修改数据库,表的结构
DML数据库操作语言
Select
Update
Insert
Delete
DCL数据库控制语言
Commit 确认数据库中对数据的变更
Rollback取消数据库对数据的变更
Grant 赋予用户操作权限grant select,insert,update,delete,drop,index,all,privileges on db/table to user
Revoke 取消用户的操作权限
常用语法
创建表
USE ttt;
CREATE TABLE aa
(
id
INT(2) NOT NULL AUTO_INCREMENT,
name
VARCHAR(56) NOT NULL,
gender
VARCHAR(2) DEFAULT NULL,
create_time
DATETIME DEFAULT NULL,
PRIMARY KEY(id
),
UNIQUE KEY (name
))ENGINE INNODB,DEFAULT CHARSET=utf8;
修改表结构:
ALTER TABLE aa ADD column(email
DATETIME DEFAULT NULL)
删除全部数据:
truncate T
插入数据:
INSERT INTO aa
VALUES(NULL,“name”,“1”,NULL,NULL,NULL)
从其他表复制数据
Insert into aa select * from bb
一个数据库中的表中的数据复制到另一个数据库中的一个表,使用方法如下:
insert into 数据库A.dbo.table1(col1,col2,col3…) select col1,col2,col3… from 数据库B.dbo.table2
创建新表跟原表一样的结构,并复制数据
Create table select tableNew * into from table
只复制表结构
CREATE TABLE bbb SELECT * FROM aa WHERE 1=2;
删除数据
Delete from aa where id=1
更新数据
Update aa set name=”1” where id=1
聚合函数
Count
Sum
Avg平均数
Max
Min
Select
Where必须紧跟在select子句之后
1,Select id,name where id=1 group by id desc
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
2, having必须在group by 后面,HAVING <分组结果对应的条件>, WHERE 关键字无法与合计函数一起使用。
例子:SELECT SUM(u_id),u_sex FROM ta GROUP BY u_sex HAVING SUM(u_id)<100;
3,模糊查询
SELECT * FROM ta WHERE u_username LIKE ‘%王%’
SELECT * FROM ta WHERE u_username LIKE ‘王_’
4,BETWEEN谓词——范围查询
BETWEEN 100 AND 1000;
5,IN 谓词
“IN( 值,……)”
,6,EXIST谓词
EXISTS()
例子:
SELECT c.CustomerId,CompanyName FROM Customers c
WHERE EXISTS(
SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID)
7,如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:
SELECT DISTINCT Company FROM Orders
8, UNION 和 UNION ALL 操作符
SELECT * FROM ta UNION SELECT * FROM bbb(没有重复)
SELECT * FROM ta UNION SELECT * FROM bbb(所有)
选取表中公共部分——INTERSECT
记录的减法——EXCEPT
9.innerjoin ,left join/right join/full join
SELECT * FROM ta INNER JOIN bbb AS A on A.id=ta.u_id
A.Inner join
产生A和B的交集。
SELECT * FROM
test_a INNER JOIN test_b ON test_a.name = test_b.name
B. Full outer join
产生A和B的并集。对于没有匹配的记录,则以null做为值。 SELECT *
FROM test_a FULL OUTER JOIN test_b ON test_a.name = test_b.name
C.Left outer join
产生表A的完全集,而B表中匹配的则有值,没匹配的以null值取代。
SELECT *
FROM
test_a LEFT OUTER JOIN test_b ON test_a.name = test_b.name
D. Left outer join on where
产生在A表中有而在B表中没有的集合。
SELECT . *
FROM test_a LEFT OUTER JOIN test_b
ON test_a.name = test_b.name
WHERE
test_b.name IS NULL
E. RIGHT OUTER JOIN
产生表B的完全集,而A表中匹配的则有值,没匹配的以null值取代。
SELECT *
FROM
test_a RIGHT OUTER JOIN test_b ON test_a.name = test_b.name
F. right outer join on where
产生在B表中有而在A表中没有的集合。
SELECT * FROM
test_a RIGHT OUTER JOIN test_b ON test_a.name = test_b.name
WHERE test_a.name IS NULL
G. FULL OUTER JOIN WHERE
产生(A表中有但B表没有)和(B表中有但A表中没有)的数据集。
. SELECT *
FROM
test_a FULL OUTER JOIN test_b ON test_a.name = test_b.name
WHERE
test_a.name IS NULL
OR test_b.name IS NULL
H. cross join
表A和表B的数据进行一个N*M的组合,即笛卡尔积(交差集)。