一、SQL
1.什么是SQL
结构化查询语言(Structured Query Language) 简称SQL,定义了操作所有关系型数据库的规则
SQL语句就是对数据库进行操作的一种语言
2.SQL作用
通过SQL语句我们可以方便地操作数据库中的数据、表、数据库。
SQL是数据管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
3.SQL通用语法
(1)SQL语句可以单行或多行书写,以分号结尾;
(2)可使用空格和缩进来增强语句的可读性;
(3)MySQL数据库的SQL语句不区分大小写,关键字建议使用大写;
(4)三种注释:
a.单行注释: -- 注释内容(注意--后有一个空格) ,或者 # 注释内容(mysql特有)
b.多行注释:/*注释内容*/
4.SQL语句分类
(1)DDL(Data Definition Langage)数据定义语言
用来定义数据库对象:数据库、表、列等。
关键字:create,drop,alter等;
(2)DML(Data Manipulation Language)数据操作语言
用来对数据库中表的内容进行增删改。
关键字:insert,delete,updata等;
(3)DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。
关键字:select,where等;
(4)DCL(Data Control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别以及创建用户。
关键字:GRANT,REVOKE;
二、DDL:操作数据库、表
1.(1)C(create)增:创建、添加、新增操作数据库 CRUD
创建数据库:
CREATE DATABASE name(所创建数据库名字);
CREATE DATABASE IF NOT EXISTS name(所创建数据库名字);此方法在创建前会查询该名字数据库是否存在,避免因已经存在同名的而创建失败;
CREATE DATABASE name(所创建数据库名字) CHARACTER SET 字符集类型;
此方法为创建指定字符集的数据库;
集合以上功能:
CREATE DATABASE IF NOT EXUSTS name CHARACTER SET 字符集类型;
(2)R(retrieve)查:查询
查询数据库名称:
SHOW DATABASES;
查询某个数据库的字符集(查询某个数据库的创建):
SHOW CREATE DATABASE name(所查询数据库名字);
(3)U(updata)改:修改
修改数据库的字符集:
ALTER DATABASE name(数据库名称) CHARACTER SET 字符集名称;
(4)D(delete)删:删除
删除数据库:
DROP DATABASE name(数据库名称);
DROP DATABASE IF EXISTS name(数据库名称); 这种方法先判断数据库是否存在
(5)使用数据库
查询当前正在使用的数据库:
SELECT DATABASE();
使用数据库:
USE name;
2.操作表
(1)C(create)增:创建、添加、新增
创建表:
CREATE TABLE 表名(
列名1 数据类型1,
列名2 数据类型2,
......
列名n 数据类型n
);
a.最后一列不需要加逗号
b.数据库类型:(加粗的为常用数据类型)
整数类型:tinyInt 很小的整数、smallInt 小的整数、mediumInt 中等大小的数、int(integer) 普通大小的整数;
小数类型:float 单精度浮点数、double 双精度浮点数[ 数据名称 double(最多有几位的位数,保留几位的位数); ]、decimal(m,d) 压缩严格地定点数;
日期类型:
year YYYY|1901~2155、
time HH:MM:SS|-838:59:59~838:59:59、
date YYYY-MM-DD|1000-01-01~9999-12-31、
datetime YYYY-MM-DD HH:MM:SS|1000-01-01~9999-12-31 23:59:59、
timestamp YYYY-MM-DD HH:MM:SS|1970-01-01 00:00:01 UTC~2038-01-19 03:14:07UTC[如果将来不给这个字段赋值,或赋值为null,则默认使用当前系统时间来自动赋值];
字符串:
CHAR(M) M为0~255之间的整数、VARCHAR(M) M为0~65535之间的整数;
BLOB:
TINYBLOB 允许长度0~255字节、BLOB 允许长度0~65535字节、MEDIUMBLOB 允许长度0~167772150字节、LONGBLOB 允许长度0~4294967295字节;
CLOB:
TINYTEXT 允许长度0~255字节、TEXT 允许长度0~65535字节、MEDIUMTEXT 允许长度0~167772150字节、LONGTEXT 允许长度0~4234967295字节;
二进制:
VARBINARY(M) 允许长度0~M个字节的变长字节、BINARY(M) 允许长度0~M个字节的定长字节;
复制表:
CREATE TABLE 表名 LIKE 被复制的表名;
(2)R(retrieve)查:查询
查询某个数据库中所有的表名称:
SHOW TABLES;
查询表结构:
DESC 表名;
(3)U(updata)改:修改
修改表名:
ALTER TABLE 表名 RENAME TO 新的表名;
修改表的字符集:
ALTER TABLE 表名 CHARACTER SET 字符集名称;
添加列:
ALTEER TABLE 表名 ADD 列名 数据类型;
修改列名称、数据类型:
ALTER TABLE 表名 CHANGE 原来的列名 新列名 新列名数据类型;(修改列名和数据类型)
ALTER TABLE 表名 MODIFY 列名 新的数据类型;(只修改数据类型)
删除列:
ALTER TABLE 表名 DROP 列名;
(4)D(delete)删:删除
删除表:
DROP TABLE IF EXISTS 表名;