什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
第一. 创建数据库
语法: CREATE DATABASE 数据库名称
创建数据库
第二.删除数据库
语法: DROP DATABASE 数据库名
删除数据库
第三 ,数据类型
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
1.数值类型
数值类型
2.日期与时间类型
日期与时间类型
3.字符串类型
字符串类型
CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。
第四. 创建数据表
表的结构信息: 表名 ,表字段名, 定义表字段类型
语法:
CREATE TABLE 表名(字段名,字段类型) CREATE TABLE userinfo( user_id INT NOT NULL AUTO_INCREMENT, user_name VARCHAR(50) NOT NULL, user_password VARCHAR(50) NOT NULL, age INT NOT NULL, address VARCHAR(50), user_date DATE, PRIMARY KEY(user_id) )ENGINE=INNODB DEFAULT CHARSET=utf8;
创建表
创建成功
解释说明:
1.如果不行字段为空,可以把它设置为NOT NULL,表示插入数据时不能为空,不插入数据是会报错
2.如果想设置列为自增,可以把它设置为 AUTO_INCREMENT,这事自动增加+1,一般设为主键
3.想把那个列设置为主键,可以使用关键字 PRIMARY KEY
4.ENGINE 设置存储引擎,CHARSET 设置编码。
第五 .删除表
语法 : DROP TABLE 表名
删除表
删除成功
删除成功
第六.插入数据
语法: INSERT INTO 表名 ( 字段名1, 字段名2,...字段名N ) VALUES ( 数值1, 数值2,...数值N ); //插入数据 INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (1,"张三","123456",18,"中国",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (2,"李四","999",19,"中国",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (3,"张三","156",18,"中国",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (4,"lusi","123456",18,"美国",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (5,"王五","123",18,"",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (6,"王五","123456",34,"中国",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (7,"赵六","123",22,"中国",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (8,"aa","123456",18,"英国",NOW()); INSERT INTO userinfo (user_id,user_name,user_password,age,address,user_date) VALUES (9,"bb","234",18,"美国",NOW()); //说明 now()是一个函数,可以返回当前日期
插入数据
插入成功
插入成功
第七,查询
语法:SELECT 字段名1,字段名2.... FROM 表名
*号
说明:*号代替字段表示查询userinfo表的所以信息返回出来,正式项目中尽量不要全表查询,这样会查询很久,容易卡机
字段名
说明:查询userinfo表中的所有姓名和密码
where子句的查询
说明:WHERE关键字是判断子句的条件
题目意思是查询userinfo表中的年龄为18岁的有哪些人的名称列出来
and关键字的使用
说明:AND 关键字的使用 意思表示"与",一定要跟WHERE关键字一起使用,表示条件判断
题目说明:查询suerinfo表中年龄为18岁,并且地址为中国的,有哪些人的姓名
OR的关键字
说明:OR关键字意思表示为"或者" ,一定要跟WHERE关键字一起使用,表示条件判断
题目意思是查询userinfo表中年龄为18岁的或者地址为美国的有哪些人呢的姓名
like的关键字
说明:LIKE关键字意思是模糊查询,%:表示占位符的,一定要跟WHERE关键字一起使用
题目意思是查询userinfo表中地址第二个字为国的名字个有哪些人的姓名和地址
条件符号
条件符号说过
代码如下:
/*查询*/ SELECT * FROM userinfo SELECT user_name,user_password FROM userinfo SELECT user_name FROM userinfo WHERE age=18 SELECT user_name FROM userinfo WHERE age=18 AND address="中国" SELECT user_name,address FROM userinfo WHERE address LIKE "%国" SELECT user_name FROM userinfo WHERE age=18 OR address="美国"
第八.更新
语法: UPDATE 表名 SET 字段名1=value1,字段名2=value2... WHERE 条件
update 表名称 set 列名称=新值 where 更新条件;
说明:题目意思是把ID为9的姓名更新为"更新了"其实更新就是更新表中某个字段的数据
查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
第九 ,删除
DELETE FROM 表名 [WHERE 条件]
删除先表信息
删除先表信息
题目:请删除userinfo表id为10的这一行数据
代码如:/*删除*/ DELETE FROM userinfo WHERE user_id=10
删除后的表数据
删除说明:
1. 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
2.你可以在 WHERE 子句中指定任何条件
3.您可以在单个表中一次性删除记录。
DROP和DETELE删除关键字的有什么区别的讲解:
答:
一、delete
1、delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。
2、delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。
3、delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不变。
二. drop
1、drop是DDL,会隐式提交,所以,不能回滚,不会触发触发器。
2、drop语句删除表结构及所有数据,并将表所占用的空间全部释放。
3、drop语句将删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变为invalid状态。
第十, Mysql排序
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
语法: SELECT 字段名1,字段名2... from 表名 ORDER BY 根据哪个字段进行排序 ASC或者DESC
题目说明:根据userinfo表 于age年龄进行升序排序
代码如:SELECT * FROM userinfo ORDER BY age ASC
升序
题目说明:根据userinfo表 于age年龄进行降序排序
代码如:SELECT * FROM userinfo ORDER BY age DESC
说明:
1.你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
2.你可以设定多个字段来排序。
3.你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下, 它是按升序排列。
4 .你可以添加 WHERE...LIKE 子句来设置条件。
第十一 ,DISTINCT关键字的说明,表示去除重复的
语法: SELECT DISTINCT 字段名1,字段名2 FROM 表名;
说明
题目说明:查询userinfo表中的姓名没有重复的
最后总结:这次主运用这些关键字