闲来无事了解下数据库 - SQL概述和数据定义 - 1

713 阅读5分钟

概览

SQL概述

什么是SQL? (Structured Query Language, SQL)

SQL的全称就是结构化查询语言, 是专门用来与数据库通信的语言, 它可以帮助用户操作关系数据库, 包括添加, 删除, 修改和查询数据, 定义和修数据模式等. 相当于用户与数据库之间沟通的桥梁.

SQL的特点

SQL不是某个特点数据库供应商专有的语言

SQL简单易学, 由描述性很强的英文单词, 并且数量也不多

SQL强大, 灵活, 可以进行非常复杂和高级的数据库操作

SQL的组成

数据查询(Data Query), 数据定义(Data Definition), 数据操纵(Data Manipulation), 数据控制 (Data Control)

数据定义语言 (Data Definition Language, DDL)

create 创建数据库

alter 对数据库进行修改

drop 删除数据库

数据操纵语言 (Data Manipulation Language, DML)

select 从表或视图中检索数据

insert 将数据插入到表或视图中

update 修改表或视图中的数据

delete 从表或视图中删除数据

数据控制语言 (Data Controler Langauage, DCL)

grant 用于授予权限

revoke 用于收回权限

嵌入式和动态SQL规则

嵌入式和动态SQL规则规定了SQL语句在高级语言程序设计中使用的规范方法, 以便适应较为复杂的应用

SQL调用和会话规则

SQL例程

调用规则

目标: 以便提高SQL的灵活性, 有效性, 共享性以及使SQL具有更多的高级语言的特征

数据库模式定义

执行创建数据库命令之前的准备工作

  1. 安装MySQL
  2. 打开cmd
  3. 输入: mysql -u root -p
  4. 输入: 安装MySQL时设置的密码

创建数据库

create database if not exists 'mysql_test'

其中 create database 为命令, if not exists 为条件判断, mysql_test 为将要创建的数据库名称

注意: 创建数据库时, 数据库的名称要唯一

查看数据库

show databases

选择数据库

在创建数据库成功之后, 用该命令来指定当前我们要操作的数据库

use mysql_test

修改数据库

修改数据库的一些配置参数

alter database mysql_test

default character set gb2312

default collate gb2312_chinese_ci;

删除数据库

删除指定的整个数据库, 该数据库中的所有表(还有其中的数据)也将永久删除

drop database if exists mysql_test

表定义

只有成功创建数据库之后, 才能在数据库中创建表.

数据表是关系数据库中最重要, 最基本的数据对象, 也是数据存储的基本单位

创建表的命令

先执行选择数据库命令

user mysql_test

再执行创建表的命令

create table customers

(

c_id int not null auto_increment,

c_name char(50) not null,

c_sex char(1) not null default 0,

c_address char(50) null,

c_contact char(50) null,

primary key (c_id)

);

int, char都为数据类型, 这里还可定定义为其它的数据类型

auto_increment 为数据类型为整型的列设置自增属性

default 指定默认值

null 表示该属性的值可以为空

not null 表示该属性的值不能为空

primary key 指定主键

其它的数据类型

int 整型

double 浮点型

bool 浮点型

date 日期型

timestamp 时间戳

time 时间型

char(n) 定长字符类型

varchar 可变长字符类型

注意 持久表和临时表

create temporary table tableName, 创建的为临时表, 在使用时实际同操作持久表一样, 只是生命周期短, 只对创建它的用户可见, 当断开与数据库的连接时, MySQL会自动删除它们, 可以两个不同的连接使用相同的临时表名称, 同时两个临时表不会互相冲突, 也不与原有的同名持久表冲突

create table tableName, 创建的为持久表, 简称表, 持久表一旦创建, 一直存在, 多个用户或多个应用程序可以同时使用该持久表

查看表

显示表的名称

show tables from mysql_test

显示表的结构

show columns from mysql_test.customers;

或者 desc mysql_test.customers;

更新表

alter table 命令, 用来指定要执行更新操作的表

与子句配合完成表的更新操作

add column - 增加新列

示例: 向数据库mysql_test的表customers中添加一列, 并命名为c_city, 要求不能为null, 默认为beijing, 且位于c_sex之后

alter table mysql_test.customres

add column c_city char(10) no null default 'beijing' after c_sex

add column c_city char(10) no null default 'beijing' first (也可以使用此命令将列添加到表的第一列)

change column - 修改表中的名称或数据类型

可以同时修改多列, 也就是多个change column语句, 彼此间用逗号隔开

注意: 数据类型兼容的问题

alter table mysql_test.customers

change column c_sex sex char(1) null default 'm',

change column c_city city char(20) not null default 'shanghai';

注意: 为了形式统一, 我们将列名重新改为c_sex, c_city

alter column - 修改或删除表中指定列的默认值

示例:

alter table mysql_test.customers

alter column c_city set default 'Beijing';

modify column - 只修改指定列的数据类型和在表中的位置

不会干涉它的列名,

alter table mysql_test.customers

modify column c_name char(20) first

之后: show columns from mysql_test.customers 检验表的情况

含义: 将c_name列的字符长度改为20, 并将此列设置为表的第一列

drop column - 删除表中多余的列

alter table mysql_test.customers

drop column c_contact

rename to - 重命名表

alter table mysql_test.customers

rename to mysql_test.backup_customers;

含义: 将表名customers重新命名为backup_customers

重命名表

rename table mysql_test.backup_customers to mysql_test.customers;

删除表

drop table if exists mysql_test.customers;

总结

简单介绍了下SQL是什么, 以及数据库的创建, 选择, 修改, 删除, 查看等操作, 还有表的创建, 修改, 重命名, 删除, 查看等操作. 总体来说, 自己对数据库, 表和SQL有了更清晰的认知, 不再是雾里看花, 水中望月, 而是有一点清清楚楚, 明明白白, 真真切切!