MySql的学习_SQL入门与基础查询语句(1)

MySql

这里就使用SQLyog来操作数据库

MySql的目录结构

在这里插入图片描述

数据库管理系统

即DBMS,指一种操作和管理维护数据库的大型软件
在这里插入图片描述

数据库表

在这里插入图片描述

SQL

不同的关系型数据库都支持SQL
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

DDL操作 数据库

/*
创建数据库方式一:指定名称的数据库
	
*/
CREATE DATABASE db1;
/*
指定字符集的方式创建数据库 utf-8
	
*/
CREATE DATABASE db1_1 CHARACTER SET utf8;
/*
查看数据库
	
*/
USE db1;#切换数据库
SELECT DATABASE();#查询当前正在使用的数据库
SHOW DATABASE();#查询数据库

-- 修改数据库的字符集
-- 语法格式: alter database 数据库名 character set utf8;

ALTER DATABASE db1 CHARACTER SET utf8;
-- 查询当前数据库基本信息
SHOW CREATE DATABASE db1;

-- 删除数据库
-- 语法格式 drop database 数据库名称 
DROP DATABASE db1_1;

MySql中常见数据类型

/*
	创建表的语法格式
		CREATE TABLE 表名{
			字段名称 字段类型(长度),
			字段名称2 字段类型,
			字段名称3 字段类型   这里不要加逗号
			};
			
	MySql中常见的数据类型
		int 整型
		double 浮点型
		varchar 字符串型
		date 日期类型 只显示年月日 没有时分秒 yyyy-MM-dd
		datetime 年月日时分秒 yyyy-MM-dd HH:mm:ss
		char 在mysql中char类型也代表字符串
		
		
*/

varchar和char类型的区别?

  • varchar特点:可变长度的 存储字符串时 只使用所需的空间、
  • char类型的特点:是固定长度的,指定了多少长度,创建时就使用多少。
    保存指定长度数据如密码时,可用char;保存长度在一定范围内有变化的,如名字,用varchar
  • 方便理解,举个例子:若同时创建char(20)和varchar(20),把字符’abc’存进去。对于char(20),'abc’后面有17个空格,而varchar(20)长度立马变为3。但char的存取速度还是比varchar快

创建表

-- 创建商品分类表
/*
	表名 category
	cid int 分类id
	cname varchar 分类的名称
	
*/
USE db1;
CREATE TABLE category(
	cid INT,
	cname VARCHAR(20)
	
	);
-- 创建测试表
/*
	表名 test1
	tid int 分类id
	tdate date	
*/
USE db1;
CREATE TABLE test1(
	tid INT,
	tdate DATE
);
-- 快速创建一个表结构相同的表(复制表结构)
-- 语法结构 create table 新表名称 like 旧表名称

-- 创建一个与test1表结构相同的表
USE db1;
CREATE TABLE test2 LIKE test1;

-- 查看表结构
DESC test2;

查看表

-- 查看表结构
DESC test1;
-- 查看当前数据库中所有表名
SHOW TABLES;

-- 查看创建表的sql
SHOW CREATE TABLE category;

删除表

-- drop table 表名;
-- drop table if exists 表名;判断表名是否存在,如果存在就删除 不存在就不执行删除
DROP TABLE IF EXISTS test1;

DDL操作数表

修改

-- 修改表名称 rename table 旧表名 to 新表名
RENAME TABLE category TO category1;

-- 修改表字符集为gbk   alter table 表名 character set 字符集
ALTER TABLE category1 CHARACTER SET gbk;

-- 向表中添加一个字段 关键字:add
-- 语法格式:alter table 表名 add 字段名称 字段类型(长度)
ALTER TABLE category1 ADD add111 VARCHAR(10); 

-- 修改表中列的类型或长度 关键字 modify
-- alter table 表名 modify 字段名称 字段类型
ALTER TABLE category1 MODIFY  add111 VARCHAR(50);
ALTER TABLE category1 MODIFY cdes CHAR(20); 

-- 修改列的名称 alter table 表名 change 旧列名 新列名 类型(长度)
ALTER TABLE category1 CHANGE cdes  dedede VARCHAR(30);

-- 删除列 ALTER TABLE 表名 DROP 列名
ALTER TABLE category1 DROP dedede;

DML对表中数据进行 增删改

插入操作

-- 增加 insert into 表名{字段名1,字段名2,...} values {字段值1,字段值2,...}
USE db1;
CREATE TABLE student(
	sid INT,
	sname VARCHAR(20),
	age INT,
	sex CHAR(1),
	address VARCHAR(40)
	);
	
-- 向学生表中插入数据
-- 方式一 插入全部字段 将所有字段名都写出来
INSERT INTO student (sid,sname,age,sex,address) VALUES (1,'张三',10,'男','花果山');

-- 方式二 插入全部字段 不写字段名
INSERT INTO student VALUES (2,'李四',20,'男','水帘洞');

-- 方式三 插入指定字段
INSERT INTO student (sid,sname) VALUES (4,'蜘蛛精');

注意

  • 在插入varchar、char、date类型的时候,必须要使用单引号 或者双引号进行包裹(尽量使用单引号)
  • 插入空值可以忽略不写或写null

修改操作

/*
	语法格式1:update 表名 set 列名 = 值
	语法格式2:update 表名 set 列名 = 值[where 条件表达式: 字段名=值]
*/

