mysql 随手笔记(1)

mysql 随手笔记(1)

一、什么是数据库?

存储数据的仓库
本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的
所有的关系型数据库都可以使用通用的SQL语句管理 DBMS Database Management System

二、常见数据库

Oracle	
MySQL	
Microsoft SQL Server
PostgreSQL
MongoDB
DB2
Microsoft Access
Elasticsearch
Redis
Cassandra
............

三、DBMS

数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用 中实体的数据,一般会在数据库创建多个表,以保存程序中实体 User 的数据。
	一般结论是:
			1、一个数据库服务器包含多个库
			2、一个数据库包含多张表 
			3、一张表包含多条记录 

四、SQL的概念

4.1 什么是SQL
	Structured Query Language 结构化查询语言
4.2 SQL作用
	1、是一种所有关系型数据库的查询规范,不同的数据库都支持。
    2、通用的数据库操作语言,可以用在不同的数据库中。
    3、不同的数据库SQL语句有一些区别
4.3 SQL语句分类
	1、Data Definition Language (DDL 数据定义语言) 如:建库,建表 
	2、Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改 
	3、Data Query Language(DQL 数据查询语言),如:对表中的查询操作 
	4、Data Control Language(DCL 数据控制语言),如:对用户权限的设置 
4.4 SQL的语法
	1、每条语句以分号结尾,如果在SQLyog中不是必须加的。
	2、SQL中不区分大小写,关键字中认为大写和小写是一样的
	3、有3种注释

五、DDL操作数据库

5.1 创建数据库
	5.1.1 创建数据库的几种方法
	* 创建数据库
		CREATE DATASASE 数据库名;
	* 判断数据库是否已经存在,不存在则创建数据库
		CREATE DATABASE IF NOT EXISTS 数据库名;
	* 创建数据库并指定字符集
		CREATA DATABASE 数据库名 CHARACTER SET 字符集;
	5.1.2 具体操作:
	* 直接创建数据库db1
		create database db1;
	* 判断是否存在,如果不存在则创建数据库db2 
		create database if not exists db2;
	* 创建数据库并指定字符集为gbk 
		create database db3 default character set gbk; 
5.2 查看数据库
	* 按tab键可以自动补全关键字
		--、查看所有的数据库
			show databases;
		--、查看某个数据库的定义信息 
			show create database db3; 
			show create database db1; 
5.3 修改数据库
	5.3.1 修改数据库默认的字符集
		ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集; 
	5.3.2 具体操作:
		将db3数据库的字符集改成utf8
		alter database db3 character set utf8; 
5.4 删除数据库
	5.4.1 删除数据库的语法
		DROP DATABASE 数据库名; 
	5.4.2 具体操作;
		* 每行SQL语句需要选中再执行,‘可以按F9’
		删除db2数据库
		drop database db2;
5.5 使用数据库
	5.5.1 查看正在使用的数据库
		SELECT DATABASE(); 
	5.5.2 使用/切换数据库  
		USE 数据库名;
	5.5.3 具体操作;
		-- 查看正在使用的数据库
			select database();
		-- 改变要使用的数据库
			use db4;

六、DDL操作表结构

6.1 创建表
	6.1.1 创建表的格式 
		CREATE TABLE 表名 ( 
			字段名 1 字段类型 1,  
			字段名 2 字段类型 2 
		);
6.2 查看表 
	6.2.1 查看某个数据库中的所有表  
		SHOW TABLES;
	6.2.2 查看表结构  
		DESC 表名;
	6.2.3 查看创建表的SQL语句  
		SHOW CREATE TABLE 表名; 
	6.2.4 具体操作
		* 查看 day21 数据库中的所有表 
			use day21; 
			show tables; 
		* 查看 student 表的结构 
			desc student; 
		* 查看 student 的创建表 SQL 语句 
			show create table student; 
6.3 快速创建一个表结构相同的表 
	6.3.1 语法 
		CREATE TABLE 新表名 LIKE 旧表名; 
	6.3.2 具体操作: 
		*创建 s1 表,s1 表结构和 student 表结构相同 
			create table s1 like student; 
			desc s1;
6.4 删除表 
	6.4.1 直接删除表  
		DROP TABLE 表名;
	6.4.2 判断表是否存在,如果存在则删除表 
		DROP TABLE IF EXISTS 表名; 
	6.4.3 具体操作;
		-- 直接删除表s1表 
		drop table s1;
        -- 判断表是否存在并删除s1表 
        drop table if exists `create`; 
	注:与直接删除的区别 
		如果表不存在,不删除,存在则删除 
6.5 修改表结构 
	6.5.1 添加表列ABC
		ALTER TABLE 表名 ADD 列名 类型; 
	6.5.2 修改列类型MODIFY 
		ALTER TABLE 表名 MODIFY 列名 新的类型; 
		* 例:将 student 表中的 remark 字段的改成 varchar(100) 
		alter table student modify remark varchar(100); 
	6.5.3 修改列名 CHANGE 
		ALTER TABLE 表名 CHANGE 旧列名 新列名 类型; 
	6.5.4 删除列 DROP
		ALTER TABLE 表名 DROP 列名; 
	6.5.5 修改表名
		RENAME TABLE 表名 TO 新表名; 
	6.5.6 修改字符集character set
		ALTER TABLE 表名 character set 字符集; 

