ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql基础知识

2022-07-09 18:33:12  阅读:203  来源: 互联网

标签:表名 SELECT 基础知识 select student Mysql where 字段名


1、数据类型

1.1 整数类型

1.2 浮点数类型和定点数类型

1.3 字符串

char 和 varchar,两者的区别varchar是可变长度的

1.4 文本类型

1.5 日期与时间类型

1.6 二进制类型

2、数据库和表的基本操作

2.1、数据库

# 建库
create database {数据库名称}
# 删库
drop database {数据库名称}
# 查询所有数据库名
show databases
# 修改编码方式
alter database {数据库名} character set gbk
# 更换数据库
use {数据库名}
# 查询当前数据库名
select database()
建数据库
create table tabblename (
    字段1 字段类型 not null, 
    字段2 字段类型 default '123', 
    … 
    字段n 字段类型 unique,
    primary key(字段名)
)

2.2 表的操作

# 删除表
drop table 表名;
# 查看表信息
desc {表名}
# 修改表字段名字
alter table {表名} change 字段名 新字段名 类型
# 修改表字段类型
alter table {表名} modify 字段名 类型
# 增加字段名字
alter table {表名} add 字段名 类型
# 删除字段名
alter table {表名} drop 字段名

# 建外键和删外键
-- 在创建数据表时语法如下:
CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段)
-- 将创建数据表创号后语法如下:
ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段);

# 删除外键
alter table 从表名 drop foreign key 外键名;

2.2 用户管理和权限管理

创建用户
    create user '用户名'@'IP地址' identified by '密码';
删除用户
    drop user '用户名'@'IP地址';
修改用户
    rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
修改密码
    set password for '用户名'@'IP地址' = Password('新密码')

# 查看权限:
show grants for '用户'@'IP地址' 
# 授权
grant  权限 on 数据库.表 to '用户'@'IP地址'
# 取消授权
revoke 权限 on 数据库.表 from '用户'@'IP地址'

grant all privileges on db1.tb1 TO '用户名'@'IP'
grant select on db1.* TO '用户名'@'IP'
grant select,insert on *.* TO '用户名'@'IP'
revoke select on db1.tb1 from '用户名'@'IP'

3、增删改查语句

3.1、插入数据


插入单条数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES (值 1,值 2,...);
插入多条数据
INSERT INTO 表名 [(字段名1,字段名2,...)]VALUES (值 1,值 2,…),(值 1,值 2,…),...;
插入查询出来的数据
INSERT INTO 表名(字段名1,字段名2,...) SELECT * FROM 表名

3.2、删除数据

DELETE FROM 表名 [where 条件表达式];
和TRUNCATE的区别
TRUNCATE只能删除全部记录,并且删除之后,自增的字段会从0开始

3.3、更新数据

UPDATE 表名 SET 字段名1=值1[,字段名2 =值2,…] [WHERE 条件表达式];

3.4、查询数据

select * from 表名 (其余略)

3.5、聚合函数

聚合函数使用规则:
只有SELECT子句和HAVING子句、ORDER BY子句中能够使用聚合函数。例如,在WHERE子句中使用聚合函数是错误的。

count(*),max(),min(),sum(),avg()

#时间函数
SELECT NOW();
SELECT DAY (NOW());
SELECT DATE (NOW());
SELECT TIME (NOW());
SELECT YEAR (NOW());
SELECT MONTH (NOW());
SELECT CURRENT_DATE();
SELECT CURRENT_TIME();
SELECT CURRENT_TIMESTAMP();
SELECT ADDTIME('14:23:12','01:02:01');
SELECT DATE_ADD(NOW(),INTERVAL 1 DAY);
SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH);
SELECT DATE_SUB(NOW(),INTERVAL 1 DAY);
SELECT DATE_SUB(NOW(),INTERVAL 1 MONTH);
SELECT DATEDIFF('2019-07-22','2019-05-05');

#字符串函数

--连接函数
SELECT CONCAT ()
--
SELECT INSTR ();
--统计长度
SELECT LENGTH();

#数学函数

-- 绝对值
SELECT ABS(-136);
-- 向下取整
SELECT FLOOR(3.14);
-- 向上取整
SELECT CEILING(3.14);

3.6、条件查询

# IN
select * from student where sid in ('S_1002','S_1003');
# NOT IN
select * from student where sid not in ('S_1001');
# BETWEEN AND
select * from student where age between 15 and 18;
# NOT BETWEEN AND
select * from student where age not between 15 and 18;
# IS NOT NULL
select * from student where sname is not null;
# LIKE
select * from student where sname like '%g';

3.7、GROUP BY,HAVING,ORDER BY

# 统计各部门人数
select count(*), departmentnumber from employee group by departmentnumber;

# 和having一起使用
统计工资总和大于8000的部门 MySQL命令:
select sum(salary),departmentnumber from employee group by departmentnumber having sum(salary)>8000;

# ORDER BY
SELECT 字段名1,字段名2,… FROM 表名 ORDER BY 字段名1 [ASC 丨 DESC],字段名2 [ASC | DESC];
select * from student order by age asc limit 3;

4、多表联合

4.1、表关系

在实际开发中数据表之间存在着各种关联关系。在此,介绍MySQL中数据表的三种关联关系。

  • 多对一
    多对一(亦称为一对多)是数据表中最常见的一种关系。例如:员工与部门之间的关系,一个部门可以有多个员工;而一个员工不能属于多个部门只属于某个部门。在多对一的表关系 中,应将外键建在多的一方否则会造成数据的冗余。

  • 多对多
    多对多是数据表中常见的一种关系。例如:学生与老师之间的关系,一个学生可以有多个老师而且一个老师有多个学生。通常情况下,为了实现这种关系需要定义一张中间表(亦称为连接表)该表会存在两个外键分别参照老师表和学生表。

  • 一对一
    在开发过程中,一对一的关联关系在数据库中并不常见;因为以这种方式存储的信息通常会放在同一张表中。

4.2、表连接

# 内连接(满足条件的记录出现在查询结果中)

SELECT 查询字段1,查询字段2, ... FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段=表2.关系字段

# 外连接

LEFT [OUTER] JOIN 左(外)连接:返回包括左表中的所有记录和右表中符合连接条件的记录。
RIGHT [OUTER] JOIN 右(外)连接:返回包括右表中的所有记录和左表中符合连接条件的记录。

SELECT 查询字段1,查询字段2, ... FROM 表1 LEFT | RIGHT [OUTER] JOIN 表2 ON 表1.关系字段=表2.关系字段 WHERE 条件

4.3、子查询

子查询是指一个查询语句嵌套在另一个查询语句内部的查询;该查询语句可以嵌套在一个 SELECT、SELECT…INTO、INSERT…INTO等语句中。

select * from class where cid=(select classid from student where sname='张三');
select * from class where exists (select * from student where sname='王五');
select * from class where cid > any (select classid from student);
select * from class where cid > all (select classid from student);

select ===> from ===> where ===> group by ===> having ===> order by ===> limit

标签:表名,SELECT,基础知识,select,student,Mysql,where,字段名
来源: https://www.cnblogs.com/wcyblogs/p/16461583.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有