-- 修改表中所有性别为女
UPDATE student SET sex = '女';

-- 将sid为1的数据,性别改为男
UPDATE student SET sex = '男' WHERE sid = 1;

-- 修改多个列
-- 修改dis为4的这条数据,年龄改为40,地址改为大唐
UPDATE student SET age = 40,address = '大唐' WHERE  sid = 4;

删除操作

/*
	语法格式1:delete from 表名
	语法格式2:delete from 表名[where 条件]
*/

-- 删除sid为2的数据
USE db1;
DELETE FROM student WHERE sid = 2;

-- 删除全部数据
-- 1.delete from 表名  不推荐 对表中数据进行逐条删除,效率低
-- 2.truncate table 表; 推荐,删除整张表,再创建一个一模一样的新表
TRUNCATE TABLE student;

简单查询

准备数据

在这里插入图片描述

-- 创建表
CREATE TABLE emp( 
	eid INT, 
	ename VARCHAR(20), 
	sex CHAR(1), 
	salary DOUBLE, 
	hire_date DATE, 
	dept_name VARCHAR(20) 
);
-- 添加数据 
INSERT INTO emp VALUES(1,'孙悟空','男',7200,'2013-02-04','教学部'); 
INSERT INTO emp VALUES(2,'猪八戒','男',3600,'2010-12-02','教学部'); 
INSERT INTO emp VALUES(3,'唐僧','男',9000,'2008-08-08','教学部'); 
INSERT INTO emp VALUES(4,'白骨精','女',5000,'2015-10-07','市场部'); 
INSERT INTO emp VALUES(5,'蜘蛛精','女',5000,'2011-03-14','市场部'); 
INSERT INTO emp VALUES(6,'玉兔精','女',200,'2000-03-14','市场部'); 
INSERT INTO emp VALUES(7,'林黛玉','女',10000,'2019-10-07','财务部'); 
INSERT INTO emp VALUES(8,'黄蓉','女',3500,'2011-09-14','财务部'); 
INSERT INTO emp VALUES(9,'吴承恩','男',20000,'2000-03-14',NULL); 

在这里插入图片描述

DQL查询

条件查询就是先取出表中的每条数据,满足条件的就返回,不满足的就过滤

-- 查询emp表中的所有数据
SELECT * FROM emp; -- * 表示所有列

-- 查询所有数据,只显示id和name
SELECT eid,ename FROM emp;

-- 查询所有数据,然后给列名 改为中文
-- 别名查询 使用关键字as
SELECT
	eid AS '编号',
	ename AS '姓名',
	sex AS '性别',
	salary AS '薪资',
	hire_date '入职时间',-- AS可以省略
	dept_name '部门名称'

FROM emp;

-- 查询一共有几个部门
SELECT dept_name FROM emp;
-- 要加入去重操作

-- 将我们的员工薪资数据+1000进行展示
SELECT ename,salary+1000 AS salary FROM emp;

注意:查询操作不会对数据库中数据进行修改,只是一种显示的方式

条件查询

语法格式

/* 
	语法格式:select 列名 from 表名 where 条件表达式
	
	比较运算符 > < <= >=  =    不等于运算符: <> !=
		Between... AND 在某一区间
		IN(集合) 如 name in(悟空,八戒)
		LIKE'%张%' 模糊查询
		S NULL 查询某一列为NULL的值
		
	逻辑运算符
		AND
		OR
		NOT 取反

*/

需求一

# 查询员工姓名为黄蓉的员工信息
-- 1.查哪张表 2.查哪些字段 3.查询条件
SELECT * FROM emp WHERE ename = '黄蓉';
 
# 查询薪水价格为5000的员工信息 
SELECT * FROM emp WHERE salary = 5000;

# 查询薪水价格不是5000的所有员工信息 
SELECT * FROM emp WHERE salary != 5000;
SELECT * FROM emp WHERE salary <> 5000;

# 查询薪水价格大于6000元的所有员工信息 
SELECT * FROM emp WHERE salary > 6000;

# 查询薪水价格在5000到10000之间所有员工信息 
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000;-- 包含10000和5000


# 查询薪水价格是3600或7200或者20000的所有员工信息
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
-- 方式2,使用in()匹配括号中的需求
SELECT * FROM emp WHERE salary IN(3600,7200,20000);


需求二

/*
	LIKE '%精%'
		% 通配符,表示匹配多个字符串 '%精'表示前面是什么都可以,最后一个子是精就行
		_ 通配符,匹配一个字符 如'_精'会匹配'孔精'、'天精'等 '__精'可匹配'白骨精'
*/

# 查询含有'精'字的所有员工信息 
SELECT * FROM emp WHERE ename LIKE '%精%';

# 查询以'孙'开头的所有员工信息 
SELECT * FROM emp WHERE ename LIKE '孙%';

# 查询第二个字为'兔'的所有员工信息 
SELECT * FROM emp WHERE ename LIKE '_兔%';

# 查询没有部门的员工信息 
SELECT * FROM emp WHERE dept_name IS NULL;

# 查询有部门的员工信息 
SELECT * FROM emp WHERE dept_name IS NOT NULL;

猜你喜欢

转载自blog.csdn.net/Maybe_do_it/article/details/115315635