1.初始MySQL
搭建Web环境初识JSP本课任务使用SQL语句创建数据库myschool使用SQL语句创建学生表student使用SQL语句创建科目表subject使用SQL语句创建成绩表result使用SQL语句创建/删除年纪表grade数据库中包含表、关系以及操作对象本科目标--学完本门课程后,你能够:进行复杂度较高的数据交换业务处理灵活操作数据库中的...
搭建Web环境初识JSP
- 本课任务
- 使用SQL语句创建数据库myschool
- 使用SQL语句创建学生表student
- 使用SQL语句创建科目表subject
- 使用SQL语句创建成绩表result
- 使用SQL语句创建/删除年级表grade
- 数据库中包含表、关系以及操作对象
- 本科目标--学完本门课程后,你能够:
- 进行复杂度较高的数据交换业务处理
- 灵活操作数据库中的数据
- 掌握数据库设计技能
- 本章目标
- 了解数据库的相关知识
- 掌握MySQL在Windows系统中的安装方法
- 学会使用SQLyog数据库管理工具
- 掌握MySQL命令行操作数据库常用命令
- 了解SQL的相关概念
- 掌握创建库的SQL语句
- 掌握创建数据表以及数据字段的类型和属性
- 掌握修改表的SQL语句
- 为何需要数据库
存储数据的方法
-
-
- 第一种方法:用大脑来记住数据
- 第二种方法:写在纸上
- 第三种方法:写在计算机的内存中
- 第四种方法:写成磁盘文件
- ……
-
- 数据库能够做些什么?
- 存储大量数据,方便检索和访问
- 保持数据信心的一致、完整
- 共享和安全
- 通过组合分析,产生新的有用的信息
- 数据库和应用程序
- 应用程序
- 作用:响应操作并显示结果,向数据库请求数据
- 要求:美观、操作简单方便
- 数据库
- 作用:储存数据、检索数据、生成新的数据
- 要求:统一、安全、性能等
- 应用程序
- 时下流行的数据库
- Oracle
- MySql
- Sqlyog
- PlSql
- 。。。。
Oracle公司的产品
产品免费、服务收费
-
- SQL Server
针对不同的用户群体的多个版本
易用性好
-
- MySQL
开放源代码
网站应用广泛
- 数据库的基本概念
- 数据库就是“数据”的“仓库”
- 数据库中包含表、关系以及操作对象
- 数据存放在表中
- 列--字段
行--记录
- MySQL简介
MySQL的优势
DNMS: database management syste
- 运行速度快
- 适用用户广
- 可移植性强
- 使用成本低
- MySQL的运行机制
支持接口:
标准C的API、JDBC、CDBC、.NET、PHP、Python、Perl、Ruby、Cobol
- MySQL的配置
- 使用配置向导配置
- 端口号:3306
- 默认字符集:utf-8
- 将bin目录写入
- 环境变量
- root密码设置
- utf8:一种Unicode编码,解决国际上字符不统一的多字节编码,通用性强
- 使用配置向导配置
- MySQL安装目录
主要文件夹
bin
include
lib
share
my.ini:记录MySQL配置信息,可修改配置内容,如端口号,字符集等
- 命令行连接MySQL---net start mysql
- 检查是否启动服务
- 启动方式
- 属性窗口
- DOS命令
如果修改了配置文件,必须重启MySQL服务才能生效
- 命令行连接MySQL
语法:
mysql -h服务器主机地址-u 用户名 -p密码
示例:
mysql -u root -proot
mysql -u root -p
- DOS下运行
- MySQL Command Line Client
默认root登录,仅输入密码
- 连接数据库: -------标准格式
- . mysql -hlocalhost -uroot -pkgc
- show databases;
- use **(表示数据库);
- show tables;
- 如何通过命令更改用户(root)信息:
use mysql;
select * form user\G
update user set password=password(新密码)
where user=’root’;
flush privileges;
- exit; 退出
- ?寻求帮助
- 结构化查询语言
SQL(Structured Query Language):结构化查询语言
名称 | 解释 | 命令举例 |
DML(数据库操作语言) | 用来操作数据库中所包含的数据 | INSERT--插入 UPDATE--更新 DELETE--删除 |
DDL(数据定义语言) | 用于创建和删除数据库对象等操作 | CREATE--创建 DROP--终止 ALTER--改变 |
DQL(数据查询语言) | 用来对数据库中的数据进行查询 | SELECT--挑选、选择 |
DCL(数据控制语言) | 用来控制数据库组建的存取许可、存取权限等 | GRANT--同意、许可 COMMIT--承诺、交托给 ROLLBACK--反转、回降 |
create drop alter insert update delete select grant commit rollback
创建 删除 修改 增加 修改 删除 查询 同意 承诺 反转、回降
- 命令行操作数据库:
创建数据库:
CREATE DATABASE [IF NOT EXISTS] 数据库名 ;
删除数据库:
DROP DATABASE [IF EXISTS] 数据库名 ;
查看数据库:
SHOW DATABASES;
使用数据库:
USE 数据库名;
对比工具操作数据库:
建库;
学习方法:
- 对照SQLyog工具自动生成的语句学习
- 固定语法中的单词需要记忆
- SQL中的运算符3-1
- 算术运算符
- 一种符号,它是用来进行列间或者变量之间的比较和数学运算
- 包括算术运算符、赋值运算符、比较运算符、逻辑运算符
- 算术运算符
运算符 | 说明 |
+ | 加运算,求两个数或表达式相加的和,如6+8 |
- | 减运算,求两个数或表达式相减的差 |
* | 乘运算,求两个数或表达式相乘的积 |
/ | 除运算,求两个数或表达式相除的商,如5/3的值为1 |
% | 取模运算,求两个数或表达式相除的余数,如:5%3的值为2 |
-
- SQL中的运算符3-2
- 赋值运算符
- SQL中的运算符3-2
运算符 | 说明 |
= | 把一个数或变量或表达式赋值给另一变量,如:Name='王华' |
-
-
- 逻辑运算符
-
运算符 | 说明 |
AND | 当且仅当两个布尔表达式都为true时,返回TRUE。 |
OR | 当且仅当两个布尔表达式都为false,返回FALSE。 |
NOT | 布尔表达式的值取反 |
-
-
- 比较运算符
-
运算符 | 说明 |
= | 等于,例如:age=23 |
> | 大于,例如:price>100 |
< | 小于 |
<> | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于(非SQL-92标准 ) |
- 系统数据库和用户数据库
- 创建数据库
语法:
CREATE DATABASE 数据库名;
示例;
CREATE DATABASE myschool; ----分号是结束符,不可缺
- 查看数据库列表
语法:
SHOW databases;
- 选择数据库
数据:
USE 数据库名
示例:
USE mybase;
USE myschool;
- 删除数据库
语法:
DROP DATABASE 数据库名;
示例:
DROP DATABASE myschool;
- SQLyog管理工具
SQLyog-----图形的MySQL管理工具
免费
简洁高效
功能强大
- MySQL数据类型——数值类型2-1
- MySQL数据类型——数值类型
数据字段属性:
UNSIGNED
无符号的
声明该数列不允许负数
ZEROFILL
0填充的
不足位数的用0来填充,如int(3).5则为005
AUTO_INCREMENT
自动增长的。每添加一条数据,自动在上一记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长
示例:
#创建学生表
CREATE TABLE `student`(
`studentNo` INT(4) PRIMARY KEY,
` name` CHAR(10),
……);
- 数据字段属性2-2:
NULL值:
理解为“没有值”或者“未知值”;
不要用NULL进行算术运算,否则结果仍为NULL。
如何选择数值类型:
- 整数和浮点
- 日期类型
- char和varchar
- 例题:
#查看数据库库的定义
SHOW CREATE DATABASE school;
#查看数据表的定义
SHOW CREATE TABLE student;
#显示表结构
DESC student;
#创建一个测试表
CREATE TABLE test(
col INT(4) (ZEROFILL ) NOT NULL
)
#设置严格检查模式
SET sql_mode='strict_trans_tables';
#自增列:默认初始值为1,步长4
#能否改变自增列的初始值?改为100
方法一:#只是影响当前表
CREATE TABLE tab1(
id INT(4) PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL
)AUTO_INCREMENT =100;
#能否改变自增列的步长? 5
方法二:#影响所有使用的自增列表
#同一个列可以被多个属性来修饰,但是要注意属性顺序
SET @@auto_increment_increment=5;
注释:给字段注释---comment
给表注释------comment=
#查看mysql所支持的引擎类型(表类型)
SHOW ENGINES;
#查看默认引擎
SHOW VARIABLES LIKE 'storage_engine';
- MySQL数据类型——字符串、日期类型
字符串类型 | 说明 | 长度 |
CHAR[(M)] | 固定长度字符串 | M字节 |
VARCHAR[(M)] | 可变长度字符串 | 可变长度 |
TINYTEXT | 微型文本串 | 0~28–1字节 |
TEXT | 文本串 | 0~216–1字节 |
日期类型 | 格式 | 取值范围 |
DATE | YYYY-MM-DD,日期格式 | 1000-01-01~ 9999-12-31 |
DATETIME | YY-MM-DD hh:mm:ss: | 1000-01-01 00:00:00 ~9999-12-31 23:59:59 |
TIMESTAMP | YYYYMMDDHHMMSS | 1970年某时刻~2038年某时刻,精度为1秒 |
YEAR | YYYY格式的年份 | 1901~2155 |
TIME | hh:mm:ss: | -835:59:59 ~ 838:59:59 |
- 创建表---属于DDL的一种 `
语法:
CREATE TABLE [IF NOT EXISTS] 表名 (
字段名1 数据/列类型 [字段属性|约束][索引][注释] ,
……
字段名n 数据/列类型 [字段属性|约束][索引][注释] --最后一个没有 ,
) [表类型][表字符集][注释];
1.多段字使用逗号分隔
2.保留字用撇号括起来
3.单行注释: #......
4.多行注释: /*...*/
5. `反引号:可选、区别于单引号,作用是区分MySQL保留字与普通字符。
列类型:
规定数据库中该列存放的数据类型;
分为:
- 数值类型
- 字符串类型
- 日期和时间型数值类型
- NULL值
- 数值类型:----取值范围不同,存储字节不同
tinyint 非常小的数据
smallint 较小的数据
mediumint 中等大小的数据
int ()bigint 标准整数
float 单精度浮点数
double 双精度浮点数
decimal 字符串形式的浮点数
字符串类型:
char[(M)] 固定长字符串,检索快但费时间
barchar[(M)] 可变字符串
tinytext 微型文本串
text 文本串
日期和时间型数值类型:
DATA YYYY-MM-DD
TIME Hh:mm:ss
DATETIME YY-MM-DD hh:mm:ss
TIMESTAMP YYYYMMDDhhmmss
YEAR YYYY
- 数据表的类型:
MySQL的数据表的类型:
MyISAM,InnoDB,HEAP,BOB,CSV等
常见的MyISAM与InnoDB类型
名称 | MyISAM | InnoDB |
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大、约2倍 |
适用场合:
使用MyIASM:节约空间及相应速度较快; ------------------查
使用InnoDB:安全性,可以用于事务处理及多用户操作数据表。----增删改
- 数据表的存储位置
MySQL数据表以文件方式存放在磁盘中
- 包括表文件、数据文件以及数据库的选项文件
- 位置:MySQL安装目录\data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表。
注意:
InnoDB类型数据表只有一个*.frm文件,以及上一级目录的ibdata1文件
MySQL类型数据表对应三个文件:
*.frm --- 表结构定义文件
*.MYD ---数据文件
*.MYI ----索引文件
示例:
#设置库的字符
CREATE DATABASE `school`
/*
!40100 default character set utf8
#设置表的字符集
engine=innoDB auto_increment=3 default charset=utf8
#设置字段/这一列的字符集
create table a(
address char(5) character set sbk
)
*/
- 字段的约束及属性3-1
名称 | 关键字 | 说明 |
非空约束 | NOT NULL | 字段不允许为空 |
默认约束 | DEFAULT | 赋予某字段默认值 |
唯一约束 | UNIQUE KEY(UK) (unique key) | 设置字段的值是唯一的允许为空,但只能有一个空值 |
主键约束 | PRIMARY KEY(PK) (primary key) | 设置该字段为表的主键可唯一标识该表记录 |
外键约束 | FOREIGN KEY(FK) (foreign key) | 用于在两表之间坚力关系,需要指定引用主表的哪一字段 |
自动增长 | AUTO_INCREMENT (increment) | 设置该列为自增字段 默认每条自增1 通常用于设置主键 |
- 字段的约束及属性3-2
主键:
CREATE TABLE student(
`studentNo` INT(4) PRIMARY KEY,
……);
给加注释:
CREATE TABLE test (
`id` int(11) UNSIGNED COMMENT‘编号’
)COMMENT='测试表’ ;
设置字符集编码:
CREATE TABLE [IF NOT EXISTS] 表名(
#省略代码
)CHARSET = 字符集名;
- 设置外键联系:
ALTER TABLE `student` ADD CONSTRAINT fk_student_grade
FOREIGN KEY(`gradeId`)
REFERENCES `grade`(`gradeId`);
把grade表里面的主键gradeid,拿来放在student表里面当作外键!
- 字段的约束及属性3-3
在myschool数据库中创建学生表
- 字段的约束及属性
示例:
CREATE TABLE `student`(
`studentNo` INT(4) NOT NULL COMMENT '学号' PRIMARY KEY,
`loginPwd` VARCHAR(20) NOT NULL COMMENT '密码',
`studentName` VARCHAR(50) NOT NULL COMMENT '学生姓名',
`sex` CHAR(2) DEFAULT '男' NOT NULL COMMENT '性别',
`gradeId` INT(4) UNSIGNED COMMENT '年级编号',
`phone` VARCHAR(50) COMMENT '联系电话',
`address` VARCHAR(255) DEFAULT '地址不详'COMMENT '地址', `bornDate` DATETIME COMMENT '出生时间',
`email` VARCHAR(50) COMMENT'邮件账号',
` identityCard ` VARCHAR(18) UNIQUE KEY COMMENT '身份证号'
) COMMENT='学生表';
- 查看表
查看表是否存在:--先使用数据库,才能查看表~
示例:
USE myschool;
SHOW tables;
查看表定义:
语法:
DESCRIBE 表名;
或者
DESC 表名;
示例:
USE myschool;
DESCRIBE student;
避免DOS窗口乱码,可执行SET NAMES gbk;
- 删除表
语法:
DROP TABLE [IF EXISTS] 表名;
示例:
USE myschool;
DROP TABLE IF EXISTS student;
在删除表之前,先使用IF EXISTS语句验证表是否存在
- 修改表2-1
语法:
#修改表名
ALTER TABLE 旧表名 RENAME [TO] AS 新表名;
#添加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [属性];
#修改字段
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
#删除字段
ALTER TABLE 表名 DROP 字段名;
#删除数据表
DROP TABLE [IF EXISTS] 表名
- IF EXISTS为可选,判断是否存在该数据表
- 如删除不存在的数据表会抛出错误
示例:
#重命名表school
ALTER TABLE tab RENAME AS table;
#为表添加列
ALTER TABLE table ADD address VARCHAR(100) DEFAULT '中国北京';
#修改字段
ALTER TABLE table1 MODIFY address VARCHAR(500) DEFAULT '中国北京朝阳区';
ALTER TABLE table1 CHANGE 旧地址 新地址 VARCHAR(100) DEFAULT '中国北京朝阳区';
#删除字段
ALTER TABLE table1 DROP 地址;
#删除数据表
DROP TABLE IF exist tab1;
- 修改表2-2
示例:
DROP TABLE IF EXISTS `demo01`;
#创建表
CREATE TABLE `demo01`(
`id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(8) NOT NULL
);
#修改表名
ALTER TABLE `demo01` RENAME `demo02`;
#添加字段
ALTER TABLE ` demo02 ` ADD `password` VARCHAR(32) NOT NULL;
#修改字段
ALTER TABLE ` demo02 ` CHANGE `name` `username`CHAR(10) NOT NULL;
#删除字段
ALTER TABLE ` demo02 ` DROP `password`;
- 小结
阅读以下代码,哪些SQL语句可以实现修改表?
1)ALTER TABLE mybook RENAME book;-----------------修改表名
2)ALTER TABLE book ADD author varchar(10) NOT NULL;---------添加字段
3)ALTER TABLE `book` ADD `pk_book` PRIMARY KEY `book`(`bookId`);--缺少约束词
4)ALTER TABLE `book` DROP ·author `;------------删除字段
- MySQL系统帮助
语法:
HELP 查询内容;
示例:
HELP contents;
HELP Data Types;
HELP INT;
- 总结
更多推荐
所有评论(0)