首页 > 数据库 >mysql

mysql

时间:2023-12-21 15:56:11浏览次数:37  
标签:列名 mysql 数据类型 查询 字段名 表名 select

MYSQL

1.安装

2.用法

  • sql语句可单行或多行,以分号结尾;
  • MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
  • 单行注释: -- 注释内容 或 #注释内容(MySQL 特有)
  • 多行注释: /* 注释 */

3.mysql数据类型

数值:

  • tinyint:1个字节(小整数类型)

  • int:4个字节(大整数类型)

  • double:浮点类型(总长度,小数点后保留位数)

日期:

  • date:日期值(只保留年月)
  • datetime:混合日期和时间值(年月日时分秒)

字符串:

  • char:定长字符串(如果储存数据字符不足10个,也会占10个空间)
  • varchar:变长自字符串(如果储存数据字符不足10个,那么是几个占几个空间)
需求:设计一张学生表,请注重数据类型、长度的合理性
	1. 编号
	2. 姓名,姓名最长不超过10个汉字
	3. 性别,因为取值只有两种可能,因此最多一个汉字
	4. 生日,取值为年月日
	5. 入学成绩,小数点后保留两位
	6. 邮件地址,最大长度不超过 64
	7. 家庭联系电话,不一定是手机号码,可能会出现 - 等字符
	8. 学生状态(用数字表示,正常、休学、毕业...)
create table student(
	id int,
    name varchar(10),
    birthday date,
    score double(5,2),
    email varchar(64),
    tel varchar(15),
    status tinyint
);

4.分类使用

1.DDL:操作数据库,表

操作库

查询所有数据库:show databases;
创建数据库(如果存在数据库,忽略该操作):create database if not exists 库名;
删除数据库:drop database if exists 库名;
修改数据库名:alter database  旧库名 rename to 新库名;
使用数据库:use 库名;

操作表

查看当前数据库:select database;
查询所有表名:show tables;
查询所有表结构:desc 表名;
创建表:create table if not exists 表名(
	字段名1	数据类型1,
	字段名2	数据类型2
	);
删除表:drop table if exists 表名;
修改表:
	修改表名:alter table 旧表名 rename to 新表名;
	添加列:alter table 表名 add 列名 数据类型;
	添加多列:alter table 表名 add 列名1 数据类型1,add 列名2 数据类型2,add 列名3 数据类型3;
	修改数据类型:alter table 表名 modify 列名 新数据类型;
	修改列名和数据类型:alter table 表名 change 旧列名 新列名 数据类型;
	删除列alter table 表名 drop 列名;

2.DML:对表中数据增删改查

添加数据:
	给指定列添加数据:insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); 
	给全部列添加数据:insert into 表名 values(值1,值2,值3,值4);
	批量添加数据:
	insert into 表名(列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3),(值1,值2,值3);
	insert into 表名 values (值1,值2,值3,值4),(值1,值2,值3,值4),(值1,值2,值3,值4);
删除数据:
delete from 表名 [where 条件];
修改数据:
update 表名 set 列名1=值1,列名2=值2,列名3=值3[where 条件]; 
查询数据:
select * from 表名

3.DQL:对数据进行查询操作

简单查询

简单查询:
select 字段名1,字段名2 from 表名;
去重简单查询:
select distinct 字段名1 from 表名;
去重,起别名简单查询:
select distinct 字段名1 as 别名 from 表名;
select distinct 字段名1 别名 from 表名;

条件查询

select 字段名1 from 表名 where 条件;
	条件举例:
		age>20;
		age<=20;
		age>=20 && age<=30;等同 age>=20 and age<=30;等同 age between 20 and 30;
		age !=20;等同 age<>20;
		age=20 or age=30;等同age in (20,30);
		age is null;
		age is not null;

模糊查询

关键字:like
_:代表单个任意字符;
%:代表任意个数字符;
select 字段名1,字段名2,字段名3 from 表名 where 字段名1 like '%w_c%';

排序查询

按字段1升序:
select 字段名1,字段名2 from 表名 order by 字段名1;
按字段1降序:
select 字段名1,字段名2 from 表名 order by 字段名1 desc;
按字段1降序,如果字段1一样,再按字段2升序:
select 字段名1,字段名2,字段名3 from 表名 order by 字段名1 desc,字段名2 asc;

聚合函数

注意:null值不参与聚合运算

select 聚合函数名(列名) from 表名;
	聚合函数举例:
	count(列名)	--一般使用count(*)统计个数,因为null不进行运算
	max(列名)
	min(列名)
	sum(列名)
	avg(列名)
	

分组查询

注意:

​ 分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

​ having可以对聚合函数进行过滤,where不能。

select 分组字段名,聚合函数 from 表名 [where 分组前的限定] group by 分组字段 [having 分组后的条件限定]
举例:查询男同学和女同学各自的语文平均分,以及各自人数,要求:分数低于60分的不参与分组,分组之后人数大于10个的
select sex,avg(chinese),count(*) from student where score>=60 group by sex having count(*)>10;

