MySQL入门
数据库简介:
-
用途:用于存储生活的几乎一切数据,如:身份、住房、车票、网站、...
-
概念:数据库服务器、数据库、数据表、一行数据(一条)、一列数据(字段)
-
分类:
-
关系型数据库:mysql、oracle、SQL server、...
-
非关系型数据库:Redis、MongoDB、...
-
-
发展:口述
-
SQL:Structured Query Language,结构化查询语言
-
SQL分类:
-
数据定义语言:DDL
-
数据操作语言:DML
-
数据查询语言:DQL
-
数据控制语言:DCL
-
数据事务语言:DTL
-
MySQL(ubuntu)安装:
-
安装:
sudo apt-get install mysql-server
-
若安装出现系统服务问题,很可能是自己添加系统服务的问题,移除即可
-
-
安全配置:
sudo mysql_secure_installation
-
按照提示,一路进行下去
-
设置支持远程连接,为后面做准备
-
-
连接测试:
mysql -h host -u user -p
-
-h:指定主机,localhost/127.0.0.1表示本机,本机可以省略
-
-u:指定用户,默认只有root用户
-
-p:指定密码,输入密码时要与登录分开,以防不测
-
示例:
mysql [-hlocalhost] -uroot -p
,然后根据提示输入密码-
端口:3306
-
退出:\h 或 help;
-
说明:所有的命令都是以';'结尾
-
-
数据定义语言(DDL)
-
查看库:
show databases;
,会显示数据库服务器上所有的数据库 -
创建库:
create database test;
,创建数据库test -
删除库:
drop database test;
,删除数据库test -
选择库:
use test;
,选择数据库test-
查看当前选中数据库:
-
show tables;
-
select database();
-
-
-
查看表:
show tables;
,查看当前选中数据库中的数据表 -
创建表:
create table user(username varchar(20), password char(32));
-
查看表结构:
desc user;
-
删除表:
drop table user;
-
查看创建方式:
-
库:
show create database test;
-
表:
show create table user;
-
-
修改字符集:
-
创建时指定:在创建表的语句后指定字符集。
-
修改配置文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
,在[mysqld]后面添加-
character-set-server=utf8
-
重启服务:
sudo service mysql restart
-
说明:以后再创建的库中的表默认字符集就是utf8
-
-
-
修改字段:
alter table user modify username char(30);
,不能修改名字 -
添加字段:
-
默认(最后)添加:
alter table user add age int(3);
-
在指定字段后添加:
alter table user add email varchar(60) after password;
-
在最开始出添加:
alter table user add id int(11) first;
-
-
删除字段:
alter table user drop age;
-
修改字段名称:
alter table user change email em char(32);
-
修改位置及名称:add/change/modify
-
alter table user modify em char(32) first;
-
-
修改表名:
alter table user rename new_user;
数据类型
-
整型:tinyint(1个字节)、smallint(2个字节)、mediumint(3个字节)、int(4个字节)、bigint(8个字节)
-
浮点类型:
-
float(m, d),单精度浮点数,4个字节,m表示总位数,d表示小数位数
-
double(m, d),双精度浮点数,8个字节,m表示总位数,d表示小数位数
-
decimal(m, d),以字符串的形式存储浮点数,用于金融领域等要求严格的场景
-
-
字符类型:
-
char:定长字符串,0~255个字节
-
varchar:变长字符串,0~65535个字节
-
-
时间日期:
-
date:日期,格式:2018-04-16
-
time:时间,格式:15:36:30
-
datetime:日期时间,格式:2018-04-16 15:37:38
-
timestamp:时间戳
-
year:年,只占1个字节,年份范围:1901~2155
-
-
符合类型:
-
set:集合类型,格式:set(s1, s2, ..., s63),最多63种可能
-
enum:枚举类型,格式:enum(e1,e2, ... ,e65535),最多65535种可能
-
-
字段修饰:
-
unsigned:无符号数
-
zerofill:高位0填充,防止出现负数
-
auto_increment:自动增加(1),用于整数,经常与主键结合使用
-
default:设置默认值
-
not null:不能为空
-
-
字符集及存储引擎
-
查看支持的字符集:
show character set;
,我们通常只使用utf8,不能书写成utf-8 -
查看支持的存储引擎:
show engines;
-
常用存储引擎:MyISAM和InnoDB
-
-
-
索引:
-
说明:简单理解,就是一本书最前面的目录,虽然可以提高读取效率,单并非越多越好。
-
分类:
-
普通索引(index):最基本的索引
-
唯一索引(unique):修饰的字段不能重复
-
主键索引(primary key):是一种特殊的唯一索引,一张表中只能有一个字段设置
-
全文索引(fulltext):多全局数据添加索引。
-
-
示例:
alter table user add index(em); # 给em字段添加普通索引
alter table user add unique(username); # 给username字段添加唯一索引
alter table user add primary key(id); # 将id设置为主键索引
alter table user drop index em; # 删除em字段的普通索引alter table 表名add fulltext(字段);
-
-
很多选项都可在创建表时指定,如:
create table user(
id int auto_increment,
name varchar(20),
primary key(id),
unique(name)
)engine=innodb default charset=utf8;