drop database dbname;
例如: drop database test1;
sql是Structure Query Languages(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言。sql语句主要可以划分为一下三个类型:
一、 DDL(Data Define languages),语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。
1.创建数据库:
create DATABASE dbname ;
例如:create database test1;
2.删除数据库:
drop database dbname;
例如: drop database test1;
3.创建表:
因为Mysql的表名是以目录的形式存在于磁盘中,所以表名的字符可以用任何目录名允许的字符column_name是列的名字;column_type是列的数据类型;contraints是这个列的约束条件。
CREATE TABLE tablename (column_name_1 column_type_1 constraints,column_name_2 column_type_2 constraints,.......column_name_n column_type_n constraints);
例如:create table emp(ename varchar(10),hiredate date,saldecimal(10,2),depintno int(2));
4.删除表:
DROP TABLE tablename;
例如: drop table emp;
5.修改表:
在大多数的情况下,表结构的更改一般都使用alter table语句。
(1).修改表类型:
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|AFTER col_name];
例如: 更改表emp中的ename列的属性为varchar(20)
alter table emp modify ename varchar(20);
(2).增加表字段:
ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST|AFTER col_name];
例如:在表emp中添加一个属性age int(3);
alter table emp add column age int(3);
(3).删除表字段:
ALTER TABLE tablename DROP [COLUMN] col_name;
例如:在emp中删除列age;
alter table emp drop column age;
(4).字段改名:
ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name];
例如:将age改名为age1,同时修改字段类型为int(4);
alter table emp chnge age age1 int(4);
(5).改变字段排列顺序:
前面介绍的字段增加和修改语法(ADD/CHANGE/MODIFY)中,都有一个可选项[FIRST|AFTER column_name],这个选项可以修改字段在表中的位置,默认ADD增加的新字段是加在表的最后位置,而CHANGE/MODIFY默认都不会改变字段的位置
例如:
1).将新增的字段birth date 加载ename后:(date为数据类型)
alter table emp add birth date after ename;
2).修改字段age,将它放在最前面:
alter table emp modify age int(3) first;
(6).更改表名:
ALTER TABLE tablename RENAME [TO] new_tablename;
例如:将表emp改名字为emp1
alter table emp rename emp1;
二、DML(Data Manipulation Languages)语句:数据库操纵语言,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。
DML是对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select)。
1.插入记录:
INSERT INTO tablename(field1,field2,......,fieldn) VALUES(value1,value2,.....,valuen);
例如: 向表emp中插入以下记录:ename为zzx1,hiredate为2000-01-01,sal为2000,deptno为1;
insert into emp (ename, hiredate,sal,deptno) values('zzx1','2000-01-01','2000',1);
2.更新记录:
UPDATE tablename SET field1=value1,field2=value2,......fieldn=valuen [WHERE CONDITION];
例如:将表emp中的ename为“lisa”的薪水(sal)从3000更改为4000;
update emp set sal=4000 where ename='lisa';
UPDATE命令可以同时更新多个表中数据,语法如下:
UPDATE t1,t2,...tn SET t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION];
3.删除记录:
DELETE FROM tablename [WHERE CONDITION];
例如: 在emp中将ename为’dony‘的记录全部删除;
delete from emp where ename=‘dony‘;
DELETE命令可以一次删除多个表中的数据,语法如下:
DELETE t1,t2,....,tn FROM t1,t2,....,tn [WHERE CONDITION];
4.查询记录:
这里仅简单的介绍一下select语法。
SELECT * FROM tablename [WHERE CONDITION];
1). 查询不重复的记录
利用关键字distinct实现:
SELECT distinct filed1,....,fieldn FROM tablename;
2).排序和限制
对于数据库的排序操作,利用关键字ORDER BY 来实现,语法如下:
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC],....,fieldn[DECS|ASC] ];
其中DESC和ASC是排序顺序关键字,DESC表示按照某个字段进行降序排列,ASC则表示升序排序,如果不写此关键字默认是升序排列。同事ORDER BY后面可以跟不同的排序字段,同事不同的排序字段可以有不同的排序顺序。
可以利用LIMIT关键字来对记录进行部分显示。
SELECT ......[LIMIT offset_start,row_count];
例如: 如果显示emp表中按照sal排序后从第二条记录开始,显示3条记录:
select * from emp order by sal limit 1,3;
3).聚合
聚合函数:
SELECT [field1,field2,....,fun_name FROM tablename [WHERE where_condition] [GROUP BY field1,field2,....,fieldn [WITH ROLLUP]] [HAVING where_condition];
对其参数进行如下说明:
1. fun_name表示要做的聚合操作,也就是聚合函数,常用的有sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。
2. GROUP BY 关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门就应该卸载group by后面。
3. WITH ROLLUP 是可选语句,表明是否对分类聚合后的结构再汇总。
4. HAVING 关键字表示对分类后的结果在进行条件的过滤。
4).子查询
当进行查询时,需要的条件是另一个select语句的结果时,这个时候就要用到子查询。用于子查询的关键字主要包括in、not in 、= 、exists 、 not exists等
5).记录联合。将两个表的数据按照一定的查询条件查询出来,将结果合并到一起显示出来
SELECT * FROM t1 UNION|UNION ALL SELECT * FROM t2 .... UNION|UNION ALL SELECT * FROM tn;