一、SQL语法

1、数据库表

一个数据库通常包含一个或多个表。每个表由一个名字标识,表包含带有数据的行。

2、大小写

SQL对大小写不敏感。

3、SQL语句后的分号

某些数据库要求在每条SQL命令的末尾使用分号,比如mysql。

4、SQL的DML和DDL

可以把SQL分为两个部分:DML(data manipulation language数据操作语言)和DDL(data definition language数据定义语言)

查询和更新数据的指令构成了SQL的DML部分:

select —— 从数据库表中读取数据

update —— 更新数据库表中的数据

delete —— 从数据库表中删除数据

insert into —— 向数据库表中插入数据

SQL的DDL部分指创建或删除表格,更新表结构,定义索引,规定表之间的链接,施加表间的约束的命令。

create database —— 创建新数据库

alter database —— 修改数据库

create table —— 创建新表

alter table —— 更新表结构

drop table —— 删除表

create index —— 创建索引

drop index —— 删除索引

二、创建一个实例

以MySQL为例:

mysql> create database study;
mysql> use study;
mysql> create table students(id int auto_increment primary key,name varchar(255),sex char(10));
mysql> insert into students (name,sex) values ('zhangsan','man'),('lisi','woman'),('wangwu','man'),('zhaoliu','woman');
mysql> select * from students;

wKioL1esHpvDR-S2AAASAe8xhjo097.png

注意:在MySQL中值除了数字之外,都需要用''包含。

三、基础SQL语句

1、select:用于从表中获取数据。

格式:select 列名 from 表名;

例子:

①从students表中选取所有的学生姓名:

mysql> select name from students;

②从students表中选取所有的学生姓名和性别:

mysql> select name,sex from students;

多个列名之间用逗号隔开。

③查看students表中的所有数据:

mysql> select * from students;

“*”代表所有的列名。

2、distinct:在表中,可能包含有重复的数据,但是有时希望仅仅列出不同的值。这时使用distinct返回唯一不同的值。

格式:select distinct 列名 from 表名;

例子:

①从students表中列出所有的性别(……):

mysql> select distinct sex from students;
+-------+
| sex   |
+-------+
| man   |
| woman |
+-------+        man和woman各被列出一次。

3、where:用于有条件地从表中获取数据,通常和select一起使用。

格式:select 列名 from 表名 where 列名 运算符 值;

这里的运算符包含=(等于)、<>(或!=,不等于)、>=(大于等于)、<=(小于等于)、>(大于)、<(小于)、between(在某个范围内)、like(以某种模式)

例子:

①从students表中列出所有性别为“man”的学生:

mysql> select name from students where sex = 'man';

这样会列出‘zhangsan’,‘wangwu’二个值。

②从students表中列出所有ID不超过3的学生:

mysql> select name from students where id <= 3;

这样会列出‘zhangsan’,‘lisi’,‘wangwu’三个值。

③从students表中列出所有ID在2和3之间的学生:

mysql> select name from students where id between 2 and 3;

这样会列出‘lisi’,‘wangwu’二个值。不同的数据库对两个边界值(2和3)的处理方式不同,mysql会列出包含2和3的列,但是有些数据库不会列出。

4、and和or:用于对一个以上的记录进行过滤。可以在where子句中把两个或多个条件结合起来。

例子:

①从students表中列出ID不超过3,且性别为女的学生姓名:

mysql> select name from students where id <=3 and sex='woman';

这样会列出‘lisi’一个值。

5、order by:用于对获取的结果进行排序。默认是对结果进行升序排序,可以使用desc关键字对结果进行降序排序。

例子:

①对students表中的姓名按照字母顺序显示:

mysql> select name from students order by name;

②对students表中的姓名按照id由大到小显示:

mysql> select id,name from students order by id desc;

6、insert into:用于向表中插入新的行(数据)。

格式:insert into 表名 values (值1,值2,……);

向指定的列插入数据:insert into 表名 (列1,列2,……)values (值1,值2,……);

例子:

①向students表中插入一行,id 5,姓名 qianqi,性别 woman:

mysql> insert into students values (5,'qianqi','woman');

②向students表中插入两行:

mysql> insert into students (name,sex) values ('sunba','man'),('wujiu','man');

一个()里是一行,多行用逗号“,”隔开。

7、update:用于修改表中的数据。

格式:update 表名 set 列名=新值 where 列名=某值;两个列为不同的列。

例子:

①将students表中zhangsan的性别改为woman:

mysql> update students set sex='woman' where name='zhangsan';

8、delete:用于删除表中的行(数据)。

格式:delete from 表名 where 列名=值;

例子:

①从students表中删除姓名为wujiu的行:

mysql> delete from students where name='wujiu';

②删除students表中所有的行:

mysql> delete from students;或者
mysql> delete * from students;

这样只会删除表中的所有数据,并不会删除表结构、索引、属性。

9、alter:用于在数据表中添加、修改、删除列,修改表名称。

①向表中添加一列:

格式:alter table 表名 add 列名 数据类型;

例子:向students表中添加一列‘age’,数据类型‘int’:

mysql> alter table students add age int;

②修改表中某一列的列名:

格式:alter table 表名 change 现在的列名 修改后的列名 数据类型;

例子:修改students表中‘name’为‘perons’:

mysql> alter table students change name persons varchar(255);

③修改表中某一列的数据类型:

格式:alter table 表名 modify 列名 修改后的数据类型

例子:将students表中persons的数据类型改为char(100):

mysql> alter table students modify persons char(100);

④修改表名

格式:alter table 表名 rename 修改后的表名;

例子:将students表的表名改为learners:

mysql> alter table students rename learners;

⑤删除表中的某一列

格式:alter table 表名 drop 列名;

例子:删除learners表中的age列:

mysql> alter table learners drop age;

10、drop:用来删除数据库表、索引。

①删除数据库:

格式:drop database 数据库名

②删除数据表:

格式:drop table 数据表名

③删除索引,用于MySQL的语法:

格式:alter table 表名 drop 索引名称

11、primary key:主键,唯一标识数据库表中的每条记录。

主键必须唯一,且不能包含空值。每个表都应该有一个主键,并且每个表只能有一个主键。

在实例中是把id设为了主键,在创建表的时候在id后面加上primary key。

12、auto_increment:设置主键自增长。