SQL简介

1、SQL定义:Structured Query Language:结构化查询语言
	*定义了操作所有关系型数据库的规则。
	*每一种数据库操作的方式存在不一样的地方,称为“方言”。
2、SQL通用语法
	*SQL 语句可以单行或多行书写,以分号结尾。
	*可使用空格和缩进来增强语句的可读性。
	*MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
	*3 种注释
		单行注释: -- 注释内容 或 # 注释内容(mysql 特有)
		多行注释: /* 注释 */
3、SQL分类
	1) DDL(Data Definition Language)数据定义语言
		用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
	2) DML(Data Manipulation Language)数据操作语言
		用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
	3) DQL(Data Query Language)数据查询语言
		用来查询数据库中表的记录(数据)。关键字:select, where 等
	4) DCL(Data Control Language)数据控制语言(了解)
		用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

DDL:操作数据库、表

一、操作数据库:CRUD

1. C(Create):创建
		* 创建数据库:
		CREATE DATABASE 数据库名称;
		* 创建数据库,判断不存在,再创建:
		CREATE DATABASE IF NOT EXISTS 数据库名称;
		* 创建数据库,并指定字符集
		CREATE DATABASE 数据库名称 CHARACTER SET 字符集名;
		例: 创建db4数据库,判断是否存在,并制定字符集为gbk
		CREATE DATABASE IF NOT EXISTS test CHARACTER SET gbk;
2. R(Retrieve):查询
		* 查询所有数据库的名称:
		SHOW DATABASES;
		* 查询某个数据库的字符集:查询某个数据库的创建语句
		SHOW CREATE DATABASE 数据库名称;
3. U(Update):修改
		* 修改数据库的字符集
		ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
4. D(Delete):删除
		* 删除数据库
		DROP DATABASE 数据库名称;
		* 判断数据库存在,存在再删除
		DROP DATABASE IF EXISTS 数据库名称;
5. 使用数据库
		* 查询当前正在使用的数据库名称
		SELECT DATABASE();
		* 使用数据库
		USE 数据库名称;

二、操作表

1. C(Create):创建
			CREATE TABLE 表名(
				列名1 数据类型1,
				列名2 数据类型2,
				....
				列名n 数据类型n
			);
			* 注意:最后一列,不需要加逗号(,)
			* 数据库类型:
				1. int:整数类型
					* age INT,
				2. double:小数类型
					* score DOUBLE(5,2)
				3. date:日期,只包含年月日,yyyy-MM-dd
				4. datetime:日期,包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
				5. timestamp:时间错类型	包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
					* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值

				6. varchar:字符串
					* name VARCHAR(20):姓名最大20个字符
					* zhangsan 8个字符  张三 2个字符


		* 创建表
			CREATE TABLE student(
				id INT,
				name VARCHAR(32),
				age INT ,
				score DOUBLE(4,1),
				birthday DATE,
				insert_time TIMESTAMP
			);
		* 复制表:
			CREATE TABLE 表名 LIKE 被复制的表名;
	2. R(Retrieve):查询
		* 查询某个数据库中所有的表名称
			SHOW TABLES;
		* 查询表结构
			desc 表名;
	3. U(Update):修改
		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. D(Delete):删除
			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. 如果不加任何条件,则会将表中所有记录全部修改。
10-04 21:18