SQL语法
2019-08-21
1.数据库操作
数据库的操作主要是指对文件夹的操作;常规的增删改查中,数据库有其中的3个,分别为查,增,删。
1.1查数据库(浏览文件夹)
show databases;
1.2新增数据库
create database 数据库名;
常用的数据库需要增加对中文的支持,一般如下所示:
create database 数据库名 default charset utf8;
1.3删除数据库
drop database 数据库名;
1.4使用数据库(进入文件夹)
use 数据库名;
2.表操作
表操作即对数据库内的文件进行操作,也符合查,增,删。
2.1查询表
show tables;
2.2新增表
最简单的表述:
create table 表名( 列名1 类型, 列名2,类型)default charset = utf8;
使用MySQL的innodb引擎可以支持事务操作,即支持出错回滚机制
create table 表名( 列名1 类型, 列名2,类型)engine=innodb default charset = utf8;
表内的列加上”auto_increment“表示此列自增,此时此列还必须加上”primary key“,表示此列为主键;
primary key:可以加速查找,不能为空且不能重复,可以作为一行的唯一标识,一个表只能有一个主键,一个主键可以由一列生成,也可以由多列组合生成;
列名后加上”null“表示此列可以为空,加上”not null“表示不能为空,不写时默认为”not null“
create table 表名( 列名1 类型 null, 列名2 类型 not null, 列名3 类型 not null auto_increment primary key, )engine=innodb default charset = utf8;
2.3删除表
drop table 表名;
3.表内数据操作
3.1表内信息的查看
可以按照列名查看,中间通过逗号隔开,也可以通过*查看全部;
其中查看的方式有很多种;最简单的是无条件的查看:
select 列名1,列名2 from 表名; select * from 表名;
加上条件的查看:
select * from 表名 where 条件语句; select * from t1 where id < 10;
在条件语句中还有一些常规的操作;比如查看指定的几行或不看指定的几行
select * from t1 where id in (1,3,4,7); select * from t1 where id not in (1,3,4,7); select * from t1 where id in (select id from t2);
指定两个行之间的数据
select * from t1 where id between 行号1 and 行号2;
模糊查找:
使用通配符进行比配,这里有两个通配符“%”和“_”,此时关键次用like
"%a"代表所有以a结尾的数据,“a%”代表所有以a开头的数据,“%a%”代表所有包含字母a的数据;
“_a”代表前面只有一个字符且以a结尾的数据,····
select * from 表名 where 列名 like “%a”;
分页取数据,使用关键词limit;
只有一个数字时表示取前面几个,有两个数字时,第一个数字代表开始取的位置,第二个数字代表取出数据的条数;
select * from 表名 limit 10; select * from 表名 limit 0,10;
排序
使用order by关键字,desc代表降序排列,asc代表升序排列;如果有多个排序,首先按照前面的排序进行排列,如果遇到相同的再用后面的排序方法排列
例如取后10条数据
select * from 表名 order by 列名 desc limit 10;
多个排序
select * from 表名 order by 列名 desc 列名2 desc;
3.2插入数据
增加一行数据
insert into 表名(列名1,列名2) values(内容1,内容2);
增加多行数据
insert into 表名(列名1,列名2) values(内容1,内容2),(内容3,内容4)···;
将另一个表的内容复制到表中
insert into 表名(列名1,列名2) select 列名1,列名2 from 表名2;
3.3修改数据
一种是修改整个表中的数据
update 表名 set 列名=数据; 比如: update t1 set age=18;
另一种是有条件的修改,其中条件语句可以使用“or”或“and”形成复合条件语句
update t1 set age=18 where age=17; 将t1表中age等于17的数据全改为18
3.4删除数据
清空表,有两种方法,delete方法清空表内容,但是不清除自增列的信息,下次增加数据时依然按照之前自增的值顺序开始,速度较慢,可以加条件语句进行判断;
truncate同时会清除自增的信息,下次再添加数据会从1开始自增。
delete from 表名; delete from 表名 where 条件语句;
truncate table 表名;
4.一个完整操作程序
1 show databases; 2 create database db1 defalut charset utf8; 3 use db1; 4 show tables; 5 create table t1( 6 age int null, 7 name char(10) not null, 8 id int not null auto_increment primary key, 9 )engine=innodb default charset = utf8; 10 select name,age from t1; 11 insert into t1(name,age) values("crat",22); 12 insert into t1(name) values("scll"); 13 select * from t1; 14 delete from t1; 15 select * from t1; 16 drop table t1; 17 show tables; 18 drop database db1; 19 show databases;