一、数据定义:

  SQL数据的定义包括模式的定义、表定义、视图定义和索引的定义。

  1.基本的模式定义情况如下表。

  

  2.一个关系数据库管理系统的实例中可以创建多个数据库,一个数据库中可以建立多个模式,一个模式下面通常包括多个表、视图和数据库对象。

二、模式的定义与删除

  1.定义模式:CREATE SCHEMA <模式名> AUTHORIZATION<用户名>;

    (1)要创建模式,要调用该命令的数据库管理员权限,获得数据库管理员授予的CREATE SCHEMA的权限

    (2)为用户WANG定义一个学生-课程模式S-T

      CREATE SCHEMA AUTHORIZATION WANG  

  2.删除模式:

    (1)DROP SCHEMA <模式名><CASCADE|DESTRICT>

      DROP SCHEMA ZHANG SCACADE

      在语句中删除了模式的通式,该模式中定义的表也会被删除

三、基本表的定义与删除

  1.定义基本表

    CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]

    [,<列名<数据类型>[列级完整性约束条件]]

    。。。。

    [,<表级完整性约束条件>]

);

    (1)创建一个“学生”表Student,列级完整性约束条件,Sno是主码,Sname取值唯一

    CREATE TABLE Student

      (Sno CHAR(9) PRIMARY KEY,

      Sname CHAR(20) UNIQUE,

      Ssex CHAR(2),

      Sage CHAR(2),

      Sdept CHAR(20)

);

    系统在执行上面的语句之后,就会在数据库中建立一个新的空的学生表Student,并将有关学生表的定义及有关约束条件存放在数据字典中。

    (2)创建一个“课程”表Course

      CREATE TABLE course

        (Cno CHAR(4) PRIMARY KEY,  //列级的完整性约束条件,列名是Cno,数据类型是CHAR(4),列级完整性约束条件,Sno是主码

        Cname CHAR(40) NOT NULL,    //列级完整性约束条件,Cname不能取空值

        Cname CHAR(40) NOT NULL,    //列级完整性约束条件,Cname不能取空值          

        Cpno CHAR(4),

        Ccredit SMALLINT,

        FOREIGN KEY(Cpno) REFERENCES Course(Cno)  /*表级完整性约束条件,Cpno是外码,被参照表示Course,被参照列是Cno*/

);

    (3)建立学生选课表SC

      CREATE  TABLE SC

        (Sno CHAR(4),

        Grade SMALLINT,

        PRIMARY KEY (Sno,Cno),  /*主码有两个属性构成,必须作为表级完整性进行定义*/

        FOREIGN KEY(Sno) REFERENCES Student(Sno),/*表级完整性约束条件,Sno是外码,被参照的表示Student*/

        Foreign KEY(Cno) REFFERENCES Cources(Cno)

        /*表级完整性约束条件,Cno是外码,被参照的表是Course*/

);

  2.修改基本表

    (1)一般格式为:

      ALTER TABLE<表名>

        [ADD [COLUMN]<新列名><数据类型>[完整性约束]]

        [ADD<表级完整性约束>]

        [DROP [COLUMN]<列名>[CASCADE|RESTRICT]]

        [DROP CONSTRAINT<完整性约束名> [RESTRICT |CASCADE]]

        [ALTER COLUMN <列名><数据类型>];

    (2)<表名>是要修改的基本表,ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。DROP COLUMN子句用于删除表中的列,如果指定了CASCADE短语,那么就自动删除引用了该列的其他对象,比如视图;如果指定了RESTARICT短语,则如果该列被其他对象引用,RDBMS将拒绝删除该列。DROP CONSTRANT子句用于删除指定的完整性约束条件。ALTER COLUMN子句用于修改原有的子句和数据类型

    (3)向Student表中增加“入学时间”列,其数据类型为日期类型

      ALTER TABLE Student ADD S_entrance DATE;  /*不论原表中是否有数据,新增的一列一律为空值*/

    (4)将年龄的数据类型由字符型改为整数

      ALTER TABLE Student Alter COLUMN Sage INT;

    (5)增加新课程名称必须取唯一值的约束条件

      ALTER TABLE Course ADDUNIQUE(Cname);

  3.删除基本表

    (1)当某个表不再需要的时候,可以使用Drop Table语句来删除它。其一般的格式为:

      DROP TABLE<表名> [RESTRICT|CASCADE];

    (2)这个地方的RESTRICT表示删除的表是由限制条件的,欲删除的基本表不能被其他表的约束所引用(如CHECK,FOREIGN KEY等约束条件),不能有视图,不能有触发器,不能有存储过程或者函数等。如果存在这些依赖该表的对象,则不能被删除。而CASCADE则没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图都会被一起删除掉。

    (3)删除Student表

      DROP TABLE Student CASCADE;

      这里需要注意,基本表定义一旦被删除,不仅表中的数据和表的定义将被删除,而且这个表上建立的索引、触发器等对象一般也会被删除。有的关系数据库管理系统还会删除在此表上建立的视图。如果欲删除的基本表被其他基本表所引用,则这些基本表也可能别删除。例如SC表通过外码Sno引用Student,则在删除Student表之后,SC也被级联删除。

    (4)若表上建有视图,选择RESTRICT时表不能删除;选择CASCADE时可以删除表,视图也自动被删除。

    CREATE VIEW IS_Student  /*Student表上建立视图*/

    AS

    SELECT Sno,Sname,Sage

    FROM STUDENT

    WHERE Sdept='IS';

    DROP TABLE Student CASCADE;  //删除Student表,此表上的视图也会被删除

    

    DROP TABLE Student RESTRICT;  /*删除Student表*/,系统提示存在依赖该表的对象,该表不能被删除

