数据库和mysql常用的语法
数据库的介绍
bin目录存放启动文件:
mysqld.exe(就是服务端)
mysql.exe(客户端)
data目录:
存放核心数据
my-default,ini:
默认的配置文件
readme:
软件说明
mysql的基本使用
服务端启动:mysqld(ctrl + c是停止服务端)
客户端启动:mysql(exit是停止客户端)
net start mysql开机就自动启动关机就自动关闭
net stop mysql(管理员)
要卸载重新按装
要先关闭服务端:net stop mysql
移除系统服务:mysqld --remove
修改密码
myspladmin(空格)-u用户名(空格)-p原密码(空格)password(空格)新密码
select * form mysql.user\G;:查看用户信息
\s查看MySQL相关信息(当前用户、版本、编码、端口号)
永久修改编码操作(utf8)
把文件my-default.ini拷贝一个命名为my.ini
内容都删掉,直接拷贝字符编码相关配置即可无需记忆(修改了配置文件中关于[mysqld]的配置 需要重启服务端)
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
mysql的语句
查看所有数据库名称:show databases
查看所有的表名称:要先选择一个库:show tables;
查看所有的记录:select * from mysql.user;这样字段太多会错乱在后面加\G就是不会让它在错乱了;
创建库:create database库名;
查看库:
show databases; 查看所有的库名称
show create database 库名; 查看指定库信息
删除库:drop database 库名;
切换操作库:use db1;
创建表:create table 表名(字段名 字段类型,字段名 字段类型);
查看表:show tables; 查看库下所有的表名称
查看表结构:describe 表名;
查看表结构:desc 表名;
如果想跨库操作其他表只需要在表名前加库名即可:desc mysql.user;
表改名字:alter table 表名 rename 新表名;
删除表:drop table 表名;
插入数据:insert into 表名 values(数据值1,数据值2);
查询数据:select * from 表名( 查询表中所有的数据)
select 表头(id) from 表名 查询指定表头数据 可以查询多个,隔开
修改数据:update 表名 set 字段名=新数据 where 筛选条件(第几个数据)不加改所有的;
删除数据:delete from 表名;删所有的
delete from 表名 where id=1;指定的可以删多个
查看字段的绑定关系 show create table 表名;
select * from 表名;查询表的字段和内容
select 字段 from 表名 查询这个字段的内容
select char_length(字段) from 表名;查询这个字段的内容长度
查询表的关键字
select * from 表名 where id >= 3 and id <= 6;查询表id三到六的数据
select * from 表名 where id between 3 and 6;查询表id三到六的数据
select * from 表名 where salary=20000 or salary=18000 or salary=17000;查询多个工资不同的员工信息
select * from 表名 where salary in (20000,18000,17000);查询多个工资不同的员工信息
select * from 表名 where id<3 or id>6;查询id小于三或者大于六的数据
查询id小于三或者大于六的数据,select * from 表名 where id not between 3 and 6;
select * from 表名 where name like '%关键字%';%:匹配任意个数的任意字符(模糊查询)
查询员工姓名是由四个字符组成的员工姓名与其薪资,select * from 表名 where name like '----'
select * from 表名 where char_length(name) = 4;查询员工姓名是由四个字符组成的员工姓名与其薪资
select * from 表名 where post_comment is NULL;查询岗位描述为空的员工名与岗位名
聚合函数:用于分组之后的数据统计查询(max\min\sum\avg\count:最大值、最小值、求和、平均值、计数)
select * from 表名 group by post;将员工数据按照部门分组
select post,max(salary) from 表名 group by post;获取每个部门的最高工资
修改字段名as跟你要修改的字段名,select post as‘输入你要的字段名’,max(salary) as '同上' from 表名 group by post;
一次获取部门最高薪,最低薪,平均薪资和月支出,select post,max(salary)‘最高薪’,min(salary)‘最低薪’,avg(salary)‘平均薪资’,sum(salary)‘月支出’ from 表名 group by post;
统计每个部门的人数,select post,count(id) from 表名 group by post;
统计每个部门的部门名称以及部门下的员工姓名,select post,name from 表名 group by post;
数据之间的拼接方法关键字(group_concat(字段,一些小功能字段))
select post,group_concat(name) from 表名 group by post;
给数据之间添加方法
having过滤分组(having用在分组之后(二次筛选))
统计各部门年龄在30岁以上的员工平均工资 并且保留大于10000的数据
select * from emp where age > 30;筛选出所有年龄大于30岁的员工数据
筛选出来的数据按照部门分组并统计平均薪资,select post,avg(salary) from emp where age > 30 group by post;
对分组统计之后的结果做二次筛选,select post,avg(salary) from emp where age > 30 group by post having avg(salary) > 10000;
distinct去重(数据必须一模一样才可以去重)
针对多个字段组合去重(这几个字段数据相同)
select distinct id,age from 表名;多个字段去重
select distinct age from 表名;单个字段去重
order by排序
select * from emp order by age desc; 默认降序
select * from 表名 order by age; 默认升序,select * from emp order by age asc;升序
先按照年龄升序排相同的情况下再按照薪资降序排,select * from emp order by age,salary desc;
limit分页(展示的数据多少分页)
select * from 表名 limit 5; 直接限制展示的条数
select * from 表名 limit 5,5;从第五条开始往后读五条
select * from 表名 order by salary desc limit 1;查询工资最高的人的详细信息
regexp正则表达式(自己写正则查询)
select * from 表名 where name regexp '^j.*?(n|y)$'
字段类型之整型
整型无需添加数字没什么作用(用来控制展示的长度)
tinyint 1bytes 正负号(占1bit)
smallint 2bytes 正负号(占1bit)
int 4bytes 正负号(占1bit)
bigint 8bytes 正负号(占1bit)
严格模式
当我们在使用数据库存储数据的时候 如果数据不符合规范 应该直接报错而不是擅自修改数据 这样会导致数据的失真(没有实际意义)
show variables like '%mode%';:查看严格模式
永久修改,修改配置文件,记得关闭开启后有用sql_mode=STRICT_TRANS_TABLES
字段类型之浮点型
float(20,10)
总共存储20位数 小数点后面占10
double(20,10)
总共存储20位数 小数点后面占10
decimal(20,10)
总共存储20位数 小数点后面占10
三者的核心区别在于精确度不同
float < double < decimal(最高)
创建表模式:create table 表名(表头名 字段类型(存储多少位,小数点后面占多少))
字段类型之字符类型(存储大小)
char:定长
char(存储数据大小):最多存储规定的字符超出就报错不够拿空格填充至指定长度
varchar:变长
varchar(存储数据大小):最多存储规定的字符超出就报错不够就存储那么多,就是通过把数据存在报头里,通过报头存储/取数据确定数据。
char优势
整存整取 速度快(直接取规定长度好拿取和存)注意mysql会自动的取的时候去掉空格取出来就是没有空格
劣势:浪费存储空间
varchar优势:节省存储空间
劣势:存取数据的速度较char慢
char与varchar的使用需要结合具体应用场景
创建表的模式:create table 表名(表头 数据类型,表头 字符类型(空间大小))
字段类型之枚举与集合(多选和单选)
枚举(多选一:给你几个选项只能选一个)
create table 表名(表头 数据类型,表头 字段存储(数据空间),gender enum(选择项,选择项,选择项))
添加数据:insert into 表名 values(对应的数据,对应的数据,对应的数据)
集合(多选多(多选一):选多个也行选一个也行)
create table 表名(表头 数据类型,表头 字段类型(存储空间),hobbies set(指定数据,指定数据,指定数据));
字段类型之日期类型
datetime 年月日时分秒
date 年月日
time 时分秒
year 年
create table 表名(表头 字段类型,表头 字段类型(存储范围),register_time datetime,birthday date,study_time time,work_time year);前面的都是表名
添加方法
字段约束条件
无符号、零填充:unsigned无符号(不能有符号)
create table 表名(字段名 字段类型 unsigned);
zerofill:不够拿零填充剩下的,多的存自己的数据
create table 表名(字段名 字段类型(范围)zerofill)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)