导航

SQL语法

Posted on 2019-08-25 11:21  司恩波  阅读(197)  评论(0编辑  收藏  举报

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 key9         )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;