MySQl数据库基础

本文介绍了MySQL数据库的基础操作,包括创建和删除数据库,选中并操作数据库,创建和删除数据表,以及各种数据类型的详细说明。在操作数据库时,需要注意使用英文字符,并理解不同数据类型的特点和用途。

数据库的操作

数据库的操作

在MySQL中可以容纳很多数据库,一个数据库下可以容纳很多表;
注意:在数据库中的操作,除了中文内容,其他符号都要用英文字符,否则会操作失败。

数据库基础

注:本次博客中[ ] 表示里面的语句可加可不加; db_name表示自定义的数据库名 ; table_name表示数据库下自定义的表名;
查看数据库: show databases;
创建数据库: create database db_name;
删除数据库: drop database db_name;
使用/选中数据库: use db_name;
查看数据库下的表: show tables;
在数据库下创建表: create table table_name(fide1 datatype; fide2 datatype;fide3 datapyte, …);()括号内部是所创建表的字段以及每个字段的数据类型;
删除数据库下的表: drop table table_name;

创建数据库及数据库下的表

查看数据库的语句:show databases; (SHOW DATABASES;)
例如:在这里插入图片描述

创建数据库的语句:create database [if not exists] db_name;(CREATE DATABASE [IF NOT EXISTS] db_name;
意思是创建一个数据库,如果该数据库不存在,则创建,反之不创建;
[if not exists]可以写可以不写,如果你知道你创建的数据库存在就可以不加,加上这句语句则更见严谨。
创建成功会出现:Query OK, 1 row affected(0.01 sec);意为对数据库信息的请求成功,一行数据收到影响(用时0.01秒);这一行数据就是你创建的一个数据库。
例如:在这里插入图片描述
使用/选中数据库:use db_name; (USEdb_name;)
显示 Database changed(数据库已更改)表示操作成功。如果要对数据库进行操作,必须要选中数据库后才能操作。
例如:在这里插入图片描述
删除数据库:drop database [if exists] db_name;(DROP DATABASE [IF EXISTS] db_name;)(数据库存在则删除,反之不进行操作)
同创建数据库一样,[if exists] 也可以不写,数据库删除以后,MySQL内部就看不到对应的数据库了,而数据库下的表和数据也会被删除。
警告:数据库的删除很危险,因为一旦数据库被删除了,那么会造成数据的丢失,那么通过常规手段很难恢复。所以一般不要进行数据库的。
进行删除操作后出现Query OK, 0 rows affected(0.62 sec)
例如:
在这里插入图片描述
创建数据库下的数据表:create table [if not exists] table_name( filed datatype);
例如:
在这里插入图片描述
注:comment可以对字段进行说明;说明内容要用单引号括起来。
查看数据库下的表:show tables;
例如:
在这里插入图片描述

查看表的结构:desc table_name;
例如:
在这里插入图片描述
删除数据库下的表:drop table table_name;
例如:
在这里插入图片描述

数据类型

MySQL的数据类型:bit[(M)] ,tinyint , smallint , int , bigint , float(M,D) , double (M,D) , decimal(M,D) , numeric(M,D) , varchar(size) , text , mediumtext , blob , datetime , timestamp ;
bit[(M)](M指定位数,默认为1)(二进制数,M的范围从1到64,存储范围从0到2M-1)(常用Boolean 对应bit ,即只能存0,1);
tinyint (1个字节)(对应java中的Byte);
smallint(2个字节)(对应java中的short);
int (4个字节)(对应java中的Integer);
bigint (8个字节)(对应java中的long);
float(M,D)(4个字节)(单精度,M指定长度,D指定小数位数。会发生精度丢失)(对应java中的float);
double (M,D) (8个字节)(对应java中的double);
decimal(M,D) (大小为M/D最大值+2)(双精度,M指定长度,D指定小数位数。精确数值)(对应java中的BigDecimal);
numeric(M,D)(大小为M/D最大值+2)(双精度,M指定长度,D指定小数位数。精确数值)(对应java中的BigDecimal);
varchar(size)(0 - 65535字节)(可变长度字符串)(对应java中String);
text (0 - 65535字节)(长文本数据)(对应java中String);
mediumtext(0 - 165777215字节)(中等长度文本数据)(对应java中String);
blob(0 - 65535字节)(二进制形式的长文本数据)(对应java中byte[ ] );
datetime(8个字节)(范围从1000到9999年,不会进行时区的检索及转换)(对应java.util.Data、java.sql.Timestamp);
timestamp(四个字节)(范围从1970到2038年,自动进行当前时区的检索并转换)(对应java.util.Data、java.sql.Timestamp);

创建一个数据库及库下的表并删除

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、基本命令 1、启动服务, 已管理员身份运行cmd net satrt mysql 2、停止服务 net stop 服务名称 3、连接数据库 mysql -u 用户名 -p 4、断开连接 输入exit或quit 5、查看mysql版本:select version(); 6.查看当前时间select now(); 7、远程连接 mysql -h ip地址 -u 用户名 -p 二、数据库操作 1、创建数据库: create database 数据库名 charset = utf8; 2、删除数据库 :drop database 数据库名; 3、切换数据库 use 数据库名 4、查看当前选择的数据库 select database(); 5、查看有多少数据库: show databases; 三、表操作 1、查看当前数据库所有表show tables; 2、创建表 create table 表名(列及类型) creat table student(id int auto_increment primary key,name varchar(20) not null,age int not null,gender bit default 1,address varchar(20), isDelete bit default 0) 3、删除表 drop table 表名; 4、查看表结构desc 表名; 5、查看建表语句show create table 表名; 5、重命名表名: rename table 原表名 to 新表名; 6、修改表结构 alter table 表名 add|change|drop 列名 数据类型 7、数据修改: 1、增加数据: a: 全列插入:insert into 表名 values(0,”lin”,”yellow”,200,0) 说明:主键是不用输入的,但是全列插入时要用0占位,实际以自动生成的为准 b:缺省插入:有默认值而却不需要添加时使用 Insert into 表名(列名1,列名2......) values(值1,值2.......) C:多条插入:insert into 表名 values(值1,值2,。。),(值1,值2,。。。) 多条插入也支持缺省输入 2、删除数据 delete from 表名 where 条件; delete from stu where id = 9; 没有条件是全部删除,慎用 3、改数据 update 表名 set 列1 =值1,列2 = 值2 where 条件; 不写条件就都修改了 4、查询数据: a:查询表中全部数据 select * from 表名; 四、查数据 1、基本语法 格式:select * from 表名; 说明: a、from关键字后面是表名,表示数据来源于这个表 b、Select后面写表中的列名,如果是*表示在结果集中显示表中的所有列。 c、在select后面的列名部分,可以使用as为列名起别名,这个别名显示在结果集中,但是再用别名找找不到该列。 d、如果想查询多个列,之间用逗号分隔 2、消除重复行 在select后面列的前面使用distinct可以不显示重复的行 3、条件查寻 a、语法: Select * from 表名 where 条件 B、比较运算符: 等于 = 大于> 小于 < 大于等于>= 小于等于<= 不等于!=或<> b、逻辑运算符 And or not C、模糊查寻 Like %表示任意多个字符 _表示一个任意字符 D、范围查询 In 表示在一个非连续的范围内 Between.......and.............表示在一个连续的范围内 需求:查询编号是8,10,12的数据 实例:select * from stu where id in (8,10,12); 需求:查询id在6-8的学生 E、空判断 注意null 与””不同 判断空:is null 判断非空:is not null 查询没有地址的同学; Select * from stu where address is null; e、优先级 小括号,not ,比较运算符 ,逻辑运算符,and比or优先级高,如果同时使用,建议使用(); 4、聚合 为了快速得到统计的数据,提供了5个聚合函数 Select 函数() from 表名; 1、count(*) 表示计算总行数,()中可以写*或列名 2、max(列名) 表示求此列的最大值 3、min(列名) 表示求此列的最小值 4、sum(列名) 表示求此列的和 5、avg(列名) 表示求平均数值 需求:查询女生id的最大值: 需求:查看“l”开头的学生年龄和 5、分组 分组是为了将分组后的数据通过聚合函数显示使用,按照字段进行分组,表示此字段相同的数据会被放到一个集合中 分组后,只能查询出相同的数据列,对于有差异的数据列,无法显示在结果集中,可以对分组后的数据进行聚合运算 语法 select 列1,列2,聚合.............From 表名 group by 列1,列2,........ 需求,查询男生,女生分别有多少人 分组后的数据筛选语法 select 列1,列2,聚合.............From 表名 group by 列1,列2,........ having 列1,列2 6、排序 语法:select * from 表名 order by 列1 asc|desc, 列2 asc|desc..... 说明: A、将数据按照列1 进行排序,如果列1数据相同,则按照列2进行排序,....... B、默认升序 C、Asc表示升序 D、Desc表示降序 如果需要筛选,where 条件要放在表名后面 7、分页 Select * from stu limit srart count 八、关联: 建表语句: 1/create table class(id int auto_increment primary key,name varchar(20) not null ,stuNum int not null); 2/create table students(id int auto_increment primary key,name varchar(20) not null ,gender bit default 1,classid int not null,foreign key (classid) references class(id)); 关联查询 select students.name,class.name from class inner join students on class.id = students.classid; 分类: 1、关联查询 select students.name,class.name from class inner join students on class.id = students.classid; 2、left join 会将A中有的填充到左边,没有用null填充 3,rightjoin 会将b中有填充到右边,没有用null填充 使用python写代码前,要退出mysql,要用pip install PyMySql添加库
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值