SQL是一种数据库查询和程序设计语言
一、学习环境
1、MySQL安装
博主安装的MySQL版本为:mysql-5.5.59-winx64
安装下载地址为MYSQL官网,选择Windows平台,下载文件选择ZIP Archive版本(这个版本比较简洁,适合想直接用cmd运行SQL服务的初学者)。下载时会提醒你是否要登录/注册,如果选择登录务必记住自己设置的登录密码,选择下方的 no thanks可以直接下载。
将下载的zip包解压到一个想安装sql的目录下(建议目录全英文),在跟bin同界面的路径下新建一个my.ini文件,文件内容为:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=F:\mysql-5.6.17-winx64
# 设置mysql数据库的数据的存放目录
datadir=F:\mysql-5.6.17-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
注意将文件目录改写为自己的安装目录
以管理员身份打开cmd,用cd命令进入到mysql解压包中的bin目录,输入安装mysql命令:mysql install
输入启动mysql命令:net start mysql
为了方便以后使用mysql,打开控制面板->系统->高级设置->环境变量,新建环境变量MYSQL_HOME,路径填写mysql解压包路径,将这个MYSQL_HOME再添加到Path中(在Path中新建变量为:%MYSQL_HOME%\bin)
2、运行MYSQL
打开cmd,输入:mysql -uroot -p
提示要输入密码,默认为空,如果之前登录过,就输入登录密码
看到提示 mysql> 说明成功进入MySQL
3、退出/停止MySQL
先使用 quit 或者 exit 命令退出mysql
注意用quit命令退出mysql时,记得句尾加 ;
再使用命令:net stop mysql 停止mysql服务
二、使用数据库
(SQL不区分大小写,使用时,通常特殊字大写,变量与数据小写)
1、查看数据库:show databases; //记得加 ; 号
2、连接数据库:use <数据库名>;
3、在数据库中查看表:show tables;
三、创建数据库
1、创建一个数据库:create database <数据库名>;
2、使用创建好的数据库:use <数据库名>;
3、在数据库中新建表(table):create table <表名> (项目名1 数据类型(长度),项目名2......);
为了便于连表查询,建立几张表如下——
SQL有很多的数据类型,详见:SQL通用数据类型
//这里建表中用到的date默认格式为:yyyy-mm-dd,日期类型占3个字节
//int类型占4个字节
//char类型的长度是固定的,vachar类型的长度是可变的(vachar计算长度时要增加一个字节来存储长度数值)
4、向表中插入数据:insert into <表名>(项目1,项目2,...) values(数值1,数值2,....)
这里我们发现由于physics单词超出了定义允许的字符长度,所以没有完整显示出来
这时候用修改表字段命令:alter table <表名> change <旧项目> <新项目> 项目类型;
一次性插入多行数据:
同理向表record插入数据:
三、约束
SQL中常见的约束有
主键 | 默认值 | 唯一 | 外键 | 非空 |
primary key | default | unique | foreign key | not null |
1、定义主键
(1)在创建表时直接定义主键:create table A(项目一 <数据类型>primary key,......);
(2)在已定义的表中设置一个项为主键:alter table <表名> add constaint primarykey primary key(项目名);
//第一个primarykey是约束名,可以自己定义,如
2、如果一个项目被default约束,那么在它的插入数据为空时,取默认值
//为一个项目添加default约束的形式与加主键类似
3、唯一约束:这一个项目中不能有重复值
4、外键
alter table <表名1> add constraint 外键自定义名 foreign key(外键项目名) references <表名2>(主键项目)
一个表可以有多个外键,外键必须参考(references)另一个表的主键
比如说,我们要求record中的借书者id必须在读者表reader中有登记,就可以设置record中id外键参考reader主键。
这样当向record中插入一个reader中未登记的id记录时,就会提示错误。
//查看warning用命令:show warnings;
5、非空
违反非空约束在5.6以上的版本会报错,低于此版本则只有警告,不会报错
四、数据的修改删除
1、删除数据库:drop database <数据库名>;
2、删除表:drop table <表名>;
3、重命名表可以用: rename table <旧名> to <新名>;
alter table <旧名> rename <新名>;
4、在表中新增(add)、删除(drop)、修改(change)一个项目都可以用 alter 语句
(1)要想将新项目插入到指定位置,用after
5、删除一行表记录:delete from <表名> where (指定行条件)
//在sql中,由于数据表数据的存放是无序的,我们是通过条件排序获得顺序,所以通常不必指定插入行
五、其他
1、索引(index)
2、视图(view)
3、导入:load data infile '数据文件路径' into table <表名>;
4、导出(outfile)
5、备份:mysqldump -u root 数据库名 表名>备份文件名;