根据SQL的功能(数据定义、数据操纵、数据查询、数据控制)给大家依次例举了一些SQL的常用语法格式以及实例,希望能对各位初识SQL的伙伴一些帮助。由于篇幅原因,本文只介绍数据定义与数据操纵部分。
数据定义:
用于定义数据库、基本表等机构,基本命令包括:create、drop、alter。
先讲一下命令的用法:
命令 | 功能 |
---|---|
create database 库名 | 创建数据库 |
create table 表名 (列名1 类型1 [约束列1], 列名2 类型2 [约束列2], …) |
创建数据表 |
drop table 表名 | 删除表 |
alter table 表名 修改内容 | 修改表结构(alter后面可以接的命令直接在实例里举出) |
实例1:
创建数据库与基本表
建立“Practice”数据库,建立“student”数据表(结构如下):
id | name | age | sex |
---|---|---|---|
int(5) | char(5) | int(3) | char(2) |
主键 | 非空 |
create database practice; -- 创建数据库
use practice; -- 选择要操作的数据库
create table student (id int(5) primary key,
name char(5) not null,
age char(3),sex char(2)); -- 创建表
desc student; -- 查看数据表结构
/***注意每条SQL语句的结尾要加分号,在SQL里面分号是一条语句结束的标志***/
逐条运行的结果是这样的:
mysql> create database practice; -- 创建数据库
Query OK, 1 row affected (0.01 sec)
mysql> use practice; -- 选择要操作的数据库
Database changed
mysql> create table student (id int(5) primary key,
-> name char(5) not null,
-> age char(3),sex char(2)); -- 创建表
Query OK, 0 rows affected (0.34 sec)
mysql> desc student; -- 查看数据表结构
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(5) | NO | PRI | NULL | |
| name | char(5) | NO | | NULL | |
| age | char(3) | YES | | NULL | |
| sex | char(2) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
4 rows in set (0.01 sec)
drop table 删除表,直接用就可以了,没有那么多弯弯绕绕的,简单易懂,所以就略过了。但是值得注意的是drop与delete的区别,drop是删除表,delete是删除表中的记录。其语法格式在之后的数据操纵中再向大家讲明。
alter table 用于对表的结构进行修改,可以添加、删除字段:
添加字段:
alter table student add address char(50); -- 添加地址字段
alter table student drop sex; -- 删除性别字段
结果是这样的:
mysql> desc student;
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| id | int(5) | NO | PRI | NULL | |
| name | char(5) | NO | | NULL | |
| age | char(3) | YES | | NULL | |
| address | char(50) | YES | | NULL | |
+---------+----------+------+-----+---------+-------+
当然alter还可以对字段的数据类型等进行设置,感兴趣的朋友可以自己再去了解一下。
数据操纵:
数据操纵可以分为数据查询和数据跟新两类,数据更新又分为插入、删除和修改,基本命令如下:
命令 | 功能 |
---|---|
insert into 表名(字段1,字段2, …) values (值1,值2,…) | 插入记录 |
update 表名 set 列名 = 新值 where 列名 = 某值 | 跟新符合条件的记录 |
delete from 表名 where 列名 = 值 | 删除符合条件的记录 |
insert 用于向表中插入记录,可以直接插入,也可以插入到指定列,两者的写法稍有不同,会在实例中给出。还有值得注意的是delete与drop的区别,上文中也有提到,delete的操作对象是表中的记录,而drop的操作对象是表结构。
实例2:
插入、跟新、删除表中的记录
向“student”表中插入一条、多条记录,跟新记录属性,删除记录
INSERT INTO student(id,NAME,age,address) VALUES(1,'李涵','15',''); -- 插入单条记录
INSERT INTO student(id,NAME,age,address) VALUES(2,'张涵','20',''),(3,'王珂','21','上海'),(4,'彭军','20','北京'); -- 插入多条记录
UPDATE student SET age='25' WHERE NAME='彭军'; -- 跟新记录(将彭军的年龄改为25)
DELETE FROM student WHERE NAME='王珂'; -- 删除记录
结果如下:
mysql> insert into student(id,name,age,address) values(1,'李涵','15','');
Query OK, 1 row affected (0.14 sec)
mysql> insert into student(id,name,age,address) values(2,'张涵','20',''),(3,'王珂','21','上海'),(4,'彭军','20','北京');
Query OK, 3 rows affected (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> UPDATE student SET age='25' WHERE NAME='彭军';
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE student SET age='25' WHERE NAME='彭军'; -- 跟新记录(将彭军的年龄改为25)
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> DELETE FROM student WHERE NAME='王珂'; -- 删除记录
Query OK, 1 row affected (0.11 sec)
mysql> select * from student;
+----+--------+------+---------+
| id | name | age | address |
+----+--------+------+---------+
| 1 | 李涵 | 15 | |
| 2 | 张涵 | 20 | |
| 4 | 彭军 | 25 | 北京 |
+----+--------+------+---------+
3 rows in set (0.00 sec)