SQL语言
SQL:结构化查询语言(Structured Query Language)
在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言;
SQL语句分类
DDL:数据定义语言
DCL :数据控制语言
DML:数据操作语言
DQL: 数据查询语言
SQL语句书写规范
在数据库系统中,SQL语句不区分大小写(建议用大写) 。
但字符串常量区分大小写。
SQL语句可单行或多行书写,以“;”结尾。
关键词不能跨多行或简写。
用空格和缩进来提高语句的可读性。
子句通常位于独立行,便于编辑,提高可读性。
注释:
//。多行注释
“–” 单行注释
cp support-files/mysql.server /etc/init.d/mysql.server
MySQL注释:
#
MySQL数据类型
MySQL中的数据类型主要分为四类:数值型、时间型、文本型、二进制型;
数值型
数据类型 | 字节数 |
---|---|
TINYINT | 1 |
SMALLINT | 2 |
MEDIUMINT | 3 |
INT | 4 |
BIGINT | 8 |
FLOAT | 4 |
DOUBLE | 8 |
DECIMAL | M+2 |
时间型
数据类型 | 字节数 | 取值范围 |
---|---|---|
YEAR | 1 | 1901~2155 |
DATE | 4 | 1000-01-01~9999-12-31 |
TIME | 3 | -838:59:59~838:59:59 |
DATETIME | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001~20380119111407 |
文本型
数据类型 | 字节数 | 取值范围 |
---|---|---|
CHAR(n) | n | |
VARCHAR(n) | m(m<n) | |
TINYEXT | n+2 | 0<n<255 |
TEXT | n+2 | 0<n<65535 |
MEDIUMTEXT | n+3 | 0<n<167772150 |
LONGTEXT | N+4 | 0<N<4294967295 |
ENUM | ||
SET |
二进制型
数据类型 | 字节数 | 取值范围 |
---|---|---|
BINARY(n) | n | 0~n |
VARBINARY(n) | n+1 | 0~n |
BIT(n) | n | 0~64 |
TINYBLOB | 可变长二进制数据 | 0~255 |
BLOB | 可变长二进制数据 | 0~(2^16 -1) |
数据库基本操作
库操作
查看
SHOW DATABASES; #查看当前有什么数据库
MySQL自带数据库
Information_schema: 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信息、字符集信息、分区信息等。(数据字典表)
performance_schema: 主要存储数据库服务器的性能参数
mysql: 存储了系统的用户权限信息及帮助信息。
sys: 5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema和 performance_schema结合起来,查询出更加令人容易理解的数据。
test: 系统自动创建的测试数据库,任何用户都可以使用。
创建
create database 数据库名;
删除
drop database 数据库名;
使用
use 数据库名;
#查看当前库有什么表
SHOW TABLES;
#查看当前连接的数据库
SELECT DATABASE();
#查看数据库版本
SELECT VERSION();
#查看当前用户
SELECT USER();
#查看所有用户
SELECT User,Host,Password FROM mysql.user;
数据库对象命名
必须以字母开头
可以使用数字和三个特殊字符(#$_)
不能使用MySQL的关键字
同一schema下的对象不能同名
表的操作
创建
CREATE TABLE 表名(
列名 类型 约束,
列名 类型 约束,
...
);
查看
#查看表结构
DESC TABLE 表名;
删除
DROP TABLE 表名;
修改
#修改列类型
ALTER TABLE 表名 MODIFY 列名 列类型;
#增加列
ALTER TABLE 表名 ADD 列名 列类型;
#删除列
ALTER TABLE 表名 DROP 列名;
#修改列名
ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
#修改表名
ALTER TABLE 表名 CHANGE 新表名;
ALTER TABLE 表名 TO 新表名;
复制表结构
#方法一
CREATE TABLE 新表名 LIKE 源表;
#方法二
CREATE TABLE 新表名 SELECT * FROM 源表;
#方法三
INSRET INTO 表 SELECT * FROM 源表;
表的约束
约束时在数据表上强制执行的数据校验规则。
约束主要用于保证数据的完整性。
当数据表中有相互依赖时,可以保护数据不被删除。
常见约束:
非空约束 | NOT NULL | 确保字段值不为空 |
唯一约束 | UNIQUE KEY | 确保所在的字段或者字段组合不出现重复值 |
主键 | PRIMARY KEY | 非空且唯一 |
外键 | FOREIGN | 确保了相关的两个字段的两个关系 |
检查 | CHECK | - |
默认值 | DEFAULT | 使用default关键字设置每一个字段的默认值 |
定义约束的语法
列级约束:在定义列的同时定义约束
语法:列定义 约束类型,
表级约束:在定义了所有列之后定义的约束
语法:
列定义
[CONSTRAINT 约束名] 约束类型(列名)
约束名的取名规则
推荐采用:表名_列名_约束类型简介
约束可以在创建表时就定义,也可以在创建完后再添加
删除约束
#删除NOT NULL约束
alter table 表名 modify 列名 类型;
#删除UNIQUE约束
alter table 表名 drop index 惟一约束名;
#删除PRIMARY KEY约束
alter table 表名 drop primary key;
#删除FOREIGN KEY约束
alter table 表名 drop foreign key 外键名;