给定一个场景,学生选课系统为例。
主要关系:
学生(学号,姓名,年龄,性别,电话)
课程(课程ID,课程名称)
成绩(学生ID,课程ID,成绩)
1、创建数据库
使用 create database 语句可完成对数据库的创建, 创建命令的格式如下:
create database 数据库名 [其他选项];
eg:
create database stu_cou character set gbk;
为了便于在命令提示符下显示中文, 在创建时通过 character set gbk 将数据库字符编码指定为 gbk。
注意: MySQL语句以分号(;)作为语句的结束;可以使用 show databases; 命令查看已经创建了哪些数据库。
2、使用数据库
要对一个数据库进行操作, 必须先选择该数据库, 否则会提示错误:
ERROR 1046(3D000): No database selected
在登录后使用 use 语句指定:
use 数据库名;
use 语句可以不加分号, 执行 use samp_db 来选择刚刚创建的数据库, 选择成功后会提示: Database changed
3、创建数据库表
使用 create table 语句可完成对表的创建, 创建命令的格式如下:
create table 表名称(列声明);
以创建本例三张表为例,:
IF EXISTS(SELECT id FROM sysobjects WHERE name='Student') DROP Table Student Create table Student ( SID varchar(20) primary key not null, SName varchar(20), SAge int, SSex char(2),
STel char(13) null default "-"
);
IF EXISTS(SELECT id FROM sysobjects WHERE name='Course') BEGIN DROP Table Course END Create table Course ( CID varchar(20) primary key not null, CName varchar(50) not null )
IF EXISTS(SELECT id FROM sysobjects WHERE name='SC') DROP TABLE SC Create table SC ( SID varchar(20) not null, CID varchar(20) not null, SScore int ) alter table SC add constraint PK_SC primary key(SID,CID)
对于一些较长的语句在命令提示符下可能容易输错, 因此我们可以通过任何文本编辑器将语句输入好后保存为 createtable.sql 的文件中, 通过命令提示符下的文件重定向执行执行该脚本。
打开命令提示符, 输入: mysql -D Student -u root -p < createtable.sql
(提示: 1.如果连接远程主机请加上 -h 指令; 2. createtable.sql 文件若不在当前工作目录下需指定文件的完整路径。)
4、操作数据库
(1)插入:insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
其中 [] 内的内容是可选的
eg:
要给 stu_cou 数据库中的 Student 表插入一条记录, 执行语句:
insert into Student values(NULL,"张三","男",20);
有时我们只需要插入部分数据, 或者不按照列的顺序进行插入, 可以使用这样的形式进行插入:
insert into Student (SID, SName, SAge) values("李四", "女", 21);
(2)查询:select 列名称 from 表名称 [查询条件];
eg:
查询 Student 表中所有学生的名字和年龄, 输入语句 select SName, SAge from Student;
where 关键词用于指定查询条件, 用法形式为: select 列名称 from 表名称 where 条件;
查询所有性别为女的信息: select * from Student where SSex="女";
查询id小于5且年龄大于20的所有人信息: select * from Student whereSID<5 and SAge>20;
可以使用通配符 * 查询表中所有的内容, 语句: select * from Student;
(3)更新:update 表名称 set 列名称=新值 更新条件;
eg:
将所有人的年龄增加1: update Student set SAge=SAge+1;
将SID为2的姓名改为 "王五", 年龄改为 19: update Student set SName="王五", SAge=19 where SID=2;
(4)删除:delete from 表名称 删除条件;
eg:
删除SID为2的行: delete from Student where SID=2;
删除所有年龄小于21岁的数据: delete from Student where SAge<20;
删除表中的所有数据: delete from Student;
5、表的修改
alter table 语句, 基础用法如下:
添加列
基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];
eg:
在表的最后追加列 SAddress: alter table Student add SAddress char(60);
在名为 SQAge 的列后插入列 SBirthday: alter table Student add SBirthday date after SAge;
修改列
基本形式: alter table 表名 change 列名称 列新名称 新数据类型;
eg:
将表 STel 列改名为 STelphone: alter table students change STel STelphone char(13) default "-";
将 SName 列的数据类型改为 char(16): alter table Student change SName SName char(16) not null;
删除列
基本形式: alter table 表名 drop 列名称;
eg:
删除 SBirthday 列: alter table Student drop SBirthday;
重命名表
基本形式: alter table 表名 rename 新表名;
eg:
重命名 Student 表为 stu: alter table Student rename stu;
删除整张表
基本形式: drop table 表名;
eg:
删除stu 表: drop table stu;
删除整个数据库
基本形式: drop database 数据库名;
示例: 删除 stu_cou 数据库: drop database stu_cou;
6、预设数据内容