七、DML操作表中的数据

7.1 插入记录
		INSERT [INTO] 表名 [字段名] VALUES (字段值) 
		INSERT INTO 表名:表示往哪张表中添加数据 
		(字段名 1, 字段名 2, …):要给哪些字段设置值 
		VALUES (值 1, 值 2, …):设置具体的值 
	7.1.1 插入全部字段
		所有的字段名都写出来  
		INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3);
        不写字段名  
        INSERT INTO 表名 VALUES (值 1, 值 2, 值 3…); 
	7.1.2 插入部分数据 
		INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...); 
	注:没有添加数据的字段会使用NULL 
7.2 更新表记录 
		UPDATE 表名 SET 列名=值 [WHERE 条件表达式]  
		UPDATE: 需要更新的表名 
		SET: 修改的列值 
		WHERE: 符合条件的记录才更新 
		你可以同时更新一个或多个字段。 
		你可以在 WHERE 子句中指定任何条件
	7.2.1 不带条件修改数据  
		UPDATE 表名 SET 字段名=值;  -- 修改所有的行 
	7.2.2 带条件修改数据  
		UPDATE 表名 SET 字段名=值 WHERE 字段名=值; 
	7.2.3 具体操作
		--  不带条件修改数据,将所有的性别改成女 
		update student set sex = '女'; 
		-- 带条件修改数据,将id号为2的学生性别改成男 
		update student set sex='男' where id=2; 
		-- 一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京
		update student set age=26, address='北京' where id=3; 
7.3 删除表记录 
		DELETE FROM 表名 [WHERE 条件表达式] 
		如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。 
		你可以在 WHERE 子句中指定任何条件 
	7.3.1 不带条件删除数据  
		DELETE FROM 表名; 
	7.3.2 带条件删除数据  
		DELETE FROM 表名 WHERE 字段名=值;
    7.3.3 使用truncate删除表中所有记录  
    	TRUNCATE TABLE 表名;
    7.3.4 truncate和delete的区别: 
    	truncate 相当于删除表的结构,再创建一张表。
    7.3.5 具体操作
    -- 带条件删除数据,删除id为1的记录 
    delete from student where id=1; 
    -- 不带条件删除数据,删除表中的所有数据 
    delete from student;

八、DQL查询表中的数据

-- 查询不会对数据库中的数据进行修改.只是一种显示数据的方式 
SELECT 列名 FROM 表名 [WHERE 条件表达式]  
1) SELECT 命令可以读取一行或者多行记录。 
2) 你可以使用星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据 
3) 你可以使用 WHERE 语句来包含任何条件。 

8.1 简单查询
	8.1.1 查询表所有行和列的数据 
		使用*表示所有列  
		SELECT * FROM 表名;
    8.1.2 查询指定列 
    	* 查询指定列的数据,多个列之间以逗号分隔  
    	SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
        * 查询 student 表中的 name 和 age 列 
        select name,age from student;
8.2 指定列的别名进行查询 
	8.2.1 使用关键字 
		* 使用别名的好处: 显示的时候使用新的名字,并不修改表的结构。
	8.2.2 语法:
		* 对列指定别名 
		SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名; 
		* 对列和表同时指定别名 
		SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名; 
		注:表使用别名的原因:用于多表查询操作 
8.3 清除重复值 
	8.3.1 查询指定列并且结果不出现重复数据 
		SELECT DISTINCT 字段名 FROM 表名; 
8.4 查询结果参与运算 
	8.4.1 某列数据和固定值运算 
		SELECT 列名 1 + 固定值 FROM 表名; 
	8.4.2 某列数据和其他列数据参与运算  
		SELECT 列名 1 + 列名 2 FROM 表名; 
	*注: 参与运算的必须是数值类型 
8.5 条件查询
	8.5.1 为什么要条件查询
		如果没有查询条件,则每次查询所有的行。实际应用中,一般要指定查询的条件。对记录进行过滤。 
	8.5.2 条件查询的语法 
		SELECT 字段名 FROM 表名 WHERE 条件; 
		流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回
        * 逻辑运算符
        	and 或 && 【与,SQL 中建议使用前者,后者并不通用】
        	or 或 ||  【或】 
        	not 或 !  【非】 
        * in 关键字  
        	SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...); 
        	in 里面的每个数据都会作为一次条件,只要满足条件的就会显示 
        * 范围查询 
        	BETWEEN 值 1 AND 值 2 
        	表示从值 1 到值 2 范围,包头又包尾 
        	比如:age BETWEEN 80 AND 100 相当于: age>=80 && age<=100
            	例:查询 english 成绩大于等于 75,且小于等于 90 的学生
                	select * from student3 where english between 75 and 90; 
		* like 关键字 
			LIKE 表示模糊查询 
			SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串'; 
        * MySQL 通配符 
        	% 匹配任意多个字符串
        	- 匹配一个字符
        	例:-- 查询姓马的学生 
        		select * from student3 where name like '马%'; 
        		select * from student3 where name like '马';

你可能感兴趣的:(mysql 随手笔记(1))