分页查询

select 字段名 from 表名 limit 起始索引,查询条数;
案例:
查询第一页的3条数据:
select 字段名 from 表名 limit 0,3; 
查询第2页的3条数据:
select 字段名 from 表名 limit 3,3; 
查询第3页的3条数据:
select 字段名 from 表名 limit 6,3; 
注意:起始索引=(当前页码-1) * 每页显示的条数

4.DCL:定义访问权限和安全级别及创建用户

授权用户权限:
1.授权select 权限:
grant select on 数据库名.表名 to '用户名@主机名';
2.授权select,update,insert权限:
grant select,insert,update on 数据库名.表名 to '用户名@主机名';
3.授权所有权限:
grant all privileges on 数据库名.* to '用户名@主机名';
撤销用户权限:
1.撤销select 权限:
revoke select on 数据库名.表名 to '用户名@主机名';
2.撤销所有权限:
revoke all privileges on 数据库名.* to '用户名@主机名';
显示用户权限:
show grant from '用户名@主机名';

5.约束

标签:列名,mysql,数据类型,查询,字段名,表名,select
From: https://www.cnblogs.com/wjc1234/p/17919253.html

相关文章

  • docker初步入门学习安装redis和mysql
    dockerrun--namemyredis-p6379:6379-dredisredis-server--appendonlyyesdockerrun--namemysql-eMYSQL_ROOT_PASSWORD=123456-d-p3306:3306mysql:5.7.27dockerpullmysql:5.7.27dockerrun-d--hostnamemy-rabbit--namemyra......
  • MySQL 8 半同步复制
    安装半同步复制半同步复制是通过插件的形式实现的。必须要在源库和副本上安装插件。源库和副本有不同的插件。插件安装后,可通过与之相关的系统变量对其进行控制。只有安装了相关插件,这些系统变量才可用。要使用半同步复制,必须满足以下要求:·要求MySQL服务器支持动态加载。要......
  • Mysql报错:too many connections原因及解决方法
    原因是mysql连接数过多解决方案一:1、linux登录mysql:mysql-uroot-p;2、查看mysql允许的最大连接数showvariableslike'%max_connections%';3、查看这次mysql服务启动到现在,同一时刻最多mysql有多少连接showstatuslike'Max_used_connections';4、修改mysql最大连......
  • 转:mysql查看表大小
    原文:mysql查看表大小useinformation_schema;--查看各库占用大小selectTABLE_SCHEMA,concat(truncate(sum(data_length)/1024/1024,2),'MB')asdata_size,concat(truncate(sum(index_length)/1024/1024,2),'MB')asindex_sizefrominformation_schema.tables......
  • MySQL 对 bit 类型与字符判断结果不一致现象
     结论涉及bit类型的比较时,最好给常量的比较对象都加上b前缀,比如a='1'变成a=b'1',来避免结果的非预期不一致现象。复现SQLCREATETABLEt1(`id`varchar(36),`status`bit(1),`open`bit(1),`store_id`varchar(20),PRIMARYKEY(`id`),KEY`inde......
  • MySQL 8.0.12 深入理解bit类型
     背景:在阿里巴巴推荐的MySQL建表规范里要求如下:表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsignedtinyint(1表示是,0表示否)。解释:在MySQL里表示是和否的概念可以使用如下三种方案:1.使用bit(1)类型,此时bit允许存储的是ASCII中的0和1.0表示否1表示是的概念......
  • MySQL 获取日期、时间、时间戳
    MySQL获取当前日期、时间、时间戳函数_mysqldate_sub时间戳-CSDN博客#获取当前时间curtime()mysql>selectcurtime();+-----------+|curtime()|+-----------+|10:39:25|+-----------+#获取当前日期curdate()mysql>selectcurdate();+------------+|cur......
  • day02-MySQL
    数据库-MySQL1.数据库基础操作mysql-u用户名-p密码[-h数据库服务器的IP地址-P端口号]-h参数不加,默认连接的是本地127.0.0.1的MySQL服务器,-P参数不加,默认连接的端口号是3306eg.mysql-uroot-p1234查询所有数据库showdatabases;创建数据库created......
  • 生产环境部署过的二种mysql同步: binlog和gtid
    生产环境部署过的二种mysql同步:binlog和gtid服务器A:192.168.21.33|master|winserver2019服务器B:192.168.21.40|slave |winserver2019Mysql版本:8.0.34.0数据库连接软件:mysql-workbench-community-8.0.30-winx64(注:linux版本一样的配置方法,注意my.ini和......
  • MySQL-基础篇
    索引的数据结构二叉树树高度普通二叉树最坏n.红黑树二叉平衡树,树高度logn+1.以20000000条数据为例,h=log20000000=25Hash表对索引的key进行一次hash计算就可以定位出数据存储的位置很多时候Hash索引要比B+Tree更高效仅能满足=、in,不支持范围查询hash冲突问题(数组+链表)......