1.初识MySQL
1.1什么是数据库?
概念:长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据 "仓库"
作用:保存并且能安全管理数据(增删改查)
数据库分为:
关系型数据库(SQL)
例如:MySQL , Oracle , SQL Server , SQLite , DB2 , ...
关系型数据库通过外键关联来建立表与表之间的关系
非关系型数据库(NOSQL)
例如:Redis,MongoDB
非关系型数据库通常指数据以对象的形式存储在数据库中
注解:两者一般不可分开!!!!!交互相融!!!!
2.数据库操作
2.1 结构化查询语句
数据库常用操作:
创建数据库:CREATE DATABASE IF NOT EXISTS 数据库名;删除数据库:DROP DATABASE IF EXISTS 数据库名;产看数据库:SHOW DATABASES ;使用数据库:use 数据库名;
2.2 DDL数据定义语言
2.2.1 CREAT 语法
创建数据库:
mysql>CREATE DATABASE数据库名;
如果再次创建同样的数据库名会报错,可以加上
mysql>CREATE DATABASEIF NOT EXISTS 数据库名;
创建数据库列表:
mysql>CREATE TABLE [IF NOT EXISTS] 表名;
删除数据库
mysql>DROP DATABASE [IF EXISTS] 数据库名;
删除数据库列表:
mysql>DROP TABLE [IF EXISTS] 表名;
2.2.3 ALTER语法
修改表名:
ALTER TABLE 旧表名 RENAME AS 新表名
重命名:
ALTER TABLE [表名] CHANGE [列名] [新名]
添加字段:
ALTER TABLE 表名 ADD[列名] [类型]比如:ALTER TABLE `student` ADD `id` int(4) not NULL AUTO_INCREMENT COMMENT '学号'
修改字段:
ALTER TABLE 表名 MODIFY [列名] [类型]ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [类型]
删除字段:
ALTER TABLE 表名 DROP 字段名
其他
1.使用``来避免与关键字冲突2.sql语言对大小写不敏感
2.3 DML数据操作语言
2.3.1 INSERT语法
添加数据:
INSERT INTO 表名(字段1,字段2,字段3,字段4...) VALUES('值1','值2','值'3,'值4'...)-- 例如: INSERT INTO `student`(`id`,`name`,`sex`) VALUES('01','龙傲天','男'),('02','叶良辰','男');-- 其中(字段1.....)可以省略,但是要按着格式来,一般建议打上去方便看!
2.3.2 UPDATE语法
修改数据:
UPDATE 表名 SET [列名] = [类型内容] WHERE 条件-- 例如: UPDATE `student` SET `name` = '叶问' WHERE `name` = '叶良辰' ;-- 不指定条件的情况下,会改动所有表!!!!!!!!UPDATE 表名 SET [列名] = [类型内容]
2.3.4 DELETE语法
删除数据:
DELETE FROM 表名 WHERE 条件-- 例如: DELETE FROM `student` WHERE `sex`='男';-- 不指定条件的情况下,会全部删除!!!!!!!!DELETE FROM 表名
完全清空数据:
DELETE:
DELETE FROM 表名
TRUNCATE:
TRUNCATE 表名
区别:
DELETE 不会影响自增
TRUNCATE的自增会归零
2.4 DQL数据查询语言
2.4.1 SELECT语法
查询字段:
SELECT * FROM 表名
查询指定字段:
SELECT 字段 FROM 表名
起别名:
SELECT 字段1 AS 别名,字段2 AS 别名 FROM 表名 AS 别名
函数CONCAT(a,b):
SELECT CONCAT(`名字`,`studentname` AS `新名字` FROM student-- 用于列表不那么容易懂,自己加别名上去
去除重复数据:
SELECT DISTINCT 字段 FROM 表名-- 表名中很多字段内的数据是重复,用这个命令去除重复数据
查询系统版本:
SELECT VERSION()
用来计算:
SELECT 99*100 AS `计算结果`
查询自增的步长:
SELECT @@auto_increment_increment
学员考试成绩 +1:
SELECT `StudengResult` +1 AS `提分后` FROM result
2.4.2 WHERE语法
逻辑运算符
比较运算符
模糊查询:
LIKE-- 查询姓刘的同学 -- like 结sel合 %(代表0到任意字符)_(一个字符)SELECT `StudentName'`FROM `student`WHERE `StudentName` LIKE '刘%'-- 查询2字姓刘同学 LIKE '刘_'-- 查询名字中间有龙字的同学 LIKE '%龙%'IN-- 查询学号SELECT `StudentNo`FROM `student`WHERE `StudentNo` IN (1,2,3,4,5,6)-- 查询不为空的数据SELECT `StudentNo`FROM `student`WHERE `StudentNo` IS NOT NULL-- 查询为空的数据SELECT `StudentNo`FROM 'student'WHERE `StudentNo` IS NULL
2.4.3 联表查询
JOIN方法
--查询 学号 和 成绩 SELECT `StudentNo`,`StudentResult`FROM `student` AS SINNER JOIN `result` AS rON s.`StudentNo`=r.`StudentNo`WHERE `'StudentResult'` >= 60 ORDER BY `StudentResult` ASC-- 成绩从大大小,反过来就用DESCLIMIT 1,5
ORDER BY :通过什么来排序
LIMIT (起始值,页面大小)
嵌套方法(子查询方法)
--查询 成绩 >=60的姓刘的学员学号,并且地址不为空SELECT `StudentNo`,`StudentName`FROM `student`WHERE `StudentName`LIKE '刘%' AND`StudentNo` = (SELECT `StudentNo` FROM `StudentResult`WHERE `StudentResult` >= 60 AND `StudentNo` = (SELECT `StudentNo` FROM `Address`WHERE `Address` IS NOT NULL))ORDER BY `StudentResult` ASC LIMIT 1,5