sql学习笔记

MySQL数据库的连接

  • 在mysql shell中链接到本地mysql数据库:

    \c root@localhost:3306
    
  • 在cmd/shell中链接到本地mysql数据库:

    mysql -u root -p
    

基础术语

  • database: 保存有组织的数据的容器(通常是一个文件或一组文件)
  • table:某种特定类型数据的结构化清单,注意,存储在表中的数据是一种类型的数据或一个清单,对于不同的数据应该创建不同的表。数据库中的每个表都有一个名字,用来标识自己,这个名字是唯一的。但是不同的数据库中可以使用相同的。
  • schema:关于数据库和表的布局及特性的信息,如可以存储什么样的数据,数据如何分解,各部分信息如何命名,etc.
  • column:表中的一个字段,所有表都是由一个或多个列组成的,列中存储着表中某部分的信息,数据库中的每个列都有相应的数据类型。
  • datatype:所容许的数据的类型,每个表列都有相应的数据类型,它限制该列中存储的数据。
  • row:表中的一个记录,例如,顾客表可以每行存储一个顾客,存在某列存储所有顾客的姓名。
  • primary key:一列(或者一组列),其值能够唯一区分表中的每个行。要注意,没有主键,更新和删除表中的特定行很困难,并且任意两行都不具有相同的主键值,主键列不允许NULL值,当然也可以让特定列的组合是唯一的来确定主键。好习惯:不更新主键列中的值,不重用主键列中的值,不在主键列中使用可能会更改的值。
  • auto_increment:自动增量,在每个行添加到表中时,mysql可以自动的为每个行分配下一个可用编号,而不用在添加一行时手动分配唯一值。

表的选择和信息展示

  • USE(关键字):当最初链接到mysql时,没有任何数据库打开让我们使用,USE (数据库名)能让我们选择一个数据库进行操作,必须先用USE打开数据库,才能读取其中的数据。

  • SHOW DATABASES:返回可用数据库的一个列表。

  • SHOW TABLES:获得当前选择的数据库内可用表的列表(得先用USE选中数据库)。

  • SHOW COLUMNS FROM (表名):显示选中表的表列信息,他对每个字段返回一行,行中包含字段名,数据类型,是否允许NULL,键信息,默认值以及其他信息。

  • DESCRIBE(表名):是SHOW COLUMNS FROM (表名)的一种快捷方式。

  • SHOW STATUS:用于显示广泛的服务器状态信息。

  • SHOW CREATE DATABASESHOW CREATE TABLE:分别用来显示创建特定数据库或表的mysql语句。

  • SHOW GRANTS:用来显示授予用户(所有用户或特定用户)的安全权限。

  • SHOW ERRORSSHOW WARNINGS:用来显示服务器错误或警告信息。

  • HELP SHOW:显示允许的SHOW语句。

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

数据库和表的创建

  • 创建数据库:

    CREATE DATABASE IF NOT EXISTS <数据库名>;
    # 例如
    CREATE DATABASE IF NOT EXISTS shop;
    
  • 创建新表(table):

    CREATE TABLE <表名>
    (
        <表名1> <数据类型> <该列所需约束>,
        <表名2> <数据类型> <该列所需约束>,
        	...
        <该表的约束1>,<该表的约束2> ......
    );
    
    # 例如
     CREATE TABLE Addressbook (
    		regist_no INTEGER NOT NULL COMMENT '注册编号',
    		name VARCHAR(128) NOT NULL COMMENT '姓名',
    		address VARCHAR(256) NOT NULL COMMENT '住址',
    		tel_no CHAR(10) NOT NULL COMMENT '电话号码',
    		mail_address CHAR(20) NOT NULL COMMENT '邮箱地址',
    		PRIMARY KEY (regist_no)
     );
    
    • 其中,该表的约束可以是以下这些:

      • primary key(属性名…):表明该属性构成关系的主码,主码属性必须非空且唯一

      • foreign key(属性名…) references 对应的关系名(属性名…):表明这个表上的外码约束

      • not null:加在特定的属性域后,表明在该属性上不允许空值,换句话说,此约束把空值排除在该属性域外

      • unique(属性名…):表明在关系中没有两个元组能在所有列出的属性上取值相同

      • check(某种条件…):例如check(budget>0);check(semeter in (‘summer’,‘spring’,‘fall’,‘winter’))

    • 而数据类型简单的可以是以下这些:

      • INTEGER型:用来指定存储整数的列的数据类型,不能存储小数

      • CHAR型:用来指定存储字符串的列的数据类型,可以像CHAR(10)这样指定存储的字符串的最大长度,字符串超过最大长度的部分无法输入到该列中,具体的说,字符串以定长字符串的形式存储在指定为CHAR型的列中,当列中存储的字符串长度达不到最大长度时,使用半角空格进行补足,例如在CHAR(8)的列中存储串’abc’时,实际会以’abc '的形式保存起来

      • VARCHAR型:用来指定存储字符串的列的数据类型,但数据以可变长字符串的形式来保存字符串,即,即使存储的字符串未达到最大长度,也不会用半角空格补足

      • DATE型:用来指定存储日期(年月日)的列的数据类型

表的删除和更新

  • 删除一个表:

    DROP TABLE <表名>;
    #例如 
    DROP TABLE Addressbook;
    
  • 表定义的更新:

    • 添加列:

      ALTER TABLE <表名> ADD COLUMN <列的定义>;
      # 例如
      ALTER TABLE Product ADD COLUMN product_name VARCHAR(100);
      ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL COMMENT '邮政编码';
      
    • 删除列:

      ALTER TABLE <表名> DROP COLUMN <列名>;
      # 例如
      ALTER TABLE Product DROP COLUMN product_name;
      
    • 表名的更改:

      # MySQL
      RENAME TABLE Poduct to Product;
      # Oracle PostgreSQL
      ALTER TABLE Poduct RENAME TO Product;
      # SQL Server
      sp_rename 'Poduct', 'Product';
      

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

表的查询

  • SELECT语句基础

    • 列的查询

      SELECT <列名>, ... 
      FROM <表名>
      
      # 例如
      
      
  • 基本运算符

  • 聚合和排序

  • 视图

  • 子查询

  • 关联子查询

数据更新

  • 数据的插入
  • 数据的删除
  • 数据的更新
  • 事务

DDL(Data Control Language,数据控制语言)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值