SQL基础

SQL语句零零散散地了解到了一些,现打算系统地学习一下。

这些大概是最最基础的内容了。

创建数据库

在进行数据库操作之前,得有一个数据库吧。

创建数据库的SQL语句是

create database 数据库名称;

以Linux下的MariaDB为例,创建一个名为study的数据库。

create database study;

创建数据库

使用数据库

查看数据库

一个数据库系统包含多个数据库,有包含数据库系统配置的,也有用户自己创建的。

查看数据库的SQL语句是

show database;

通过这个SQL语句,可以看到当前数据库系统的所有数据库。

查看数据库

选择数据库

查看所有数据库后,可以选择一个数据库进行操作。

SQL语句是

use 数据库名称;

使用之前创建的study数据库

use study;

选择数据库

可以看到,MariaDB后面的None变成了study.

创建数据表

MariaDB的数据表由字段和数据组成。

字段可以简单地理解为表格的表头,数据就是表格的内容。

字段1字段2字段3字段4字段5

字段是数据的集合,数据的数据类型由字段决定。类似C语言里的数组。

常用的数据类型有int , char, varchar, date, time, boolean等。

创建表的SQL语句为

create table 表名
(
字段1 字段类型(长度),
字段2 字段类型(长度),
    .....
);

现在,我需要一个表,记录学生的信息。表中应包含学生的学号,学生的姓名,学生的性别,学生的成绩。

SQL语句为

create table stu_info(
stu_id int(10),
stu_name varchar(10),
stu_gender boolean,
stu_grade float(5)
);

创建数据表

查看数据表

一个数据库系统中有多个数据库,一个数据库中也可以包含有多个数据表。

查看数据表的SQL语句为

show tables;

查看数据表

添加数据

我已经创建了一个数据表,用来记录学生信息。但里面没有数据,它是一个空表。现在要想表里添加数据。

添加数据的SQL语句为

insert into 表名 values (数据1,数据2,数据3,...);

insertinto 表名 (字段1,字段2,字段3,...) values (数据1,数据2,数据3,...);

两种写法都要注意数据与字段对应。

现在分别用两种写法向表中插入数据。

insert into stu_info values (2019122018,'小奥纸',true,100);
insert into stu_info (stu_id,stu_name,stu_gender,stu_grade) values (2019122018,'小奥纸',true,100);

查询数据

刚才向数据表插入了两条数据,现在来看一下表中的结果。

查询stu_info表中的所有数据,SQL语句为

select * from stu_info;

查询stu_info中的所有数据

如果我只想查询学生的姓名和成绩,SQL语句就应该是

select stu_name,stu_grade from stu_info;

查询姓名成绩

如果我想查找成绩为100分的学生,SQL语句为

select stu_name from stu_info where stu_grade=100;

成绩为100分的人

向数据库中多添加几条数据。

新数据

如果我想查询成绩在90分及以上的男生,SQL语句为

select stu_name,stu_grade from stu_info where stu_gender=1 and stu_grade>=90;

成绩在90及以上的男生

如果我想查询成绩为80分和90分的学生,SQL语句为

select stu_name,stu_grade from stu_info where stu_grade=80 or stu_grade=90;

成绩为80分或90分的学生

and 和 or 的用法总结

如果第一个条件和第二个条件都成立,则 and运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 or 运算符显示一条记录。

删除数据

显然,数据表中有数据重复了,应该进行删除操作。

SQL语句为

delete from 表名 where 条件;

如果缺少条件,表中的所有数据都会被删除。

现在来删除那条重复的数据,SQL语句是delete from stu_info where id=2019122018吗?当然不是,如果这样写,两条数据都会被删除。

正确的SQL语句为

delete from stu_info where stu_id=2019122018 limit 1;

后面的limit 1就限制了只对一条数据进行操作。

删除数据

修改数据

仔细审查后发现成绩登记错了,需要进行修改。

修改数据的SQL语句为

update 表名 set 字段1=数据1,字段2=数据2,... where 条件

Alice在数据库中的成绩为90,实际成绩为85,修改成绩的SQL语句为

update stu_info set stu_grade=85 where stu_id=2019011001 and stu_name='Alice';

修改成绩

修改数据表

设计数据表后发现不合理,需要对数据表进行修改。

  • 增加字段

    alter table 表名 add 字段 数据类型;

在stu_info中增加数据类型为int的字段test

alter table stu_info add test int;

新增字段

  • 修改字段类型

MySQL/MariaDB

alter table 表名 modify column 字段 数据类型;

SQL Server/Access

alter table 表名 alter column 字段 数据类型;

将test的类型修改为char

alter table test modify column test char;

修改字段类型

  • 删除字段

    alter table 表名 drop column 字段;

删除test字段

alter table stu_info drop column test;

删除字段

删除数据表

drop table 表名;

删除数据表

删除数据库

drop database study;

删除数据库