四、数据查询

  1.select语句的一般格式为:

    SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]...

    FROM<表名或者视图名>[,<表名或者视图名>]|(<Select语句>[AS]<别名>

    [WHERE<条件表达式>]

    [GROUP BY<列名1>[HAVING<条件表达式>]]

    [ORDER BY <列名2>[ASC|DESC]]

    

    (1)整个SELECT语句的含义是,根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或者派生表中找出满足条件的元祖,再按照SELECT子句中的目标列表达式选出元组中的属性形成结果表。

    (2)如果有GROUP BY子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一个组。通常会在每组中作用聚合函数。

    (3)如果GROUP BY子句带有HAVING短句,则只有满足指定条件的组才予以输出。

    (4)如果有ORDER BY子句,则结果表还要按照<列名2>的值的升序或者降序进行排序

  2.单标查询:仅涉及一个表的查询

    (1)选择表中若干列:即关系代数的投影运算。

    (2)查询全体学生的学号与姓名

  

五、MySQL基本命令

  1.DDL:Data define language,数据定义语言。[create,drop,alter]

    (1)mysql>show databases;  //查询哪些数据库,库是表的集合

    (1)mysql>exit;        //退出client

    (1)mysql>user mhive;    //使用指定的数据库

    (1)mysql>show tables;    //查看数据库中含有哪些表

    (1)mysql>create databases big3;  //创建数据库

    (1)mysql>drop databases big3;  //输出指定的数据库

  2[table]

    mysql>create table mytable(id int ,name varchar(20));  //创建表

    mysql>show tables;

    mysql>drop talbes;

  3[SQL:structure querry langeuage,结构化查询语言]

    mysql>select * from test;

    mysql>select * from test where id= 1;

    mysql>insert into test(id,name) values(1,'tom');  //插入数据

    mysql>update test set name ='jerry';

    mysql>update test set id=3,name='jerry' where id =1 ;  //插入语句

    mysql>delete * from test;

    mysql>delete * from test where id=1;

    mysql>delete * from test where id<1;

    mysql>delete * from test where id!=1;  //不等于

    mysql>delete * from test where id<>1;  //ok  不等于

    mysql>delete * from test where id><1;  //not ok

    mysql>select * from test where name='tom';  //mysql不区分大小写

    mysql>select id,name from test where name ='tom';  //投影查询projection

    mysql>select id,name from test where name like 't%';    //模糊查询,以t开头

    mysql>select id,name from test where name like '%t';    //模糊查询,以t结尾

    mysql>select id,name from test where name like '%t%';    //模糊查询,含有t,%通配多个字符

    mysql>select id,name from test where name like '%t_';模糊查询,含有t,_匹配一个字符

    

    mysql>desc test;

    mysql>describe test;

    mysql>select distinct * from test;

    mysql>select * from test where name is null;  //null值查询,is not null

    mysql>create table users(id int primary key auto_increment,name varchar(20),age int);//创建主键,字段自增(auto_increment)

    [复制表]

    mysql>create table t2 like t1;  //类似创建表结构,不含数据

    mysql>create table as select * from users;  //类似创建表结构,含数据

    mysql>create table test.t2 as slect * from big3.users;  //复制不同库中的表

    [CRUD]

      create   //insert

      retrieve  //select

      update  //update

      delete  //delete

      

    mysql>

    mysql>

    mysql>

    mysql>

    mysql>

    mysql>

    mysql>

    mysql>delete * from test where id<=1;

mysql复习(2)的更多相关文章

  1. mysql复习秘籍

    mysql复习 一:复习前的准备 1:确认你已安装wamp 2:确认你已安装ecshop,并且ecshop的数据库名为shop 二 基础知识: 1.数据库的连接 mysql -u -p -h -u 用 ...

  2. mysql复习-来源考试

    mysql复习-   No1 .登录和权限 (一)常用命令1.登录mysqlmysql -h localhost -u root -p 2.重启mysqlservice mysql restart 延 ...

  3. MySQL复习值代码知识点(1)

    MySQL复习值代码知识点 一. 创建数据库 create database 数据库名: 二. 删除数据库 drop database 数据库名: 三. 选择相应的数据库 use 数据库名: 四. 创 ...

  4. mysql复习相关

    Mysql相关 mysql增删改查 我们需要修改数据表名或者修改数据表字段时,就需要使用到Mysql Alter命令 删除,添加或修改表字段 alter table student drop regi ...

  5. 一天一点MySQL复习——获取数据库系统时间、变量赋值、变量比较

    一.SQL获取系统时间 mysql> select now() from dual; +---------------------+ | now() | +------------------- ...

  6. Mysql 复习

    1.my.ini :mysql 配置文件 [client]#password    = your_passwordport        = 3306socket        = /tmp/mysq ...

  7. mysql 复习与学习(二)数据库及表结构的创建删除

    mysql -h localhost -uroot -p123456 //连接数据库 show databases; //查看数据库 create database if not exists db_ ...

  8. mysql复习

    1.数据库操作 CREATE DATABASE 数据库名 charset utf8; 查看数据库 show databases; show create database db1; select da ...

  9. Mysql复习大全(转)

    基础知识: 1.数据库的连接 mysql -u -p -h -u 用户名 -p 密码 -h host主机 2.库级知识 显示数据库: show databases; 选择数据库: use dbname ...

  10. mysql复习之一

    DROP DATABASE mysql_shiyan;. cd /home/shiyanlou/Desktop git clone https://github.com/shiyanlou/SQL4 ...

随机推荐

  1. python hash 每次调用结果不一样

    import time import multiprocessing device = ['3695a1c7-0fa6-4fa8-a563-8fd462c04af5', '0dfdd431-f9bc- ...

  2. Android热修复技术原理详解

    阿里Dexposed -- native解决方案 原理: 直接在native层进行方法的结构体信息对换,从而实现完美的方法新旧替换,从而实现热修复功能   他的思想完全来源于Xposed框架,完美诠释 ...

  3. openerp学习笔记 tree视图增加复选处理按钮

    wizard:用于确认或选择 wizard/sale_multi_action.py # -*- encoding: utf-8 -*-from openerp.osv import fields, ...

  4. dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib

    dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Table of Contents 1. 启动时报错 ...

  5. Hibernate3核心API-SchemaExport类

  6. 什么是 AIDL 以及如何使用

    ①aidl 是 Android interface definition Language 的英文缩写,意思 Android 接口定义语言.②使用 aidl 可以帮助我们发布以及调用远程服务,实现跨进 ...

  7. 2019.12.24 【ABAP随笔】smartforms 打印及PDF转化

    冬至已过,又临平安夜和圣诞,又是一年的末尾,闲暇时间需要静下心来温故而知新. 许久未碰打印,知识于脑子又有几分糊涂,遂整理些许知识,记录. 数据随便取于物料表 report Z_smartforms ...

  8. java:nginx(java代码操作ftp服务器)

    1.检查是否安装了vsftpd [root@linux01 ~]# rpm -qa|grep vsftpd 2.安装vsftpd [root@linux01 ~]# yum -y install vs ...

  9. 利用netsh命令设置IP地址/DNS服务器地址

    一.设置IP地址 1. 自动获取IP地址: netsh interface ip set address [name=]"本地连接" [source=]dhcp 2. 手动设置IP ...

  10. SQL常见面试题(借书卡表_图书表_借书记录表)

    问题描述: 本题用到下面三个关系表: CARD 借书卡:          CNO 卡号,NAME 姓名,CLASS 班级 BOOKS 图书:           BNO 书号,BNAME 书名,AU ...