mysql数据库基础
2018-06-29 10:39:11 1 举报
AI智能生成
mysql数据库基础
作者其他创作
大纲/内容
MySQL关系型数据库管理系统
MySQL数据简介
MySQL的优势
运行速度快使用成本低可移植性强适用用户广
MySQL的存储引擎
MyISAM
MyISAM类型表文件*.frm:表结构定义文件*.MYD:数据文件*.MYI:索引文件
InnoDB 支持事务处理
InnoDB类型表文件*.frm:表结构定义文件ibdata1文件
Memory
CSV
MySQL安装目录
主要文件夹binincludelibshare
MySQL配置文件
my.ini:记录MySQL配置信息,可修改配置内容,如端口号,字符集等
安装版路径:C:/ProgramData/MySQL/MySQL Server 5.5/Data/
MySQL常用命令
启停数据库
net start mysql
net stop mysql
连接MySQL
mysql –h服务器主机地址 –u 用户名 –p密码
连接本机mysql –u root – p
MySQL数据库安装
下载地址https://dev.mysql.com/downloads/mysql/
SQL(Structured Query Language):结构化查询语言
DML(数据操作语言)\t用来操作数据库中所包含的数据\tINSERTUPDATEDELETE
插入INSERT
语法INTO 表名 [(字段名列表)] VALUES (值列表);
将查询结果插入新表CREATE TABLE 新表(SELECT 字段1,字段2…… FROM 原表);
如新表已存在,不能重复创建
更新UPDATE
UPDATE student SET sex = ‘女’;UPDATE student SET address = ‘北京女子职业技术学校家政班’WHERE address = ‘北京女子职业技术学校刺绣班’;
删除
语法DELETE FROM 表名 [WHERE条件];
DELETE FROM student WHERE studentName = ‘王宝宝’;TRUNCATE TABLE student;
语法TRUNCATE TABLE 表名;
TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变执行速度比DELETE语句快
DDL(数据定义语言)\t用于创建和删除数据库对象等操作\tCREATEDROPALTER
数据库操作
创建数据库CREATE DATABASE myschool;
查看数据库列表SHOW databases;
选择数据库USE myschool;
删除数据库DROP DATABASE myschool;
表操作
创建表
查看表是否存在
USE myschool;SHOW tables;
删除表
USE myschool;DROP TABLE IF EXISTS `student`;
修改表
#修改表名 ALTER TABLE 旧表名 RENAME [TO] 新表名;
#添加字段 ALTER TABLE 表名 ADD 字段名 数据类型 [属性];
#修改字段 ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
#删除字段ALTER TABLE 表名 DROP 字段名;
主外键操作
添加主键ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
ALTER TABLE `grade` ADD CONSTRAINT `pk_grade` PRIMARY KEY `grade`(`gradeId`);
添加外键ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段);
ALTER TABLE `student` ADD CONSTRAINT fk_student_grade FOREIGN KEY(`gradeId`) REFERENCES `grade` (`gradeId`);
DQL(数据查询语言)\t用来对数据库中的数据进行查询\tSELECT
查询语法SELECT <列名|表达式|函数|常量> FROM <表名> [WHERE <查询条件表达式>] [ORDER BY <排序的列名>[ASC或DESC]];
数据查询-列别名
数据查询-空行、常量列
SELECT `studentName` FROM `student` WHERE `email` IS NULL;
聚合函数
AVG()\t返回某字段的平均值
COUNT()\t返回某字段的行数
MAX()\t返回某字段的最大值
MIN()\t返回某字段的最小值
SUM()\t返回某字段的和
字符串函数
CONCAT()
语法
作用
字符串连接
举例
INSERT()
字符串替换
LOWER()
LOWER(str)
将字符串转为小写
SELECT LOWER('MySQL');返回:mysql
UPPER()
UPPER(str)
将字符串转为大写
SELECT UPPER('MySQL'); 返回:MYSQL
SUBSTRING()
字符串截取
时间日期函数
CURDATE()
作用获取当前日期
举例SELECT CURDATE();返回:2016-08-08
CURTIME()
作用获取当前时间
举例SELECT CURTIME();返回:19:19:26
NOW()
作用获取当前日期和时间
举例SELECT NOW();返回:2016-08-08 19:19:26
WEEK(date)
作用返回日期date为一年中的第几周
举例SELECT WEEK(NOW());返回:26
YEAR(date)
作用返回日期date的年份
举例SELECT YEAR(NOW());返回:2016
HOUR(time)
作用返回时间time的小时值
举例SELECT HOUR(NOW());返回:9
MINUTE(time)
作用返回时间time的分钟值
举例SELECT MINUTE(NOW());返回:43
作用返回日期参数date1和date2之间相隔的天数
作用计算日期参数date加上n天后的日期
数学函数
CEIL(x)
返回大于或等于数值x的最小整数
SELECT CEIL(2.3)返回:3
FLOOR(x)
返回小于或等于数值x的最大整数
SELECT FLOOR(2.3)返回:2
RAND()
返回0~1间的随机数
SELECT RAND()返回:0.5525468583708134
排序 ORDER BY
默认升序 asc
降序desc
LIMIT子
分页limit 语句写在所有语句的末尾
子查询
子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询
将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个
IN子查询
子查询返回不止1个值时,使用in
NOT IN子查询
EXISTS子查询
NOT EXISTS子查询
分组查询
GROUP BY子句用来分组 WHERE 子句的输出
HAVING子句用来从分组的结果中筛选行
多表连接查询
内连接(INNER JOIN)
外连接
左外连接 (LEFT JOIN)
右外连接 (RIGHT JOIN)
DCL(数据控制语言)\t用来控制数据库组件的存取许可、存取权限等\tGRANTCOMMITROLLBACK.
远程登录授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'ok' WITH GRANT OPTION;FLUSH PRIVILEGES;
MySQL数据类型
数值类型
TINYINT\t非常小的数据\t有符值: -27 ~ 27-1 无符号值:0 ~ 28-1 \t1字节
SMALLINT\t较小的数据\t有符值: -215 ~ 215-1 无符号值: 0 ~ 216-1 \t2字节
MEDIUMINT\t中等大小的数据\t有符值: -223 ~ 223-1 无符号值: 0 ~ 224-1 \t3字节
INT\t标准整数\t有符值: -231 ~ 231-1 无符号值:0 ~ 232-1 \t4字节
BIGINT\t较大的整数\t有符值: -263 ~263-1无符号值:0 ~264-1 \t8字节
FLOAT\t单精度浮点数\t±1.1754351e -38\t4字节
DOUBLE\t双精度浮点数\t±2.2250738585072014e -308\t8字节
DECIMAL\t字符串形式的浮点数\tDecimal(M,D)\tM+2个字节
字符类型
CHAR[(M)]\t定长字符串\tM字节
VARCHAR[(M)]\t可变字符串\t可变长度
TINYTEXT\t微型文本串\t0~28–1字节
TEXT\t文本串\t0~216–1字节
日期类型
DATE\tYYYY-MM-DD,日期格式\t1000-01-01~ 9999-12-31
DATETIME\t YY-MM-DD hh:mm:ss:\t1000-01-01 00:00:00 ~9999-12-31 23:59:59
TIME\thh:mm:ss: \t-835:59:59 ~ 838:59:59
TIMESTAMP\tYYYYMMDDHHMMSS\t1970年某时刻~2038年某时刻,精度为1秒
YEAR\tYYYY格式的年份\t1901~2155
MySQL字段的约束
非空约束\tNOT NULL\t字段不允许为空
默认约束\tDEFAULT\t 赋予某字段默认值
唯一约束\tUNIQUE KEY(UK)\t 设置字段的值是唯一的 允许为空,但只能有一个空值
主键约束\tPRIMARY KEY(PK)\t设置该字段为表的主键可唯一标识该表记录
外键约束\tFOREIGN KEY(FK)\t 用于在两表之间建立关系, 需要指定引用主表的哪一字段
自动增长\tAUTO_INCREMENT\t 设置该列为自增字段 默认每条自增1 通常用于设置主键
事务、存储过程
事务
MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
ACID
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
事务控制语句
BEGIN或START TRANSACTION;显式地开启一个事务;
COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;
ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
子主题
数据库设计
0 条评论
回复 删除
下一页