04 March 2014

sql分类

  • DDL 数据定义语言,create,drop ,alter等
  • DML 数据操作语言,insert,delete,update,select 等
  • DCL 数据控制语言,grant,revoke 等

DDL命令

#数据库操作

mysql -h127.0.0.1 -P3306 -uroot -p123456    #连接数据库

show databases;     #显示数据库

use dnname;         #选择库

show tables;        #显示库中的表

desc tbname;        #显示表字段信息

show create table tbname;   #显示字段的详细信息

#database

create database dbname;     #创建db

drop database dbname;       #删除db

#table

##建表
create table tbanme(
    column_1 type conditions,
    column_2 type conditions,
    ……,
    key `column_1_idx` (`column_1`)
)ENGINE=innodb default charset=utf8;   

##删表
drop table tbname;

##修改表
alter table test modify ename varchar(20);   #ename 字段类型修改为varchar(20)

alter table test add gender tinyint(1) unsigned not null default 0 [first|after ename];  #增加gender字段在ename之前或之后

alter table test drop gender;    #删除gender字段

alter table test change old_col_name new_col_name definition  #修改字段名(modify不能修改列名)

alter table test rename test_1;     #修改表名

DML命令

#insert 

insert into tbname(col1,col2,……)values(val1,val2,……);  #insert one

insert into tbname(col1,col2,……)values
(val1,val2,……),
(val1,val2,……),
……
(val1,val2,……);         #insert multi

#update 

update tbname set col1=val1,col2=val2,……,coln=valn where conditons;

#delete

delete from tbname where conditions;

#select

select * from test;

select distinct ename from test;

select * from test where ename='jim';

#表连接

*表连接分为内连接和外连接。内连接是取查询表中相同的记录。外连接分为左连接和右连接。左连接以左表为主,右连接以右表为主。

select ename,deptname from emp,dept where emp.deptno=dept.deptno;  #内连接

select ename,deptname from emp inner join dept on emp.deptno=dept.deptno;  #内连接

select ename,deptname from emp left join dept on emp.deptno=dept.deptno;  #左连接,左表为主

select ename,deptname from emp right join dept on emp.deptno=dept.deptno;  #右连接,右表为主

#联合查询

select deptno from emp union all select deptno frpm dept;     #取并集

select deptno from emp union select deptno frpm dept;     #取并集,但去重。

DCL命令

#创建一个tom账户,对gocar数据库的所有表只有select/insert权限:
grant select,insert on gocar.* to 'tom'@'localhost' identified by '123456';

#权限变更,回收insert权限:
revoke insert on gocar.* from 'tom'@'localhost';