MySQl数据库的安装及使用

一、MySQL数据库的介绍和安装

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle旗下产品。

MySql是一种关系数据库管理系统。

MySql软件是一种开放源码软件,你可以修改源码来开发自己的 Mysql 系统。

MySql数据库服务器具有快速、可靠和易于使用的特点。

MySql使用标准的sql语言,并且支持多种操作系统,支持多种语言.

MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用

MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维 护,可以免费使用

MySQL的安装

命令行方式连接mysql 登录:

mysql [-hlocalhost -P3306](本机可省略)

-uroot -p(可以直 接写密码,不能有空格)

-h:主机名 -P:端口号 -u:用户名 -p:密码

退出:exit

 MySQL的常用命令

查看当前所有的数据库:show databases;

选择指定的库:use 库名

查看当前的所有表:show tables;

查看其他库的所有表:show tables from 库名;

查看mysql版本 select version();

安装可视化客户端工具 SQLyog /

二、SQL语句 

1、SQL介绍

结构化查询语言(Structured Query Language)简称SQL,是一种特殊 目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以 及查询、更新和管理关系数据库系统.

SQL优点: 不是某个特定数据库供应商专有的语是言,几乎所有DBMS都支持SQL 简单易学,灵活使用可以进行非常复杂和高级的数据库操作

sql语言中又分为3个不同分支
  
 -- 1.ddl  数据(结构)定义
  
 -- 2.dml数据操作  增删改
  
 -- 3.dql 查询语句 
 

2、DDL

(1)数据库

-- 创建数据库

CREATE DATABASE IF NOT  EXISTS schooldb CHARSET uft8;

-- 删除数据库

drop database if exists schooldb;

-- 修改数据库字符集

ALTER DATABASE schooldb CHARSET utf8;
(2)表

--创建表的语法

--create table 表名 (数据名、类型、约束);

例:

-- 创建表
-- 确定表明  --学生信息表
-- 确定表中字段(列) 学号 姓名 性别 生日 电话 身高 注册时间
-- 确定字段(列)的数据类型 和 长度
-- 确定字段(列)的约束
CREATE TABLE student (
    number INT,
    NAME VARCHAR(6),
    gender CHAR(1),
    birthday DATE,
    phone VARCHAR(11),
    height DECIMAL(3,2),
    reg_time DATETIME
);

--删除表(删除后表的数据就不存在了)

DROP TABLE IF EXISTS student;

--约束规则
-- PRIMARY KEY 设置主键约束 添加主键约束后,一个表中只能有一个列是主键
   -- 主键列可以唯一的表示某一行数据
   -- mySQL中主键可以设置为自动增长 AUTO-INCREMENT
-- NOT NULL 不能为空约束
-- UNIQUE 唯一性约束
-- 检查约束 设置条件

CREATE TABLE student(
    number INT PRIMARY KEY AUTO_INCREMENT COMMENT '学号主键',-- 设置主键 并且自动增长
    NAME VARCHAR(6) NOT NULL COMMENT '姓名',-- 姓名不能为空
    gender CHAR(1) NOT NULL COMMENT '性别',
    birthday DATE NOT NULL COMMENT '生日' ,
    phone VARCHAR(11) NOT NULL UNIQUE COMMENT '电话' ,-- 不能重复 不能为空 
    height DECIMAL(3,2) CHECK(height<2.50) COMMENT '身高',-- 设置条件
    reg_time DATETIME COMMENT '注册时间`student`'
)

--修改表名

RENAME TABLE student TO stu;

--复制表结构

CREATE TABLE student LIKE stu;

3、DML(增删改)

--插入数据(四种方法)

--1、INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);
 

INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('张三','男','2024-2-3','15222222222',1.98,NOW())

--2、INSERT INTO 表名 set 列名1=值1,..列名n=值n
 

INSERT INTO student SET NAME='勒布朗詹姆斯',gender='男',birthday='1980-1-1',phone='15333333333',height=2.11,reg_time=NOW()

--3、批量插入 INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);
 

INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('张四','男','2024-2-3','15222222232',1.98,NOW()),
									('张五','男','2024-2-3','15222232222',1.98,NOW()),
									('张六','男','2024-2-3','15222223322',1.98,NOW())

