数据库系统原理(第四章:SQL与关系数据库基本操作 )

一、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;

  1. 字符集(character set):定义了字符以及字符的编码。
  2. 字符序(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;

数据更新

数据查询

视图

原文地址:https://www.cnblogs.com/jalja/p/11605648.html

时间: 2024-10-13 04:56:39

数据库系统原理(第四章:SQL与关系数据库基本操作 )的相关文章

数据库系统原理之第一章数据系统基本概念总结 .

昨天,听了米老师的讲课之后突然对原本"晕晕乎乎"的数据库有了新的认识,以下便是听了米老师的讲解之后又结合我自己的理解和小童师姐的帮助下对<数据库系统原理>第一章的认识:     首先,将第一章分了三大类:数据.DBMS.DBS:     其次,数据中包括阶段.描述.级别:DBMS大体分为模式和功能两类:DBS又分为组成和结构:     详细请参见导图: (有认识不到位或做的不好的地方还请多多指出 http://weibo.com/p/10016037514362268467

数据库系统原理(第二章关系数据库 )

一.关系数据库概述 20世纪80年代后,在商用数据库管理系统中,( 关系模型 )逐渐取代早 期的网状模型和层次模型,成为主流数据模型 二.关系数据模型 数据模型的要素包括:数据结构.数据操作.数据约束 关系数据模型的组成要素: 关系数据结构 表(Table): 也称为关系,是一个二维的数据结构,由表名.列.若干行数据组成:每个表有唯一的表名,表中每一行数据描述一条具体的记录值 关系(Relation): 一个关系逻辑上对应一张二维表,可以为每个关系取一个名称进行表示.基本关系 (基本表. 基表)

数据库-第四章 SQL语句查询

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SQL查询的基本结构 集合运算   空值   聚集函数   嵌套子查询   数据库的修改 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SQL查询的基本机

SQLAlchemy教程-第四章-SQL常用查询的ORM写法进阶2-待完善

内容预告 别名的用法 函数的用法 分组的写法. case when的用法. exists的用法 为啥要用别名? 如果两个表的两列名字相同, 那么为了区分这两列, 必须使用别名. 如果有一列是通过运算出来的, 那么一定要给这列起个名字, 否则无法在查询结果中引用. 看别名的写法. 先把代码贴上来, 然后注释我都在代码里写了, 请大家自行阅读~ (#^.^#) from models import * # 别名 def query_with_column_alias(): emps = sess.q

第四章 数据类型及数据库基本操作

一.MySQL中的数据类型 MySQL支持多种数据类型,数值类型.日期/时间类型和字符串类型 不区分大小写 1.数值类型 类型名 涵义 tinyint 一个很小的整数,1个字节  0-255  例:定义年龄,可以用这个类型 smallint 一个小整数,2个字节 mediumint 一个中等大小的整数,3个字节 int.integer 一个正常大小的整数,4个字节 bigint 一个大整数,8个字节 float 一个小(单精密)浮点数字,近似值,可以带一个整数类型的参数,0到23的精度对应的fl

Java Persistence with MyBatis 3(中文版) 第四章 使用注解配置SQL映射器

在上一章,我们看到了我们是怎样在映射器Mapper XML配置文件中配置映射语句的.MyBatis也支持使用注解来配置映射语句.当我们使用基于注解的映射器接口时,我们不再需要在XML配置文件中配置了.如果你愿意,你也可以同时使用基于XML和基于注解的映射语句. 本章将涵盖以下话题: l 在映射器Mapper接口上使用注解 l 映射语句 @Insert,@Update,@Delete,@SeelctStatements l 结果映射 一对一映射 一对多映射 l 动态SQL @SelectProvi

Android艺术开发探索第四章——View的工作原理(下)

Android艺术开发探索第四章--View的工作原理(下) 我们上篇BB了这么多,这篇就多多少少要来点实战了,上篇主席叫我多点自己的理解,那我就多点真诚,少点套路了,老司机,开车吧! 我们这一篇就扯一个内容,那就是自定义View 自定义View 自定义View的分类 自定义View的须知 自定义View的实例 自定义View的思想 一.自定义View的分类 自定义View百花齐放,没有什么具体的分类,不过可以从特性大致的分为4类,其实在我看来,就三类,继承原生View,继承View和继承Vie

Android开发艺术探索——第四章View的工作原理

Android开发艺术探索--第四章View的工作原理 4.1 (一)初识ViewToot和DecorView 基本概念 ViewRoot对应于ViewRootImpl类,是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的.在ActivityThread中,当Activity对象被创建完成后,会将DecorView添加到View中.同时,会创建ViewRootImpl对象,并将ViewTootImpl对象和DecorView建立关联.

XSS的原理分析与解剖:第四章(编码与绕过)*******************未看**********************

0×01前言 很抱歉,这第四章被我推了几个月,今天是元旦难得有空,就把第四章写下.我先把主要使用的编码说下,介绍完会说下绕过. 本文建议与<杂谈如何绕过WAF>一同阅读. 0×02 URL编码 URL只允许用US-ASCII字符集中可打印的字符(0×20-0x7x),其中某些字符在HTTP协议里有特殊的意义,所以有些也不能使用.这里有个需要注意的,+加号代表URL编码的空格,%20也是. URL编码最长见的是在用GET/POST传输时,顺序是把字符改成%+ASCII两位十六进制(先把字符串转成