数据库定义语言
DDL(Data Definition Language)数据库定义语言:
主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作
选择要操作的数据库:USE 数据库名;
列出数据库管理系统的数据库列表:SHOW DATABASES;
显示数据库的所有表:SHOW TABLES;
显示数据表的信息:SHOW COLUMNS FROM 数据表;
创建数据库:CREATE DATABASE 数据库名;
删除数据库:DROP DATABASE 数据库名;
创建数据表:CREATE TABLE table_name (column_name column_type);
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
删除数据表:DROP TABLE table_name;
数据操纵语言
DML(data manipulation language)数据操纵语言:
主要用来对数据库的数据进行操作
插入数据:INSERT INTO table_name (field1, field2,...fieldN) VALUES (value1, value2,...valueN);
删除数据:DELETE FROM table_name [WHERE Clause];
更新数据:UPDATE table_name SET field1=new-value1,field2=new-value2 [WHERE Clause];
查询数据:SELECT column_name FROM table_name [WHERE Clause] [LIMIT N] [OFFSET M];
WHERE子句:... WHERE condition1 [AND [OR]] condition2...
LIKE
(效率低)%
匹配任意字符,_
匹配任意一个字符AND
OR
NOT
=
\<>
\<
\>
\>=
\>=
BETWEEN
IS NULL
IS NOT NULL
AS:别名
ORDER BY:...ORDER BY field1, [field2...] [ASC [DESC]]
ASC
升序(默认)DESC
降序
GROUP BY:...GROUP BY field [HAVING ...]
LIMIT(非标准SQL):...LIMIT num1[,num2]
函数
NOW()
:当前日期和时间CURDATE()
:当前日期CURTIME()
:当前时间avg()
COUNT()
MAX()
MIN()
SUM()
数值类型:http://www.runoob.com/mysql/mysql-data-types.html
连接查询
内链接:select * from A inner join B on A.id = B.id;
左外连接:select * from A left join B on A.id = B.id;
右外连接:select * from A right join B on A.id = B.id;
子查询
- in(not in)关键字
select * from A where id in(select id from B);
- 运算符
select * from A where id>=(select id from B);
- exists(not exists)关键字
select * from A where id exists(select id from B);
- any关键字
select * from A where id>=any(select id from B);
- all关键字
select * from A where id>=all(select id from B);
合并查询
- union(去除重复记录)
select id from A union select id from B;
- union all(不去除重复的记录)
查询优化
- 尽量避免全表扫描,考虑在 where 及 order by 涉及的列上建立索引
- 尽量用inner join.避免 left join(或 right join)
- 尽量避免子查询,而用 join
- 用 exists 代替 in,用 outer Joins 或 not exists 代替 not in
- 用 where 子句替换 HAVING 子句( HAVING 只会在检索出所有记录之后才对结果集进行过滤)
- 使用缓存,减少访问次数
数据库控制语言
DCL(Data Control Language)数据库控制语言:
设置或更改数据库用户或角色权限的语句
创建用户:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- username:用户名
- host:登陆主机,本地用户可用localhost,从任意远程主机登陆可以使用通配符%
- password:登陆密码,密码可以为空
授权:GRANT privileges ON databasename.tablename TO 'username'@'host';
- privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,所有权限使用ALL
设置与更改用户密码:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
撤销用户权限:REVOKE privilege ON databasename.tablename FROM 'username'@'host';
删除用户:DROP USER 'username'@'host';