--4、把一个表中的数据放到另一个表中 INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配)


--修改数据

--UPDATE 表名 SET 列名 = ‘新值’WHERE

UPDATE student SET NAME ='库里' WHERE number=4
--删除数据  删除后自增数据不会变

--1、DELETE FROM 表名 WHERE 条件

DELETE FROM student WHERE NAME='张六' 

 --2、TRUNCATE TABLE 表名;清空整张

TRUNCATE TABLE stu

4、DQL查询语句


--基础查询语法

--select 查询列表 from 表名 where 条件

SELECT NAME FROM student WHERE number = 1
SELECT * FROM student WHERE number =2

--查询方法
--特定列查询:select column1,column2 from table

SELECT NAME,gender FROM student WHERE number = 1

--全部列查询: select * from table
 

SELECT * FROM student WHERE number =2

--算数运算符:+ - * /

SELECT NAME,height+1 FROM student

--排除重复行: select distinct column1,column2 from table  查询结果中所有的列都相同
 

SELECT DISTINCT NAME FROM student 


--查询函数:select 函数; / 例如version()

SELECT LENGTH(NAME) FROM student
--函数

--单行函数:会对查询中每一行数据进行处理

 --字符函数
		--length(列名) 以字节为单位
		SELECT LENGTH(NAME) FROM student
		
		--char_length(列名) 以字符为单位
		select name,char_lenfth,gender from student
		
		--concat(str1,str2,str3..)连接多个字符串 as 别名
		SELECT CONCAT(NAME,':',gender) AS '姓名性别' FROM student 
		
		--upper(列名) 小写转大写  lower(列名)转小写
		SELECT UPPER(NAME),LOWER(NAME) FROM student WHERE number =5
		UPDATE student SET NAME = UPPER(NAME) WHERE number = 5
		
		--substring(列名,起始位置,截取的长度)   sql中1是第一位
		SELECT SUBSTRING(NAME,1,3) FROM student
		
		--instr(列名,字符) 返回字符首次出现的位置 找不到返回0
		SELECT INSTR(NAME,'斯') FROM student
		
		--trim(列名) 取掉字符前后空格
		SELECT TRIM(NAME) FROM student
		--trim(子串 from 列名) 去掉字符串中指定的字串
		SELECT TRIM('勒布朗' FROM NAME) FROM student
		
		--lpad(列名,长度,字符) 左填充 在指定列的左侧填充指定长度的字符
		SELECT LPAD(NAME,6,'勒布朗') FROM student
		
		--rpad(列名,长度,字符) 右填充 在指定列的右侧填充指定长度的字符
		SELECT RPAD(NAME,6,'勒布朗') FROM student
		
		--replace(列名,被替换掉的,用于替换的) 替换指定字符
		SELECT REPLACE(NAME,'O','o') FROM student
		
		
--逻辑处理 case when 条件 then 条件成立的结果 else 不成立的结果
		--case when then end
		SELECT
			NAME,
			gender,
			(			
				CASE
				WHEN height > 2
				THEN '高个子'
				WHEN height>=1.8
				THEN '正常身高'
				ELSE '不正常身高'
				END
			) AS height
			FROM
			student

		--ifnull(列名,'为空时的默认信息')
		SELECT NAME,gender,IFNULL(height,'未录入身高信息')AS'身高' FROM student		
		
		--if(条件,成立的结果,不成立的结果)
		SELECT NAME,gender,IF(gender='男','帅哥','美女')FROM student
		
--数学函数
		--round(数值) 四舍五入
		SELECT ROUND(height) FROM student
		--ceil(数值):向上取整,返回>=该参数的最小整数
		SELECT CEIL(height) FROM student
		--floor(数值):向下取整,返回<=该参数的最大整数
		SELECT FLOOR(height) FROM student
		--truncate(数值,保留小数的位数):截断,小数点后截断到几位
		SELECT TRUNCATE(height,1),height FROM student 
		--mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负
		
		--rand():获取随机数,返回0-1之间的小数
		
