#1024程序员节|用代码,改变世界#
1.数据库和应用程序
应用程序
作用:响应操作并显示结果、向数据库请求数据 要求:美观、操作简单方便
数据库
作用:存储数据、检索数据、生成新的数据 要求:统一、安全、性能等
2.时下流行的数据库
Oracle
Oracle公司的产品 产品 免费、服务收费
SQL Server
针对不同用户群体的多个版本 易用性好
MySQL
开放源代码 网站应用广泛
MySQL的优势:
运行速度快 使用成本低 可移植性强 适用用户广
3.数据库的基本概念
数据库就是“数据”的“仓库 ” 数据库中包含表、关系以及操作对象 数据存放在表中
4.数据库管理系统(DBMS:data base manage system)
5.打开windows服务:Windows+r 输入services.msc
6.连接数据库时操作步骤:
(1.)首先打开管理员权限的cmd,输入net start musql80 开启服务(电脑每次重启都需要开启服务),然后再进普通权限的cmd,输入第(2)或(3)步骤里面的命令,如下:
(2)mysql -u root -p(-u 用户名 -p(密码) 注意:这是默认登录当前电脑省略了IP地址和端口号3306)
(3)mysql -h localhost -u root -P 端口号 -p
7.127.0.0.1或localhost(本机测试回环地址)
mysql -h 127.0.0.1
8.flush privileges:
(刷新缓冲区(设置了mysql相关配置之后,调用该命令就可以不需要重新启动mysql服务,使配置立即生效))
9.net start 服务名(例如:mysql80)(windows服务在管理员权限打开的cmd命令提示符里的启动服务命令)
net stop 服务名(例如:mysql80) :停止服务 net start 服务名(例如:mysql80) :启动服务 net restart 服务名(例如:mysql80) :重启服务
10.结构化查询语言:SQL(Structured Query Language)
名称 | 解释 | 命令举例 |
---|---|---|
DML (数据操作语言) | 用来操作数据库中所包含的数据 | INSERT UPDATE DELETE |
DDL (数据定义语言) | 用于创建和删除数据库对象等操作 | CREATE DROP ALTER |
DQL (数据查询语言) | 用来对数据库中的数据进行查询 | SELECT |
DCL (数据控制语言) | 用来控制数据库组件的存取许可、存取权限等 | GRANT COMMIT ROLLBACK |
11.SQL中的运算符
一种符号,它是用来进行列间或者变量之间的比较和数学运算 包括算术运算符、赋值运算符、比较运算符、逻辑
运算符 | 说 明 |
---|---|
+ | 加运算,求两个数或表达式相加的和,如6+8 |
- | 减运算,求两个数或表达式相减的差 |
* | 乘运算,求两个数或表达式相乘的积 |
/ | 除运算,求两个数或表达式相除的商,如5/3的值为1 |
% | 取模运算,求两个数或表达式相除的余数,如:5%3的值为2 |
赋值运算符:=
把一个数或变量或表达式赋值给另一变量,如:Name='王华'
逻辑运算符
运算符 | 说 明 |
---|---|
AND | 当且仅当两个布尔表达式都为true时,返回TRUE。 |
OR | 当且仅当两个布尔表达式都为false,返回FALSE。 |
NOT | 布尔表达式的值取反 |
比较运算符
运算符 | 说 明 |
---|---|
= | 等于,例如:age=23 |
> | 大于,例如:price>100 |
小于 | |
<> | 不等于 |
>= | 大于等于 |
小于等于 | |
!= | 不等于(非SQL-92标准 ) |
12.创建数据库
语法:
CREATE DATABASE 数据库名;
示例:
CREATE DATABASE myschool;
13.查看数据库列表
语法:
SHOW databases;
14.选择数据库
语法:
USE 数据库名;
示例:
USE mybase; USE myschool;
15.删除数据库
语法:
DROP DATABASE 数据库名;
示例:
DROP DATABASE myschool;
16.安装mysql压缩包版本
1..下载相关压缩包版本
2.编写my.ini配置文件好之后并保存到解压好的mysql文件夹里
3. 管理员启动CMD,输入安装windows服务命令:sc install 服务名(安装windows服务) net start 服务名
4.服务启动失败,自己找错误代码原因
5.删除:以管理员的身份启动cmd =>进入mysql 的 bin 路劲 => 输入mysqld --remove,添加成功之后执行net stop mysql 命令关闭mysql服务
17.MySQL数据类型
类型 | 说明 | 取值范围 | 存储需求 |
---|---|---|---|
TINYINT | 非常小的数据 | 有符值: -27 ~ 27-1 无符号值:0 ~ 28-1 | 1字节 |
SMALLINT | 较小的数据 | 有符值: -215 ~ 215-1 无符号值: 0 ~ 216-1 | 2字节 |
MEDIUMINT | 中等大小的数据 | 有符值: -223 ~ 223-1 无符号值: 0 ~ 224-1 | 3字节 |
INT | 标准整数 | 有符值: -231 ~ 231-1 无符号值:0 ~ 232-1 | 4字节 |
BIGINT | 较大的整数 | 有符值: -263 ~263-1 无符号值:0 ~264-1 | 8字节 |
FLOAT | 单精度浮点数 | ±1.1754351e -38 | 4字节 |
DOUBLE | 双精度浮点数 | ±2.2250738585072014e -308 | 8字节 |
DECIMAL | 字符串形式的浮点数(用于涉及到金钱的计算,不会丢失精度) | Decimal(M,D) | M+2个字节 |
(1) UNSIGNED属性
标识为无符号数
示例:
CREATE TABLE `tb_type` ( `sid` INT(4) ZEROFILL); INSERT INTO `tb_type1` VALUE(12) ,(1234),(123456);
(2)ZEROFILL属性
宽度(位数)不足以0填充
(3)若某数值字段指定了ZEROFILL属性, 将自动添加UNSIGNED属性
18.字符串、日期类型
字符串类型 | 说明 | 长度 |
---|---|---|
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 |
TIME | hh:mm:ss: | -835:59:59 ~ 838:59:59 |
TIMESTAMP(时间戳) | YYYYMMDDHHMMSS | 1970年某时刻~2038年某时刻,精度为1秒 |
YEAR | YYYY格式的年份 | 1901~2155 |
19.创建表
语法:
CREATE TABLE [IF NOT EXISTS] 表名 ( 字段1 数据类型 [字段属性|约束][索引][注释], …… 字段n 数据类型 [字段属性|约束][索引][注释] )[表类型][表字符集][注释];
示例:
#创建学生表 CREATE TABLE `student`( `studentNo` INT(4) PRIMARY KEY, ` name` CHAR(10), ……);
多字段使用逗号分隔
保留字用撇号括起来
单行注释:#...... 多行注释:/*……*/
20.字段的约束及属性
名称 | 关键字 | 说明 |
---|---|---|
非空约束 | NOT NULL | 字段不允许为空 |
默认约束 | DEFAULT | 赋予某字段默认值 |
唯一约束 | UNIQUE KEY(UK) | 设置字段的值是唯一的 允许为空,但只能有一个空值 |
主键约束 | PRIMARY KEY(PK) | 设置该字段为表的主键 可唯一标识该表记录 |
外键约束 | FOREIGN KEY(FK) | 用于在两表之间建立关系, 需要指定引用主表的哪一字段 |
自动增长 | AUTO_INCREMENT | 设置该列为自增字段 默认每条自增1 通常用于设置主键 |
(1)主键
CREATE TABLE student( `studentNo` INT(4) PRIMARY KEY, ……);
(2.)注释
CREATE TABLE test ( `id` int(11) UNSIGNED COMMENT ‘编号’//注释此字段为编号字段 )COMMENT='测试表’ ;//注释此表为测试表
(3)设置字符集编码
CREATE TABLE [IF NOT EXISTS] 表名( #省略代码 )CHARSET = 字符集名;
21.创建学生表
/*如果表存在,先删除*/
DROP TABLE IF EXISTS `student`;
/*创建学生表*/
CREATE TABLE `student` (
`studentNo` int(4) primary key auto_increment comment '学号',
`loginPwd` varchar(20) not null comment '密码',
`studentName` varchar(50) not null comment '姓名',
`sex` char(2) not null default '男' comment '性别',
`gradeID` int(4) comment '年级表ID外键',
`phone` varchar(50) comment '电子邮箱',
`address` varchar(255) default '地址不详' comment '地址',
`bornDate` datetime,
`email` varchar(50) comment '电子邮箱',
`iddentityCard` varchar(18) unique key comment '身份证号'
);
22.查看表(避免DOS窗口乱码,可执行SET NAMES gbk;)
(1)查看表是否存在
示例:
USE myschool; SHOW tables;
(2)查看表定义
DESCRIBE 表名; 或 DESC 表名;
示例:
USE myschool; DESCRIBE `student`;
23.删除表(在删除表之前,先使用IF EXISTS语句验证表是否存在 )
语法:
DROP TABLE [IF EXISTS] 表名;
示例:
USE myschool; DROP TABLE IF EXISTS `student`;
24.修改表(重点)
#修改表名 ALTER TABLE 旧表名 RENAME [TO] 新表名; #添加字段 ALTER TABLE 表名 ADD 字段名 数据类型 [属性]; #修改字段 ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性]; #删除字段 ALTER TABLE 表名 DROP 字段名;
25.添加主键
语法一:(后期想要设置字段为主键的添加方法,原来不存在)
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
示例:设置grade表中gradeID字段为主键
ALTER TABLE `grade` ADD CONSTRAINT `pk_grade` PRIMARY KEY `grade`(`gradeId`);
语法二:(建表时就直接添加的方法)
`id` int(4) primary key auto_increment comment '年级编号',
26.添加外键
语法:
ALTER TABLE 从表表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段) REFERENCES 主表表名(关联字段);
示例:将student表的gradeID字段和grade表的gradeID字段建立外键关联
ALTER TABLE `student` ADD CONSTRAINT fk_student_grade FOREIGN KEY(`gradeId`) REFERENCES `grade` (`gradeId`);
27.MySQL系统帮助
语法:
HELP 查询内容;
示例:
HELP contents; HELP Data Types; HELP INT;
28.总结