一、SQL语句的语言特点
二、SQL语句的语句结构
1、数据定义语言(DDL) : Data Defination Language;
用来定义数据对象的,包含CREATE(增)、DROP(删)、ALTER(改)语句。
2、数据操作语言(DML):Data Manapulation Language;
此语句主要是操作数据而不是操作对象,包含INSERT(插入), DELETE(删除), UPDATE(更新)语句。
3、数据查询语言(DQL): Data Query Language;
数据检索语句,以从表中获取相关数据信息,SELECT(查询)语句。
4、数据控制语言(DCL): Data Control Language
用于对用户的授权管理的语句,包含GRANT(授权), REVOKE(收回权限)语句。
三、SQL语句中的数据类型
1、字符型 ,以字符格式存储
1
2
3
4
5
6
|
CHAR(n) : 定长字符
VARCHAR(n) :可变长字符
BINARY(n) :二进制字符
VARBINARY(n) :可变长二进制字符
TEXT :文本型数据
BLOB :二进制大对象
|
修饰符:NOT NULL , DEFAULT ' '
2、数值型 ,以数值格式存储
1)、精确数值型
① 整型数据
1
2
3
4
5
|
TINYINT: 1byte, -128, 127 0,255 微整形
SMALLINIT: 2bytes, -32768, 32767 0,65535 小整形
MEDIUMINT: 3bytes, 0,2^24 中整形
INT: 4bytes, 0,2^32 整型
BIGINT: 8bytes, 0,2^64 大整型
|
修饰符:NOT NULL, DEFAULT '', UNSIGNED, AUTO_INCREMENT
② 浮点型数据
1
2
3
|
FLOAT 单精度
DOUBLE 双精度
REAL
|
修饰符:NOT NULL, DEFAULT ' '
3、日期时间型
1
2
3
4
5
|
DATE
TIME
DATETIME
YEAR(2), YEAR(4)
TIMESTAMP
|
修饰符:NOT NULL, DEFAULT ' '
4、布尔型 ,1为真,0为假
5、内置类型
1
|
ENUM, SET
|
修饰符:NOT NULL, DEFAULT ' '
四、mysql客服端常用的命令
不用分号结尾
1、quit | \q :退出mysql;
2、delimier | \d : 如何改变语句结束符;
3、go | \g : 无论结束符是什么都送到服务器端;
4、use | \u : 设定默认数据库;
5、ego | \G : 结果取回,纵向显示;
6、system | \! : 执行系统命令而不用退出当前mysql
五、mysql服务端的相关命令
必须使用分号结尾
1、 显示服务器参数变量,有些变量的值可以修改,能够改变mysql的工作特性,
有些可以动态调整,即刻生效;另外一些只能修改配置文件后,重启生效;
1
|
mysql> show [global|session] variables;
|
2、显示服务器状态变量,记录了当前包括过去的时间内mysql的运行统计数据。
1
|
mysql> show [global|session] status;
|
3、显示所支持的所有字符集;
1
|
mysql> SHOW CHARACTER SET;
|
4、显示所有字符集的排序规则
1
|
mysql> SHOW COLLATION;
|
5、显示当前mysql版本号
1
|
mysql> SELECT VERSION();
|
6、显示有权限访问的所有数据库
1
|
mysql> SHOW DATABASES;
|
7、显示默认数据库
1
|
mysql> SELECT DATABASE();
|
8、创建名为DB_NAME的数据库
1
|
mysql> CREATE DATABASE DB_NAME;
|
9、删除名为DB_NAME的数据库
1
|
mysql> DROP DATABASE DB_NAME;
|
六、mysql的执行方式
1、交互式方式
① -h | --host : 远程连接主机
② -u | --user : 指定用户
③ -p | --password :输入密码
④ -D | --database : 登录之后,直接设定默认库
⑤ -e 'SQL_Statement;' : 不用登录而是连接后,输入命令,直接取回结果
2、批处理方式
使用sql脚本
1
2
|
mysql OPTIONS < script.sql
mysql>
source
/path/to/script
.sql
|
七、用户管理
1、创建用户
1
|
mysql>CREATE USER username@host [IDENTIFIED BY
'password'
];
|
2、用户或主机可以使用通配符
%:匹配任意长度的任意字符
_: 匹配任意单个字符
3、用户授权
1
|
mysql>GRANT ALL PRIVILEGES ON dbname.tablename TO username@host [IDENTIFIED BY
'password'
];
|
4、修改用户密码
1
|
mysql> SET PASSWORD FOR username@host=PASSWORD(
'password'
);
|
5、删除用户
1
|
mysql>DROP USER username@host;
|
八、关系数据型数据库
1、主键 primary key
不能为空,不能重复,惟一;
2、惟一键 uniq key
可以为空,惟一;
3、外键 foreign key
引用性约束
4、检查性约束
九、表管理
1、创建表
1
|
mysql>CREATE TABLE tb_name (col1 defination, col2 defination, ..., key defination);
|
2、删除表
1
|
mysql>DROP TABLE tb_name;
|
十、SELECT语句用法
mysql> SELECT 字段 FROM 表 WHERE;
1、比较运算:>,<,>=,<=,=,!=
2、通配符:LIKE
% 任意长度的任意字符
_ 任意单个字符
3、RLIKE :支持正则表达式
十一、DML 数据操作语言的用法
1、INSERT 插入语句用法
1
|
mysql> INSERT INTO 表 字段 VALUES;
|
2、UPDATE 更新语句用法
1
|
mysql> UPDATE 表名 SET 字段名=值 WHERE;
|
3、DELETE 删除语句用法
1
|
mysql> DELETE FROM 表名 WHERE 条件
|
实战案例
MySQL基础操作练习(所属的库叫做mytestdb):
1、新建如下表(包括结构和内容):
ID Name Age Gender Course
1 Ling Huchong 24 Male Hamogong
2 Huang Rong 19 Female Chilian Shenzhang
3 Lu Wushaung 18 Female Jiuyang Shenggong
4 Zhu Ziliu 52 Male Pixie Jianfa
5 Chen Jialuo 22 Male Xianglong Shiba Zhang
完成如下操作
(1)找出性别为女性的所有人;
(2)找出年龄大于20的所有人;
(3)修改Zhu Ziliu的Course为Kuihua Baodian;
(4)删除年龄小于等于19岁的所有人;
(5)创建此表及所属的库;
(6)授权给testuser对testdb库有所有访问权限;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
mysql> CREATE DATABASE mytestdb
use mytestdb
myaql> CREATE TABLE students (ID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
Name CHAR(30) NOT NULL UNIQUE KEY,
Age TINYINT UNSIGNED, Gender CHAR(1) DEFAULT
'M'
,
Course VARCHAR(50) NOT NULL);
mysql> INSERT students (Name,Age,Gender,Course)VALUES(
'Ling Huchong'
,24,
'M'
,
'Hamogong'
),
(
'Huang Rong'
,19,
'F'
,
'Chilian Shenzhang'
),
(
'Lu Wushuang'
,18,
'F'
,
'Jiuying Shengong'
),
(
'Zhu Ziliu'
,52,
'M'
,
'Pixie Jianfa'
),
(
'Chen Jialuo'
,22,
'M'
,
'Xianglong Shiba Zhang'
);
mysql> SELECT name FROM students WHERE Gender=
'Female'
;
mysql> SELECT name FROM students WHERE Age>20;
mysql> UPDATE students SET Course=
'Kuihua Baodian'
WHERE name=
'Zhu Ziliu'
;
mysql> DELETE FROM students WHERE Age<=19;
mysql> GRANT ALL ON testdb.* TO
'testuser'
@
'%'
;
|
本文出自 “小鹏分享网” 博客,谢绝转载!