MYSQL

这篇博客详细介绍了MYSQL的SQL语句,包括DDL、DML、DCL和DQL,以及数据库和表的CRUD操作。内容涵盖创建、查看、修改和删除数据库及表,还讲解了数据的插入、删除、更新和查询方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL学习

一、MYSQL的SQL语句
  • SQL:Structure Query Language 结构化查询语言
  • DDL:数据定义语言:数据库的定义,与数据库/表结构相关:create(创建) drop(删除) alter(修改)
  • DML:数据操纵语言:操作表数据 insert(插入) update(修改) delete(删除)
  • DCL:数据控制语言:设置用户的访问权限 ,安全设置 grant,
  • DQL:数据查询语言:主要是select(查询) from子句 where子句
二、数据库的CRUD的操作
1.创建数据库
    create database 数据库的名字
    create database day01;

--	创建数据库的时候,指定字符集
	create database 数据库的名字 character set 字符集;(字符集是一套符号和编码,默认为utf8)
	create database day01_1 character set utf8;

	create database 数据库的名字 character set 字符集 collate 校对规则;(校对规则是在字符集内用于比较字符的一套规则)
	(主要了解utf8:mysql中的查看命令:show collation like "utf8%";create database day01_2 character set utf8 collate utf8_bin;
2.查看数据库
--	查看数据定义语句
	show create database 数据库名字;
	show create database day01;

--	查看所有数据库
	show database;

	information_schema(约束)
	performance_schema
	mysql
--	这三个一定不能删

3.修改数据库的操作
--	修改数据库的字符集
	alter database 数据库的名字 character set 字符集;
	alter database day01 character set gbk;
4.删除数据库
	drop database 数据库的名字;
	drop database day01;
5.其他数据操作命令
--	切换数据库(选中数据库)
	use 数据库名字;
	use day01;

--	查看一下当前正在使用的数据库
	select database();
三、表的CRUD操作
1.创建表
    create table 表名字(
        列名 列的类型(长度) 约束,
        列名 列的类型(长度) 约束
    )
列的类型:
javasql
intint
char/stringchar/varchar
char:固定长度(不足用空格补)
varchar:可变长度
长度代表的是字符的个数
doubledouble
floatfloat
booleanboolean
datedate : YYYY-MM-DD
time : hh:mm:ss
datetime : YYYY-MM-DD hh:mm:ss 默认值是null
timestamp : YYYY-MM-DD hh:mm:ss 默认使用当前时间
text : 主要用来存放文本
blob : 存放的是二进制
列的约束:
主键约束primary key(通常是唯一的)
唯一约束unique
非空约束not null
2.查看表
--	查看所有的表
  	show tables;
--	查看表的定义
  	show create table 表名;
--	查看表的结构
	desc 表名;
3.修改表
    添加列(addalter table 表名 add 列名 列的类型  列的约束;
    alter table student add gold int not null;

    修改列(modifyalter table 表名 modify 列名 列的类型;
    alter table student modify sex varchar(2);

    修改列名(change)
    alter table 表名 change 旧列名 新列名 列的类型
    alter table student change sex gender varchar(2);

    删除列(dropalter table 表名 drop 列名; 
    alter table student drop gold;

    修改表名(renamerename table 旧表名 to 新表名;
    rename table student to teacher;

    修改表的字符集(character setalter table 表名 character set 字符集;
    alter table teacher character set gbk;
4.删除表
    drop table 表名;
    drop table teacher;
四、SQL完成对表中数据的CRUD的操作
1.插入数据
    insert into 表名(列名1,列名2,列名3) values(1,2,3);
    insert into student(sid,name,age) values(1,'zhangsang',23);

--	简单写法(若插入全列名数据,表名后的列名可省略;若非全列名数据,则不可)
	insert into student values(2,'lisi',32);
	
-- 	批量插入
	insert into student values
	(3,'wangwu',20),
	(4,'chenliu',21),
	(5,'liuqi',22);
	
--	查看表中数据
	select * from student;
2.删除记录
--	指定条件只删除特定数据
	delete from 表名 [where 条件];	
	delete from student where sid=1;

-- 不指定条件 会将数据一条一条全部删除掉
	delete from 表名;
	delete from student;
	
--	delete和truncate的区别:
	(truncate table 表名;)
	delete:DML 一条一条删除表中数据
	truncate:DDL 先删除表再重建表
--	执行效率根据表中数据来决定:
	如果数据比较少,delete比较高效
	如果数据比较多,truncate比较高效
3.更新表记录
	update 表名 set 列名=列的值,列名2=列的值 [where 条件];
	update student set name='lisi' where id=1;
-- 	加where指定条件,更新特定的数据;不加条件修改全部数据
4.查询记录
	from...后面的语句最先执行
	select...后的语句最后执行
	
	select [distinct] [*] [列名,列名2] from 表名 [where 条件];
	distinct : 去除重复数据
	
-- 	简单查询
--	查询所有商品:
	select * from product;
--	查询商品的名称和价格:
	select pname,price from product;
	
-- 	别名查询. as 关键字,as关键字可以省略
	--表别名:(主要用于多表查询)
	select p.name,p.price from product as p;
	--列别名:
	select pname as 商品名称,price as 商品价格 from product;
	(as关键字可省略)
	
--	去掉重复的值
	select distinct price from product;
	
--	select运算查询:仅仅在查询结果上做了运算,不改变数据库中的原有数据(+ - * /)
	select *,price*0.5 as 折后价 from product;
	
-- 	条件查询[where 关键字]
	指定条件,确定要操作的记录
	
-- 	查询商品价格>60元的所有商品信息
	select * from product where price > 60;
	
-- 	where 后的条件写法
	--关系运算符 : > >= < <= = != <>
	<>:不等于 :标准SQL语句
	!=:不等于 :非标准SQL语句
	
	--逻辑运算:and,or,not
	--查询商品价格在10 到 100之间
	select * from product where price > 10 and price < 100;
	等价于
	select * from product where price between 10 and 100;
	
-- 	like :模糊查询
	_ :代表的是一个字符
	% :代表的是多个字符
	-- 查询出名字中带有小的所有商品 '%小%'
		select * from product where pname like '%小%';
		
-- in 在某个范围中获得值
	--查询出商品数量ID在1,3,5里面的商品
		select * from product where cno in (1,3,5);

-- 排序查询:order by 关键字
	asc:ascend 升序(默认的排序方式)
	desc:descend 降序
	--查询所有商品:
		--	按价格升序:
			select * from product order by price;
			select * from product order by price asc;
		--	按价格降序
			select * from product order by price desc;
			
-- 聚合函数
	sum():求和
	avg():求平均值
	max():最大值
	min():最小值
	count():统计数量
	--	商品价格总和
		select sum(price) from product;
	--	商品平均价格
		select avg(price) from product;
	-- 商品个数
		select count(*) from product;
	--	注意:where条件后面不能接聚合函数

--	分组:group by
	-- 编写顺序
	select... from...where...group...having...order by;
	
	--执行顺序
	from ...where...group...having...select...order by;
	
	-- 根据cno字段分组,分组后统计商品个数
	select cno,count(*) from product group by cno;
	
	-- having 关键字 可以接聚合函数的 出现在分组之后
	select cno,avg(price) from product group by con having avg(price) > 60;
	
	-- where 关键字 不可以接聚合函数 出现在分组之前
	
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值