MySQL基础

数据库基本概念

1.DataBase,简称:DB

2.含义:用于存储和管理数据的仓库

3.特点:

		1.持久化存储数据,数据库在本质上是一个文件系统
		2.方便存储和管理数据
		3.使用同一的方式操作数据库——SQL语言 

4.常见数据库软件

	1.oracle
	2.MySQL
	3.Microsoft SQL Server	
	...

#SQL
1.什么是SQL?
Structured Query Language:结构化查询语言
通俗来说,是定义了操作所有关系型数据库的规则。
每一种数据库操作的方式存在不同的地方,称作“方言”
2.SQL通用语法
1.SQL语句可以单行或多行书写,以分号结尾。
2.使用空格和缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,但关键字建议大写
4.注释
单行注释:-- 注释内容、# 注释内容
多行注释: /* 注释 */
3.SQL分类;
1)DDL(Data Difinition Language): 数据定义语言,一般用来库和表头的创建和删除;
关键字:create、drop、alter等
2) DML(Data Manipulation Language): 数据操作语言,一般用来做表中数据的增、删、改;
关键字:insert、delete、update
3) DQL(Data Query Language): 数据查询语言,一般用来做表中数据的查;
关键字:select、where
4) DCL(Data Control Language): 数据控制语言,一般是DBA才会用到的数据库用户管理及日常维护语言。
关键字:GRANT、REVOKE
##DDL:操作数据库、表

1.操作数据库
	1.创建:
			*创建数据库:
				create database 数据库名;
			*创建数据库,判断不存在,再创建:
				create database if not exists 数据库名;
			*创建数据库,判断不存在,再创建,并指定字符集:
				create database if not exists 数据库名 character set 字符集;

	2.查询:
			*查询所有数据库的名称:
				show databases;
			*查询数据库的字符集:查询数据库的创建语句
				show create database 数据库名;
	3.修改:
			*修改数据库的字符集
				alter database 数据库名 character set 字符集;
	4.删除:
			*删除数据库
				drop database 数据库名;
			*判断数据库是否存在,存在再删除
				drop database if exists 数据库名;
			
	5.使用:
			*查询当前正在使用的数据库名称
				select database();
			*使用数据库
				use 数据库名;
2.操作表
	1.创建:	
			*创建表
				create table 表名(
					列名1 数据类型,
					列名2 数据类型,
					列名3 数据类型,
					...
					列名n 数据类型
				);
			**时间戳类型:包含年月日时分秒,此字段一般不赋值,使用当前默认时间
			
			*复制表(创建表2,结构与表1一样)
				create table 表名2 like 表名1;


				 		
	2.查询:
			*查询数据库中所有表的名称
				show tables;
			*查询表结构
				desc 表名;
			*查询表的字符集
				show create table 表名;
	3.修改:
			1.修改表名
				alter table 表名 rename to 新表名;
			2.修改表的字符集
				alter table 表名 character set 字符集;
			3.添加一列
				alter table 表名 add 列名 数据类型;
			4.修改列名称、类型
				alter table 表名 change 原列名 新列名 新类型;
				alter table 表名 modify 列名 新类型;
			5.删除列
				alter table 表名 drop 列名;
	4.删除:
			*删除表
				drop table 表名;
			*判断表是否存在,存在再删除
				drop table if exists 表名;

DML:增删改表中数据

1.添加数据
	语法:
		insert into 表名(列名1,列名2,...,列名n) values(值1,值2,...,值n);
		
	注意:
		1.列名与值相对应
		2.如果不定义列名,则默认给所有列添加值
				insert into 表名 values(值1,值2,...,值n);
		3.除了数字类型,其他内容需要是要引号
2.删除数据
	语法:
			delete from 表名 [where条件];
	注意:
		1.如果没有条件,则会删除所有记录。
		2.如果需要删除所有记录
				1.delete from 表名;	--不推荐使用,有多少条记录就会执行多少次,效率低
				2.truncate table 表名; --推荐使用,删除表,并创建一个结构相同的空表,效率较高
