1, MySQL 简介
-
mysql是一个开源的关系型数据库管理系统,现在是oracle公司旗下的一款产品,由C和C++语言编写,可移植性高。支持
在多种操作系统上安装,最常见有AIX,linux,window。mysql因为开源免费,所以受到了目前互联网行业的欢迎
-
以mysql作为数据库,linux系统作为操作系统,apache或者nginx作为web服务器,perl/php/python作为服务端的脚
本解释器,就可以搭建起一个免费的网站。被业界称为LNMP或者LAMP
2, MySQL sql 语句分类
- DDL: 数据定义语言 (Data Defifinition Language) 例如:建库,建表
- DML: 数据操纵语言(Data Manipulation Language) 例如:对表中的数据进行增删改操作
- DQL: 数据查询语言(Data Query Language) 例如:对数据进行查询
- DCL: 数据控制语言(Data Control Language) 例如:对用户的权限进行设置
3, MySQL DDL sql
3.1 数据库相关操作
-
创建数据库 sql:
-
create database + db_name; # create database test;
-
-
进入数据库:
-
use + db_name; # use test;
-
-
查看当前所在数据库:
-
select database(); # 注意此处是一个函数, 需要加()调用
-
-
判断数据库是否存在, 如果不存在则创建:
-
create databses if not exists db_name; # create database if not exists test1;
-
-
指定数据库编码为
gbk
:-
create database db_name character set 'gbk'; # CREATE DATABASE test character SET 'utf8';
-
-
查看数据库的编码:
-
show create database db_name; # show create database test;
-
-
查看当前
mysql
使用的字符集:-
show variables like 'character%';
-
3.2 数据表常用的数据类型
-
整数类型
类型 大小 范围(有符号) 范围(无符号) TINYINT 1 B (-128, 127) (0, 255) SMALLINT 2 B (-32768, 32767) (0, 65535) MEDIUMIT 3 B (-8388608,8388607) (0,16777215) INT 4 B 很大 很大 BIGINT 8 B 很大 很大 -
浮点型
类型 大小 说明 FLOAT(m, d) 4字节 m代表总个数, d表示小数位个数 DOUBLE(m, d) 8字节 m代表总个数, d表示小数位个数 -
定点类型
类型 大小 说明 DECIMAL(m,d) 依赖m,d m代表总个数, d表示小数位个数 -
字符串类型
类型 大小(实测大小为宽度, mysql:5.7) 用途 CHAR 0-255 VARCHAR 0-65535 TINYTEXT 0-255 TEXT 0-65535 MEDIUMTEXT 0-16777215 LOGTEXT 0-4294967295 char 和 varchar 对比: char 存储内存固定, 所占空间会大些, 但是存取速度会快一些;
-
时间类型
类型 字节数 格式 备注 data 3 yyy-mm-dd 日期 time 3 HH:mm:ss 时分秒 year 1 yyyyy 年 datetime 8 yyyy-MM-dd HH:mm:ss 日期+时间 timestamp 4 yyyy-MM-dd HH:mm:ss 时间戳
3.3 MySQL 数据表
-
创建表
-
create table table_name ( 字段一 字段类型1 约束1 说明1, 字段二 字段类型2 约束2 说明2, 字段三 字段类型3 约束3 说明3, 字段四 字段类型4 约束4 说明4 ) CREATE table teacher ( id int auto_increment PRIMARY KEY, name VARCHAR(5) NOT NULL DEFAULT "" COMMENT "老师姓名", age TINYINT NOT null COMMENT "老师年龄", identify VARCHAR(64) not null )
-
-
约束条件
-
comment ----说明解释 not null ----不为空 default ----默认值 unsigned ----无符号(即正数) auto_increment ----自增 zerofill ----自动填充 unique key ----唯一值
-
-
查看表基本结构信息
-
show tables; -- 查看当前数据库所有的表 desc teacher; -- 查看表结构 show CREATE TABLE teacher; -- 查看创建表的 SQL 语句
-
-
修改表名
-
RENAME TABLE old_table_name to new_table_name; # RENAME TABLE teacher to tea;
-
-
增加一列
-
alter table table_name add column_name 类型 限定条件 说明; # ALTER TABLE tea add gender ENUM("m", 'w', 'unknown') not null DEFAULT 'unknown';
-
-
修改列类型
-
alter table table_name modify column_name 新类型 # alter table tea MODIFY age int;
-
-
修改列名
-
alter table table_name change old_column_name new_column_name 类型 限制条件; # ALTER TABLE tea CHANGE name nickname CHAR(50) DEFAULT 'haha';
-
-
删除列
-
alter table table_name drop column_name; # ALTER table tea DROP nickname;
-
-
删除表
-
drop table table_name; # drop table stu1; # drop table if exists stu1;
-