常用的SQL命令
数据定义语言DDL(Data Definition Language)
create 、drop 、alter
主要为创建、修改、删除数据库的逻辑结构,其中包括表结构,视图和索引等。
create
- 创建数据库: create database < 数据库名 >;
例:
mysql> create database company;
- 创建表: Create table <表名> (<列名字> <数据类型> [列级完整性约束条件] , ………….);
例:
mysql> create table if not exists company.customers (
-> id int unsigned auto_increment primary key,
-> first_name varchar(20),
-> last_name varchar(20),
-> country varchar(20)
-> ) engine=InnoDB;
- 创建视图: Create view <视图名> [(列名),(列名)…] as <子查询> [with check option]
- 创建索引: Create [unique] [cluster] index <索引名> on <表名>[次序] (<列名>……..)
- Unique选项表示此索引的每一个索引值不能重复,对应唯一的数据记录。
- Cluster 选项表示要建立的索引是聚簇索引。
drop
- 删除数据库: drop database < 数据库名 >;
- 删除表: drop table <表名>;
- 删除视图: drop view <视图名>;
- 删除索引: drop index <索引名> on <表名>;
alter
- 增加列: Alter table <表名> [Add <新列名><数据类型>[完整性约束]]
- 修改列的类型: Alter table <表名> modify 列名 想改的类型
- 修改表的名字: alter table 表名 rename 新表名;
- 删除某列: Alter table <表名> drop 列名;
数据查询语言DQL(Data Query Language)
SELECT
用于数据库中数据的检索查询。各种简单查询,连接查询等都属于DQL
mysql> select emp_no,dept_no from dept_manager;
mysql> select * from departments;
mysql> select count(*) from employees;
SELECT distinct deptno_id from emp; #在select 语句中使用distinct 筛选重复
mysql> select count(*) from employees where first_name like 'Christ%';
- 找出名字以Christ开头并以ed结尾的所有员工的人数:
mysql> select count(*) from employees where first_name like 'Christ%ed';
数据操纵语言DML( Data Manipulation Language)
INSERT,UPDATE,DELETE
用于改变数据库中的数据,包括插入,删除,修改。
mysql> insert into company.customers (first_name,
-> last_name,country)
-> values
-> ('mike','christensen','USA'),
-> ('andy','Hollands','Australia'),
-> ('ravi','vedantam','India'),
-> ('rajiv','perera','Sri lanka');
mysql> update customers set first_name='rajiv',country='UK' where id=4;
#where字句是强制性的。如果没有给出它,update会更新整个表。
mysql> delete from customers where id=4 and first_name='rajiv';
#where字句是强制性的。如果没有给出它,delete将删除表中的所有行。
数据控制语言DCL( Data Control Language)
GRANT,REVOKE
主要为数据库访问权限控制,给用户授予访问权限:GRANT语句,取消授权:REVOKE
#授权
grant select ,insert,update on db1.t1 to "ycw"@'%';
#撤销ycw用户对数据库db1的所有表的所有权限
revoke all on db1.* from 'ycw'@"%";
#撤销ycw用户所有数据库的所有的表的权限
revoke all privileges on '*' from 'ycw'@'%';