3.修改数据
		语法:
			update 表名 set 列名1 = 值1,列名2 = 值2,... [where 条件]
		注意:
			1.如果没有条件,则会修改所有记录。一般不会使用

DQL :查询表中的记录

CREATE TABLE stu (   
			id int,  -- 编号   
			name varchar(20), -- 姓名   
			age int, -- 年龄   
			sex varchar(5),  -- 性别   
			address varchar(100),  -- 地址   
			math int, -- 数学   
			english int -- 英语 
			); 
INSERT INTO stu(id,NAME,age,sex,address,math,english) VALUES 
	(1,'马云',55,'男', ' 杭州',66,78),
	(2,'马化腾',45,'女','深圳',98,87),
	(3,'马景涛',55,'男','香港',56,77),
	(4,'柳岩 ',20,'女','湖南',76,65),
	(5,'柳青',20,'男','湖南',86,NULL),
	(6,'刘德华',57,'男','香港 ',99,99),
	(7,'马德',22,'女','香港',99,99),
	(8,'德玛西亚',18,'男','南京',56,65); 		

1.语法:
	select 字段列表
	from 表名列表
	[where 条件列表]
	[group by 分组字段]
	[having 分组之后的条件限定]
	[order by 排序]
	[limit 分页限定]

2.基础查询
	1.多个字段的查询
		select 字段1, 字段2, ...   from 表名;
			--查询 姓名、年龄
			SELECT name,age from stu;
			
		注意:				
			如果查询所有字段,使用*代替字段列表
				SELECT * FROM stu;
	2.去除重复
		distinct:
			--去除重复结果集
			SELECT DISTINCT address FROM stu;

	3.计算列
		一般使用四则运算计算一些列的值,一般只会进行数值的计算
		ifnull(表达式1,表达式2)	:null参与的运算,计算结果为null
			判断表达式1是否为null,如果是,就用表达式2替换

		--计算math、English分数之和
			SELECT name,math,english, math + english FROM stu;
		--如果有null参与的运算,计算结果为null
			SELECT name,math,english, IFNULL(math,0) + IFNULL(english,0)  FROM stu;

	4.起别名
		as:可省略
		--起别名
			SELECT name,math 数学,english 英语, IFNULL(math,0) + IFNULL(english,0) 总分  FROM stu;

3.条件查询
	1. where子句后跟条件
	2. 运算符
		* >、<、<=、>=、=、<> 
				--查询年龄大于20的
				SELECT * FROM stu WHERE age > 20;

				--查询年龄大于等于20的
				SELECT * FROM stu WHERE age >= 20;

				--查询年龄等于20的
				SELECT * FROM stu WHERE age = 20;

				--查询年龄不等于20的
				SELECT * FROM stu WHERE age != 20;
				SELECT * FROM stu WHERE age <> 20;
		* BETWEEN...AND
				--查询年龄大于等于20且小于等于30
				SELECT * FROM stu WHERE age >= 20 && age <= 30;
				SELECT * FROM stu WHERE age >= 20 and age <= 30;
				SELECT * FROM stu WHERE age BETWEEN 20 and 30;
		* IN(集合)
				--查询年龄22、18、25
				SELECT * FROM stu WHERE age = 18 OR age = 22 or age = 25;
				SELECT * FROM stu WHERE age = 18 || age = 22 || age = 25;
				SELECT * FROM stu WHERE age IN (18,22,25);
		* LIKE :模糊查询
			* 占位符:
					* _:单个任意字符
					* %:多个任意字符
			
		* IS NULL、IS NOT NULL
				--查询英语成绩为null 		null不能使用判断
				SELECT * FROM stu WHERE english IS NULL;
				SELECT * FROM stu WHERE english IS NOT NULL;
		* and 或 &&
				SELECT * FROM stu WHERE age >= 20 && age <= 30;
				SELECT * FROM stu WHERE age >= 20 and age <= 30;
		* or 或 ||
				--查询年龄22、18、25
				SELECT * FROM stu WHERE age = 18 OR age = 22 or age = 25;
				SELECT * FROM stu WHERE age = 18 || age = 22 || age = 25;
		* not 或 !
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值