MySQL基础(一)
1 安装与配置
-
选择典型安装
-
在安装目录文件中找到my.ini文件
-
修改my.ini文件中:
[mysql]
default-character-set=utf8
2 启动与停止
-
在Windows命令行模式
-
启动
net start mysql;
-
停止
net stop mysql;
3 登录与退出
-
清屏
cls;
-
查看版本信息
mysql -V
-
登录
mysql -uroot -p -P3306 -h127.0.0.1
-
退出
quit
exit
\q
4 修改提示符
-
连接客户端时通过参数指定
shell>mysql -uroot -p --prompt 提示符
-
连接上客户端后,通过prompt命令修改
mysql>prompt 提示符
参数 描述 \D 完整的日期 \d 当前数据库 \h 服务器名称 \u 当前用户 案例分析
mysql>prompt \u@\h \d>
root@localhost <none> >
当前用户@当前主机 未打开任何数据库则显示none
root@localhost <none> > USE tset; %打开数据库
root@localhost test>
5 常用命令以及语法规范
常用命令
命令 | |
---|---|
显示当前服务器版本 | SELECT VERSION() |
显示当前日期时间 | SELECT NOW() |
显示当前用户 | SELECT USER() |
MySQL语法的规范
-
关键字与函数名称全部大写
-
数据库名称、表名称、字段名称全部小写
-
SQL语句必须以分号结尾
6 如何操作MySQL数据库
-
创建数据库(默认自带四个数据库)
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAUIT] CHARACTER SET [=] charset_name
案例分析:
创建最简单数据库
CREATE DATABASE t1;
自定义字符
CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET gbk;
-
查看当前服务器下的数据表列表
SHOW {DATABASE | SCHEMA}
[LIKE 'pattern' | WHERE expr]
案例分析:(默认字符为utf8)
SHOW CREATE DATABASE t1;
查看警告
SHOW WARNINGS;
-
修改数据库
ALTER {DATABASE | SCHEMA} [db_name] DEFAULT CHARACTER SET [=] charset_name
-
删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
7 数据类型
数据类型是指列、存储过程参数、表达式和局部变量的数据特征。它决定了数据的存储格式,代表了不同的信息类型
整型
数据类型 存储范围 字节 TINYINT 有符号值:-128到127(-2^7 到2^7-1) 无符号值:0到255(0到2^8-1) 1 SMALLINT 有符号值:-32768到32767(-2^15到2^15-1) 无符号值:0到65535(0到2^16-1) 2 MEDIUMINT 有符号值:-8388608到8388607(-2^23到2^23-1) 无符号值:0到16777215(0到2^24-1) 3 INT 有符号值:-2147483648到2147483647(-2^31到2^31-1) 无符号值:0到4294967295(0到2^32-1) 4 BIGINT 有符号值:-9223372036854775808到922337303685477587(-2^63到2^63-1) 无符号值:0到18446744073709551615(0到2^64-1) 8
浮点型
数据类型 | 存储范围 |
---|---|
FLOAT[(M,D)] | -3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。 M是数字总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7为小数位。 |
DOUBLE[(M,D)] | -1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308 |
日期时间型
列类型 | 存储需求 |
---|---|
YEAR | 1 |
TIME | 3 |
DATE | 3 |
DATETIME | 8 |
TIMESTAMP | 4 |
字符型
列类型 | 存储需求 |
---|---|
CHAR(M) | M个字节,0<=M<=255 |
VARCHAR(M) | L+1个字节,其中L<=M且0<=M<=35535 |
TINYTEXT | L+1个字节,其中L<2^8 |
TEXT | L+2个字节,其中L<2^16 |
MEDIUMTEXT | L+3个字节,其中L<2^24 |
LONGTEXT | L+4个字节,其中L<2^32 |
ENUM('value1','value2',...) | 1或2个字节,取决于枚举值的个数(最多65535个值) |
SET('value1','value2',...) | 1、2、3、4或者8个字节,取决于set成员的数目(最多64个值) |
8 数据表操作
数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础。
打开数据库
mysql>USE 数据库名称
案例分析
mysql>USE test;
mysql>SELECT DATABASE();
创建数据表
CREATE [IF NOT EXISTS] table_name (column_name data_type, ...)
案例分析:
mysql>CREATE TABLE tb1(
username VARCHAR(20),
age TINYINT UNSIGNED,
salary FLOAT(8,2) UNSIGNED
);
查看数据表
SHOW TABLES [FROM db_name]
[LIKE 'pattern' | WHERE expr]
案例分析
mysql>SHOW TABLES;
查看数据库所有数据表
mysql>SHOW TABLES FROM mysql;
查看当前数据库
SELECT DATABASE();
查看数据表结构
SHOW COLUMNS FROM tb1_name
案例分析
mysql>SHOW COLUMNS FROM tb1;
记录的插入与查找
插入
INSERT [INTO] tb1_name [(col_name,...)] VALUES(vn1,...)
案例分析
mysql>INSERT tb1 VALUES('Tom',25,7863.25);
mysql>INSERT tb1(username,salary) VALUES('John',4500.69);
查找
SELECT expr, ... FROM tb1_name
案例分析
SELECT * FROM tb1;
9 约束类型
非空约束
-
NULL,字段值可以为空
-
NOT NULL , 字段值禁止为空
案例分析
mysql>CREATE TABLE tb2(
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED,
);
mysql>SHOW COLUMNS FROM tb2;
INSERT tb2 VALUES('Tom',NULL); 可行
SELECT * FROM tb2;
INSERT tb2 VALUES(NULL,26); 不可行
主键约束 PRIMARY KEY
自动编号 AUTO_INCREMENT
-
自动编号,且必须与主键组合使用(反之不一定)
-
默认情况下,起始值为1,每次的增量为1
案例分析
mysql>CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT,
username VARCHAR(20) NOT NULL
);
发生错误,自动编号必须定义为一个键值
主键约束 PRIMARY KEY
-
主键约束
-
每张数据表只能存在一个主键
-
主键保证记录的唯一性
-
主键自动为NOT NULL
案例分析
mysql>CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL
);
mysql>SHOW COLUMNS FROM tb3;
mysql>INSERT TB3(username) VALUES('Tom');
mysql>INSERT TB3(username) VALUES('John');
mysql>INSERT TB3(username) VALUES('Rose');
mysql>SELECT * FROM tb3;
反之案例分析 不组合自动编号
mysql>CREATE TABLE tb4(
id SMALLINT UNSIGNED PRIMARY KEY,
username VARCHAR(20) NOT NULL
);
唯一约束 UNIQUE KEY
-
唯一约束
-
唯一约束可以保证记录的唯一性
-
唯一约束的字段可以为空值(NULL)
-
每张数据表可以存在多个唯一约束
案例分析
mysql>CREATE TABLE tb5(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
age TINYINT UNSIGNED
);
mysql>INSERT tb5(username,age) VALUES('Tom',26);
mysql>INSERT tb5(username,age) VALUES('Rose',26);
mysql>INSERT tb5(username,age) VALUES('Tom',23); 不可行
mysql>SHOW COLUMNS FROM tb5;
默认约束 DEFAULT
-
默认值
-
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
案例分析
mysql>CREATE TABLE tb6(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
sex ENUM('1','2','3') DEFAULT '3'
);
mysql>SHOW COLUMNS FROM tb6;
mysql>INSERT tb6(username) VALUES('Tom')
mysql>SHOW COLUMNS FROM tb6;
外键约束(下一小节内容)
小结
数据类型
-
整型
-
浮点型
-
字符型
-
日期时间型
数据表操作
-
如何创建数据表
-
查看数据表
-
查看数据表结构
-
记录的插入与查找
-
主键约束 PRIMARY KEY
-
唯一约束 UNIQUE KEY
-
默认约束 DEFAULT
-
非空约束 NOT NULL