sql是编程中很重要的一个环节,会写sql,会写好的sql语句是程序高效率运行的保障,每一个编程工作者都要和数据库打交道,不管是什么样的数据库都少不了要写sql语句。本篇文章从0开始总结基础的sql语句,后续文章将逐步深入,总结有关sql的高级查询方面的知识。
一、概述:
1、什么是SQL
SQL(Structs Query Lanauage):结构化查询语言,是与关系型数据库进行通信的标准语言。
2、SQL命令的分类:
(1)DDL(data definition language):数据定义语言,主要命令有create,alter,drop等。DDL命令主要用于定义或者改变
数据的结构,数据类型,表于表之间的链接和约束及初始化工作上,大多在建表时使用。
(2)DML(data manipulation language):数据操作语言,他们是insert,update,delete,(select)这几条命令是对数
库面的数据进行操作的语言。
(3)DCL(data control language):数据控制语言,常用的有grant,revoke,deny等,是用来设置或者更改数据库用户,
者进行权限控制的命令。
二、常用的sql命令:
1、数据库级别的操作命令
(1)创建数据库:create database database_name;
(2)删除数据库:drop database database_name;
(3)查看当前用户下所有的数据库:show databases;
(4)切换用户下的数据库:use database_name;
(5)退出数据库环境:exit;
2、表结构方面的操作命令
(1)创建表:
create table table_name
(id int(20) not null primary key auto_increment,
name varchar(32) not null comment"用户名称",
source varchar(12) not null default"社区用户",
inputtime datatime comment"登记时间"
);
备注:不指定not null时默认为null意为可为空,comment可以对字段添加备注,default可以设置字段的默认值。
(2)查看当前数据库中的所有表:show tables;
(3)查看一个表的表结构:describe table_name;
(4)删除一个表:drop table_name;
(5)删除表里面的某个字段:alter table table_name drop column_name;
eg:alter table user drop role; 删除user表中的role字段
(6)向表里添加一个新的字段:alter table table_name add colume_name 数据类型 null/not null;
eg:alter table user add type varchar(4) not null;向user表中添加type字段
(7)修改表中某个字段的名称和类型:alter table table_name change old_column new_column 数据类型 null/not nul;
eg:alter table user change type user_type varchar(8) not null;修改user表中type字段的名称和类型
(8)修改某个字段的属性:alter table table_name modify column_name 属性;
eg:alter table user modify type char(8) not null;将user表中type字段字段类型从varchar改为char
(9)复制一张表,包括数据:create table new_table_name as select * from old_table_name;
eg:create table user_back as select * from user;将user表中的数据备份到user_back表中。
3、数据操作方面的命令
(1)向表里插入数据:insert命令
a、向表里插入全部字段的值:insert into table_name values ('字段1值','字段2值',......,'字段n值');
b、向表里插入部分字段的值:insert into table_name (字段1,字段2,......字段n) values ('字段1值','字段2值',......,'字段n值');
注意:插入部分字段的值时,所有not null的字段必须包含其中,可以有null的字段包含其中,表示默认为null,字段与字段值
相对应。
c、一次性向表里插入多条记录:insert into .......values ('字段1值','字段2值',......,'字段n值'),('字段1值','字段2值',......,'字段
n值'),('字段1值','字段2值',......,'字段n值'),.....,('字段1值','字段2值',......,'字段n值');
(2)更新表里面的数据:update命令
update table_name set column1 = 'value1',column2 = 'value2',......,columnn = 'valuen' [where conditions];
说明:set后面可以更新多个字段,用逗号分隔,where语句可选,不带where字句更新字段所有值,带where时根
据conditions更新满足条件的数据。
(3)删除表里面的数据:delete/truncate
delete from table_name [where conditions];
说明:delete命令不跟where子句可以清空表中所有记录,跟where子句根据conditions删除满足条件的记录。
truncate table_name;
说明:truncate命令清空表里面的所有数据。
delete与truncate的区别:
a、truncate属于DDL语句,而delete属于DML语句。所以truncate不能使用rollback回滚,而delete则可以。
b、truncate命令不能出发任何delete触发器。
c、使用truncate命令清除数据后表的高水平线和索引将重新被初始化。
d、truncate命令只能全表数据清除,而delete可以有选择的删除表中的数据,并且使用turncate清表的速度要比delete块。
4、查询方面的命令:select语句
select * | (distinct) column1,column2,....,columnn from table1[,table2....] where conditions group by column1,column2 order by column1,column2 [ASC|DESC] [limit];
(1)order by:排序,使查询输出的结果按照order by后面指定的字段升序或者降序排列。ASC默认为升序,DESC表示为降序,order by后面有多个字段时,先按照第一个字段排序,然后再按照第二个字段排序,以此类推,也可以用数字代替具体的字段名称,select后面的第一个字段用数字1代替,第二个字段用2代替,以此类推。
(2)distinct关键字用于去除重复数据,在查询的字段名称前面加上distinct关键字可以对查询的结果按照该字段去重。
(3)查询多个字段时,字段之间以逗号相隔,where语句中有多个条件时,用and连接。
(4)limit可以限制查询显示的的行数,limit m表示显示查询结果的前m条,limit m,n表示显示查询结果的m到n条。limit也可以用到update或者delete语句中,限制更新或者删除的行数。
三、sql中的操作符
操作符一般用在select命令的where子句中为返回数据指定更明确的条件。
1、比较运算符:=(等于),<>|!=(不等于),>(大于),<(小于),>=(大于等于),<=(小于等于)
2、算术操作符:+,-,*,/;
3、逻辑操作符:is null,between.......and,in,like,exits,unique,and,or。not用于逻辑操作符前面表示求反。
eg1:select * from interface_info where interfacename is not null and id between '110' and '210' and rowid in('A110','A112');
eg2:select id,name from interface_info where rowid like 'A%';