一, SQL 概述
sql 是结构化查询语言 (Structured Query Language,SQL) 是专门用来与数 据库通信的语言, 它可以帮助用户操作关系数据库.
SQL 的特点:
SQL 不是某个特定数据库供应商专有的语言; SQL 简单易学 ;SQL 强大, 灵活, 可以进行非常复杂和高级的数据库操作
SQL 的组成:
数据查询
数据定义语言(Data Definition Language,DDL)
数据操纵(DML)
数据控制(DCL)
******************* 数据定义语言 **********************
CREATE 创建数据库或数据库对象
ALTER 对数据库或数据库对象进行修改
DROP 删除数据库或数据库对象
************ 数据操纵语言(Data Manipulation Language,DML)***********
SELECT 从表或视图中检索数据
INSERT 将数据插入到表或视图中
UPDATE 修改表或视图中的数据
DELETE 从表或视图中删除数据
*************** 数据控制语言(Data Control Language,DCL)****************
GRANT 用于授予权限
REVOKE 用于收回权限
二, MySQL 预备知识
嵌入式和动态 SQL 规则: 规定了 SQL 语句在高级语言程序设计中 使用的规范方法, 以便适应较为复杂的应用
SQL 调 用(以便提高 SQL 的灵活性, 有效性, 共享性以及使 SQL 具有更多的高级语言的特征):SQL 例 程, 调 用 规 则
MySQL 使用基础: LAMP 模式 ,WAMP 模式 L(Linux) A(Apache)M(MySQL) P(PHP,Perl,Python)
关系数据库管理系统(RDBMS): 优点: 体积小, 速度快, 开放源代码, 遵循 GPL
MySQL 扩展语言要素
常量: 也称字面值或标量值
字符串常量: 用单引号或双引号括起来的字符序列, 分为 ASCII 字符串常量和 Unicode 字符串常量
数值常量: 整数常量, 浮点数常量
十六进制常量: 每对十六进制数字被转换为一个字符, 其最前面有一个字母 "X"(或 "x")
时间日期常量: 用单引号将表示日期时间的字符串括起来而构成的 例如:'2018-06-05'
位字段值
布尔值: TRUE:1 ;FALSE: 0
NULL 值
变量:
用户变量: 用户变量前常添加一个符号 @, 用于将 其与列名区分开
系统变量: 大多数系统变量应用于其他 SQL 语句中 时, 必须在系统变量前添加两个 @
表达式 表达式是常量, 变量, 列名, 复杂计算, 运算符和函数的组合.
字符型表达式
数值型表达式
日期型表达式
三, 数据定义(DDL)
创建数据库(CREATE): 使用 CREATE DATABASE 或 CREATE SCHEMA 语句
- CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
- [DEFAULT]CHARACTER SET[=]charset_name
- |[DEFAULT]COLLATE[=]collation_name
例句: create DATABASE test_sy CHARACTER SET ="UTF8" COLLATION ="utf8_general_ci"; CREATE DATABASE mysql_test;
字符集(character set): 定义了字符以及字符的编码.
字符序(collation): 指定字符集的 校对规则.
查看数据库(SHOW): 查看数据库的所有表
- SHOW {DATABASES | SCHEMAS}
- [LIKE'pattern' | WHERE expr]
Like 关键字用于匹配指定的数据库名称; Where 从句用于指定数据库名称查询范围的条件
例句: SHOW DATABASES; SHOW DATABASES LIKE "%test%";
SHOW TABLES: 查看数据库非系统表
选择数据库(USE):USE db_name; 从一个数据库 "跳转" 到另一个数据库.
修改数据库: alert
- MySQL>ALTER DATABASE mysql_test
- -> DEFAULT CHARACTER SET gb2312
- -> DEFAULT COLLATE gb2312_chinese_ci;
删除数据库:
DROP{DATABASE|SCHEMA}[IF EXISTS]db_name
例句: DROP DATABASE hahaha; DROP DATABASE IF EXISTS hahaha;
***************************** 表定义 **********************************
创建表: 数据表是关系数据库中最重要, 最基本的数据对象, 也是数据存储的基本单位.
数据表, 被定义为字段的集合 按 (行 ) 和(列 )的格式来存储的, 每一 ( 行) 代表一条记录, 每一 (列 ) 代表记录中一个字段的取值.
- CREATE[TEMPORARY]TABLE tbl_name
- (
字段名 1 数据类型 [列级完整性约束条件][默认值]
[, 字段名 2 数据类型 [列级完整性约束条件][默认值]]
[,......]
[, 表级完整性约束条件]
)[ENGINT = 引擎类型];
若添加 "TEMPORARY", 则为临时表
在一个已有数据库 mysql_test 中新建一个包含客户姓名, 性别, 地址, 联系方式等内容的客户基本信息表, 要求将客户的 id 号指定为该表的 主键.
PRIMARY KEY(cust_id): 指定主键
数据类型:
整型 int
浮点型 double
布尔型 bool
日期型 date
时间戳 timestamp
时间型 time 定长
字符类型 char
可变长字符 varchar
更新表(ALTER): 使用 ALTER TABLE 语句, 增加或删减列, 创建或取消索引, 更改原有列的 数据类型, 重新命名列或表, 更改表的评注和表的引擎类型, 为表重新创 建触发器, 存储过程, 索引和外键等.
1,ADD COLUMN
例如: 向数据库 mysql_test 的表 customers 中添加一列, 并命名为 cust_city, 要求其不能为 NULL, 默认值为字符串 "Wuhan", 且该列位 于原表 cust_sex 列之后.
ALTER TABLE mysql_test.customers ->ADD COLUMN cust_city char(10)NOT NULL DEFAULT 'Wuhan' AFTER cust_sex;
2,CHANGE[COLUMN]子句 修改表中列的名称或数据类型
3,ALTER[COLUMN]子句 修改或删除表中指定列的默认值
ALTER TABLE mysql_test.customers ->ALTER COLUMN cust_city SET DEFAULT 'Beijing';
4,MODIFY[COLUMN]子句 只修改指定列的数据类型, 不会干涉它的列名
ALTER TABLE mysql_test.customers ->MODIFY COLUMN cust_name char(20) FIRST;
5,DROP[COLUMN]子句 删除表中多余的列
ALTER TABLE mysql_test.customers ->DROP COLUMN cust_contact;
6,RENAME[TO]子句 为表重新赋予一个表名
ALTER TABLE mysql_test.customers ->RENAME TO mysql_test.backup_customers;
给表重命名表的第二种写法: RENAME TABLE db_a.old_table TO db_b.new_table;
7,DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [ ,tbl_name ] ... [RESTRICT | CASCADE]
查看表结构:
SHOW [FULL] COLUMNS {FROM | IN} tbl_name[{FROM | IN} db_name] [LIKE'pattern' | WHERE expr]
例如: SHOW COLUMNS FROM t_role;
{DESCRIBE | DESC} tbl_name [col_name | wild]
例如: DESC t_role;
数据更新
数据查询
视图
数据库系统原理(第四章: SQL 与关系数据库基本操作 )
来源: http://www.bubuko.com/infodetail-3217656.html