--日期函数
		--now():返回当前系统日期+时间
		--curdate():返回当前系统日期,不包含时间
		--curtime():返回当前时间,不包含日期

	  --可以获取指定的部分,年、月、日、小时、分钟、秒
		--YEAR(日期列)只保存年
		SELECT YEAR(birthday) FROM student
		--MONTH(日期列)只保存月
		SELECT MONTH(birthday) FROM student;
		--DAY(日期列) 只保存日
		SELECT DAY(birthday) FROM student;
		--HOUR(日期列) 只保存小时
		--MINUTE(日期列) 只保存分钟
		--SECOND(日期列) 只保存秒
		
		--str_to_date(字符串格式日期,格式):将日期格式的字符转换成指定格式的日期
		SELECT STR_TO_DATE('2003-11-28','%Y-%m-%d') FROM student
		--date_format(日期列,格式):将日期转换成字符串
		SELECT DATE_FORMAT(birthday,'%Y-%m')FROM student
		--datediff(big,small):返回两个日期相差的天
		SELECT DATEDIFF(CURTIME(),birthday) FROM student

    --分组函数,也称聚合函数(多行变一行)    
    --功能:用作统计使用,又称为聚合函数或统计函数或组函数

--分类:
	--sum 求和
	SELECT SUM(height) FROM student
	--avg 平均值
	SELECT AVG(height) FROM student
	--max 最大值
	SELECT MAX(height) FROM student
	--min 最小值
	SELECT MIN(height) FROM student
	--count 计数(非空)
	SELECT COUNT(height) FROM student
	
--条件查询
--1、where  用法SELECT *FROM 表名 WHERE 条件
	SELECT *FROM student WHERE number=1
	--与或非为 and or not
	SELECT *FROM student WHERE number>1 AND height > 2.00
	
	--like是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值或数值型. 
	--通配符: % 任意多个字
	SELECT *FROM student WHERE NAME LIKE '勒布朗%'
	
	--between and 两者之间,包含临界值;
	SELECT * FROM student WHERE height BETWEEN 1.80 AND 2.00
	
	--in 判断某字段的值是否属于in列表中的某一项
	SELECT * FROM student WHERE height IN(1.98,1.60)
	SELECT * FROM student WHERE height NOT IN(1.98,1.60)
	
	--IS NULL(为空的)或 IS NOT NULL(不为空的)
	SELECT * FROM student WHERE height IS NULL
	

--查询合并

--1、UNION 的语法如下:    列数必须一致  会去除重复数据
		--[SQL 语句 1]
		--UNION
		--[SQL 语句 2]
		SELECT NAME,gender FROM student WHERE gender ='男'
		UNION
		SELECT NAME,gender FROM student WHERE gender ='女'
		
	--2、UNION ALL 的语法如下: 单纯合并,不会将去除重复的
		--[SQL 语句 1]
		--UNION ALL
		--[SQL 语句 2]
		
		SELECT NAME,gender FROM student WHERE gender ='男'
		UNION ALL
		SELECT NAME,gender FROM student WHERE gender ='女'

--查询排序

--查询结果排序,使用 ORDER BY 子句排序 order by 排序列 ASC/DESC
	--asc代表的是升序,desc代表的是降序,如果不写,默认是升序
	--order by子句中可以支持单个字段、多个字段
	SELECT * FROM student WHERE number>0 ORDER BY reg_time DESC--降序
	SELECT * FROM student WHERE number>0 ORDER BY number ASC   --升序
	
	SELECT * FROM student WHERE number>0 ORDER BY height ASC,reg_time DESC

--控制查询数量

--limit子句:对查询的显示结果限制数目 (sql语句最末尾位置)
	--SELECT * FROM table LIMIT 数据起始位置,每次查询数量
	SELECT * FROM student WHERE number>0 LIMIT 0,4
	

--分组查询

	--分组--在一些统计场景中,需要按照某一条件进行区分
	--格式
	select 分组函数,列(要求出现在group by的后面)
	from 表
	[where 筛选条件]
	group by 分组的列表
	[having 分组后的筛选]
	[order by 子句]
	--例子  --- 需要注意的是,having是对分组后的结果进行筛选,而非先筛选再分组
	SELECT
	gender,
	MAX (height)
	FROM
	student
	GROUP BY gender
	HAVING MAX (height) != 1.52
	

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京最后的深情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值