一、什么是MySQL?
MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,MySQL 被广泛地应用在Internet 上的中小型网站中。
MySQL的特征:
- 性能快捷、优化SQL语言
- 容易使用
- 多线程和可靠性
- 多用户支持
- 可移植性和开放源代码
- 遵循国际标准和国际化支持
- 为多种编程语言提供API
二、MySQL基本操作
(一)mysql命令
mysql -h host_name -u user_name –ppassword
- h :当连接 MySQL 服务器不在同台主机时,填写主机名或 IP 地址
- u :登录 MySQL 的用户名
- p :登录 MySQL 的密码
注意:密码如果写在命令行的时候一定不能有空格。如果使用的系统为 linux 并且登陆用户名字与 MySQL 的用户名相同即可不用输入用户名密码,linux 默认是以 root 登陆,windows 默认用户是 ODBC。
(二)mysql程序常用命令
- 显示所有数据库:
show databases;
- 选定默认数据库:
use dbname;
- 显示默认数据库中所有表:
show tables;
- 退出 mysql 程序:
\q
三、数据库的基础知识
数据完整型 = 可靠性 + 准确性
分类 | 概述 | 约束方法 |
---|---|---|
数据实体完整性 | 实体的完整性强制表的标识符列或主键的完整性 | 唯一约束、主键约束或标识列 |
字段完整性 | 如果插入的数据不满足限制要求,数据库管理系统就拒绝执行操作 | 限制数据类型、检查约束、外键约束、默认值、非空约束 |
引用完整性 | 在删除和输入记录时,保持表之间已定义的关系,确保键值在所有表中一致。不能孤立,即引用不存在的值 | 外键约束 |
自定义完整性 | 用户自己定义的业务规则 | 规则、存储过程、触发器 |
完整型包括:列值要求(约束)、行值要求(约束)
四、什么是SQL?
(一)SQL语法组成
SQL | 概述 | 命令 |
---|---|---|
DML(Data Manipulation Language数据操作语言) | 查询、插入、删除和修改数据库中的数据 | SELECT、INSERT、 UPDATE 、DELETE等 |
DCL(Data Control Language数据控制语言) | 用来控制存取许可、存取权限等 | GRANT、REVOKE等 |
DDL(Data Definition Language数据定义语言) | 用来建立数据库、数据库对象和定义其列 | CREATE TABLE、DROP TABLE、ALTER TABLE等 |
功能函数:日期函数、数学函数、字符函数、系统函数等。
(二)MySQL中的SQL语言
- 属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完。
- 箭头(->)代表SQL语句没有输入完取消SQL语句使用(\c)。
- SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)。
- 使用函数时,函数名和后面的括号之间不能有空格。
(三)MySQL数据类型
- 数据类型种类
- 数值列类型
数值列类型包括整型和浮点型
类型名 | 说明 | 类型名 | 说明 |
---|---|---|---|
TINYINT | 非常小的整数 | BIGINT | 大整数 |
SMALLINT | 较小整数 | FLOAT | 单精度浮点数 |
MEDIUMINT | 中等大小的整数 | DOUBLE | 双精度浮点数 |
INT | 标准整数 | DECIMAL | 一个串的浮点数 |
类型说明 | 存储需求 |
---|---|
TINYINT[(M)] | 1字节 |
SMALLINT[(M)] | 2字节 |
MEDIUMINT[(M)] | 3字节 |
INT[(M)] | 4字节 |
BIGINT[(M)] | 8字节 |
FLOAT[(M,D)],FLOAT(4) | 4字节 |
DOUBLE[(M,D)],FLOAT(8) | 8字节 |
DECIMAL(M,D) | M字节(MySQL<3.23),M+2字节(MySQL>=3.23) |
对于每种浮点型,可指定一个最大的显示尺寸M和小数位数D,M的取值应该是0-30,但小于M-2。M和D对于DECIMAL是必须的。
- 字符串列类型
CHAR类型和VARCHAR类型。
CHAR类型和VARCHAR类型长度范围都是0~255之间的大小。他们之间的差别在于MySQL处理存储的方式:
A. CHAR把这个大小视为值的准确大小(用空格填补比较短的值)。
B. VARCHAR类型把它视为最大值并且只使用了存储字符串实际上需要的字节数(增加了一个额外的字节记录长度)。因而,较短的值当被插入一个语句为VARCHAR类型的字段时,将不会用空格填补。 - 日期和时间列类型
存储如“2005 -1-1” 或者“12:00:00”这样的数值的值。在MySQL中日期是按”年-月-日”的顺序。
类型说明 | 格式 | 取值范围 | 存储要求 |
---|---|---|---|
DATE | "YYYY-MM-DD" | "1000-01-01"到"9999-12-31" | 3字节 |
TIME | "hh:mm:ss" | "-838:59:59"到"838:59:59" | 3字节 |
DATETIME | "YYYY-MM-DD hh:mm:ss" | "1000-01-01 00:00:00"到"9999-12-31 23:59:59" | 8字节 |
TIMESTAMP[(M)] | "YYYYMMDDhhmmss" | 19700101000000到2037年的某个时刻 | 4字节 |
YEAR[(M)] | "YYYY" | 1901到2155 | 1字节 |
(四)数值列的完整性约束
- AUTO_INCREMENT
自动标识列,在需要产生唯一标志符号或者顺序值时候,可用此属性。
create table t(id int auto_increment not null primary key);
- UNSIGNED
无符号,此属性禁用负值,将数值的取值范围从零开始。
create table t(num tinyint , num2 tinyint unsigned);
- NULL 和NOT NULL
默认为NULL,即插入值时没有在此字段插入值时自动填NULL,如果指定了NOT NULL,则必须在插入值时在此字段添入值,不允许插入NULL值。 - DEFAULT
可以通过此属性来指定一个缺省值,即如果没有在此列添加值,那么默认添加DEFAULT后指定值。 - ZEROFILL
前导零填充数值类型值以达到列的显示宽度。
create table test2(num1 int default 1,num2 int zerofill);
五、数据库操作
(一)建立数据库操作
语法:
create database 数据库名
叙述:创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句失败。
(二)建立表操作
语法 :
create table 表名(
列名1 列类型 [< 列的完整性约束>],
列名2 列类型 [< 列的完整性约束>],
... ... );
叙述:在当前数据库下新创建一个数据表。
列类型:表示该列的数据类型。
(三)显示表结构操作
语法:
describe 表名; 表名;
desc 表名; 表名;
叙述:用于显示表的创建结构。
(四)删除数据库或表操作
- 删除表操作
语法:
drop table [if exists] tab_name [,tab_name]...
叙述:从数据库中删除给定的表。如果给出if exists 子句,则删除不存在的表不会出错。
- 删除数据库操作
语法:
drop database [if exists] db_name
叙述:删除给定的数据库。在删除一个数据库后,它就永远没有了,因此要特别小心。如果给出if exists 子句,则删除不存在的数据库不会出错。
(五)更改表结构操作
语法:
alter table 表名 action;
说明:
action可以是如下语句:
add 列名 建表语句 [first | after 列名] //可以为表添加一列
//如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
add primary key (列名) //为表添加一个主键,如果主键已经存在,则出现错误
add foreign key (列名) references 表名 (列名) //为表添加一个外键
alter 列名 set default 默认值 //可以更改指定列默认值
change 旧列名 新列名 <建表语句> [first | after 列名] //可以更改列类型和列名称
//如果原列的名字和新列的名字相同
modify 列名 <建表语句> [first | after 列名] //和change的作用相同
drop 列名 // 可以删除一列
drop primary key // 可以删除主键
engine 类型名 //可以改变表类型
rename as 新表名 // 可以将表名更改
六、MySQL运算符
- 算数运算符
运算符 | 语法 | 说明 |
---|---|---|
+ | a + b | 加,操作数之和 |
- | a - b | 减,操作数之差 |
- | - a | 一元减号,操作数取负 |
* | a * b | 乘,操作数之积 |
/ | a / b | 除,操作数之商 |
% | a % b | 模,操作数除后的余数 |
- 比较运算符
比较运算符允许我们对表达式的左边和右边进行比较。一个比较运算符的结果总是1(真),0(假),或是为NULL(不能确定)。
比较运算符可以用于比较数字和字符串。数字作为浮点值比较,而字符串以不区分大小写的方式进行比较(除非使用特殊的BINARY二进制关键字)。
运算符 | 语法 | 说明 |
---|---|---|
= | a = b | 如果两操作数相等,为真 |
!=,<> | a != b, a <> b | 如果两操作数不等,为真 |
< | a < b | 如果a小于b,为真 |
<= | a <= b | 如果a小于等于b,为真 |
> | a > b | 如果a大于b,为真 |
>= | a >= b | 如果a大于等于b,为真 |
IN | a IN (b1,b2,...) | 如果a为b1,b2,...中任意一个,为真 |
BETWEEN | a BETWEEN a AND c | 如果a值在b与c之间(包括b、c),为真 |
LIKE | a LIKE b | SQL模式匹配:如果a与b匹配,为真 |
NOT LIKE | a NOT LIKE b | SQL模式匹配:如果a与b不匹配,为真 |
REGEXP | a REGEXP b | 扩展正规表达式匹配:如果a与b匹配,为真 |
NOT REGEXP | a NOT ERGEXP b | 扩展正规表达式匹配:如果a与b不匹配,为真 |
<=> | a <=> b | 如果两操作数相同(即使为NULL),为真 |
IS NULL | a IS NULL | 如果操作数为NULL,为真 |
IS NOT NULL | a IS NOT NULL | 如果操作数不为NULL,为真 |
MySQL数据库中的通配符:
“%” ( 百分号) 代表任意长度(长度可以为0)的字符串
“_ ”( 下横线) 代表任意单个字符
- 逻辑运算符
与(AND,&&)、或(OR,||)、非(NOT,!) - 位运算符
网友评论