MySQL 学习笔记 一

MySQL 学习笔记 一,第1张

概述一、数据库简单介绍 1、 按照数据库的发展时间顺序,主要出现了以下类型数据库系统:Ø 网状型数据库Ø 层次型数据库Ø 关系型数据库Ø 面向对象数据库上面4中数据库系统中,关系型数据库使用最为广泛。面向对象数据库则是由面向对象语言催生的新型数据库,目前的一些数据库系统,如:SQL Server 2005、Oracle10g等都开始增加面向对象的特性。 二、常用基本SQL语句/语法 Ø SQL语句基础理论SQL是 *** 作和检索关系型数据库的标准语言,标准SQL语句可用于 *** 作然后关系型数据库。标准的SQL语句通常划分为以下类型:查询语句:主要由于select关键字完成,查询语句是SQL语句中最复杂,功能最丰富的语句。DML(Data Munipulation Language,数据 *** 作语言)语句,这组DML语句修改后数据将保持较好的一致性; *** 作表的语句,如插入、修改、删除等;DDL(Data Definition Language,数据定义语言)语句, *** 作数据对象的语言,有create、alter、drop。DCL(Data Control Language,数据控制语言)语句,主要有grant、revoke语句。事务控制语句:主要有commit、rollback和savepoint三个关键字完成DDL语句DDL语句是 *** 作数据库对象的语句,包括创建create、删除drop、修改alter数据库对象。常见数据库对象对象名称对应关键字描述表table表是数据库存储的逻辑单元,以行和列的形式存在;列是字段,行就是一条数据记录数据字典  就是系统表,存储数据库相关信息的表,系统表里的数据通常有数据库系统维护。系统表结构和数据,开发人员不应该手动修改,只能查询其中的数据视图view一个或多个数据表里的数据的逻辑显示,视图就是一张虚拟的表,并不真正存储数据约束constraint执行数据检验规则,用于保证数据完整性的规则索引index用于提高查询性能,相当于书的目录函数function用于完成一个特定的计算,具有返回值和参数存储过程procedure完成某项完整的业务处理,没有返回值,但可通过传出参数将多个值传个调用环境触发器trigger相当于一个事件的监听器,当数据库发生特定的事件后,触发器被触发,完成响应处理上面的对象都可以通过用create、alter、drop完成相关的创建、修改、删除 *** 作。常用数据类型列类型说明tinyint/smallint/mediumint int(integer)/bigint1字节、2字节、3字节、4字节、8字节整数,又可分有符号和无符号两种。这些整数类型的区别仅仅表现范围不同float/double单精度、双精度浮点类型decimal(dec)精确小数类型,相当于float和double不会产生精度丢失问题date日期类型,不能保存时间。当Java里的Date对象保存到该类型中,时间部分丢失time时间类型,不能保存日期。当Java的Date对象的保存在该类型中,日期部分丢失datetime日期、时间类型timestamp时间戳类型year年类型,仅保存年份char定长字符串类型varchar可变长度字符串类型binary定长二进制字符串类型,它以二进制形式保存字符串varbinary可变长度的二进制字符串类型,二进制形式保存字符串tingblob/blobmediumblob/longblob1字节、2字节、3字节、4字节的二进制大对象,可存存储超图片、音乐等二进制数据,分别可存储:255/64K/16M/4G的大小tingtext/textmediumtext/longtext1字节、2字节、3字节、4字节的文本对象,可存储超长长度的字符串,分别可存储:255/64K/16M/4G的大小的文本enum(‘val1’, ‘val2’, …)枚举类型,该列的值只能是enum括号中出现的值的之一set(‘value1’, ‘value2’, …)集合类型,该列的值可以是set中的一个或多个值Ø 常用查询MySQL结束符是“;”结束。 1、 显示所有数据库show databases; 2、 删除数据库drop database dbName; 3、 创建数据库create database [if not exists] dbName;中括号部分可选的,判断该数据不存在就创建 4、 切换、使用指定数据库use dbName; 5、 显示当前使用数据库所有的表对象show tables; 6、 显示表结构describe(desc)desc tableName; 7、 创建一张表create table user (--int 整型uId int,--小数uPrice decimal,--普通长度文本,default设置默认值uName varchar(255) default ‘zhangsan’,--超长文本uRemark text,--图片uPhoto blob,--日期uBirthday datetime); 8、 子查询建表方法部分列名匹配模式:create table userInfo (name varchar(20),sex char)asselect name, sex from user;上面的列名和子查询的列名以及类型要对应 全部列名模式:create table userInfoasselect * from user;直接将整个表的类型和数据备份到新表userInfo中 9、 添加表字段添加单列alter table user add tel varchar(11) default ‘02012345678’; 添加多列alter table useradd (photo blob,birthday date);上面就同时增加了多列字段 10、 修改表字段修改tel列alter table user modify tel varchar(15) default ‘02087654321’;修改tel列的位置,在第一列显示alter table user modify tel varchar(15) default '02087654321' first;修改tel列的位置,在指定列之后显示alter table user modify tel varchar(15) default '02087654321' after age;注意:alter modify不支持一次修改多个列,但是Oracle支持多列修改但是MySQL可以通过多个modify的方式完成:alter table usermodify tel varchar(15) default '02087654321' first,modify name varchar(20) after tel; 11、 删除指定字段alter table user drop photo; 12、 重命名表数据表重命名alter table user rename to users; 字段重命名alter table users change name u_name varchar(10);alter table users change sex u_sex varchar(10) after u_name;如果需要改变列名建议使用change,如果需要改变数据类型和显示位置可以使用modify13、 删除表drop table users;drop删除表会删除表结构,表对象将不存在数据中;数据也不会存在;表内的对象也不存在,如:索引、视图、约束; truncate删除表truncate都被当成DDL出来,truncate的作用就是删除该表里的全部数据,保留表结构。相当于DDL中的delete语句,但是truncate比delete语句的速度要快得多。但是truncate不能带条件删除指定数据,只会删除所有的数据。如果删除的表有外键,删除的速度类似于delete。但新版本的MySQL中truncate的速度比delete速度快。Ø 约束MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息;约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束:not null:非空约束,指定某列不为空unique: 唯一约束,指定某列和几列组合的数据不能重复primary key:主键约束,指定某列的数据不能重复、唯一foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据check:检查,指定一个表达式,用于检验指定数据MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束可分为:单列约束:每个约束只约束一列多列约束:每个约束约束多列数据 MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息;1、 not null约束非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。Null类型特征:所有的类型的值都可以是null,包括int、float等数据类型空字符串“”是不等于null,0也不等于nullcreate table temp(id int not null,name varchar(255) not null default ‘abc’,sex char null)上面的table加上了非空约束,也可以用alter来修改或增加非空约束增加非空约束alter table tempmodify sex varchar(2) not null; 取消非空约束alter table temp modify sex varchar(2) null; 取消非空约束,增加默认值alter table temp modify sex varchar(2) default ‘abc’ null; 2、 unique唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。MySQL会给唯一约束的列上默认创建一个唯一索引;create table temp (id int not null,name varchar(25),password varchar(16),--使用表级约束语法,constraint uk_name_pwd unique(name, password));表示用户名和密码组合不能重复添加唯一约束alter table temp add unique(name, password);alter table temp modify name varchar(25) unique;删除约束alter table temp drop index name; 3、 primary key主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。MySQL的主键名总是PRIMARY,当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。列模式:create table temp(/*主键约束*/id int primary key,name varchar(25)); create table temp2(id int not null,name varchar(25),pwd varchar(15),constraint pk_temp_id primary key(id)); 组合模式:create table temp2(id int 一、数据库简单介绍

1、 按照数据库的发展时间顺序,主要出现了以下类型数据库系统:

Ø 网状型数据库

Ø 层次型数据库

Ø 关系型数据库

Ø 面向对象数据库

上面4中数据库系统中,关系型数据库使用最为广泛。面向对象数据库则是由面向对象语言催生的新型数据库,目前的一些数据库系统,如:sql Server 2005、Oracle10g等都开始增加面向对象的特性。

 

二、常用基本SQL语句/语法

Ø sql语句基础理论

sql是 *** 作和检索关系型数据库的标准语言,标准SQL语句可用于 *** 作然后关系型数据库。

标准的sql语句通常划分为以下类型:

查询语句:主要由于select关键字完成,查询语句是SQL语句中最复杂,功能最丰富的语句。

DML(Data Munipulation Language,数据 *** 作语言)语句,这组DML语句修改后数据将保持较好的一致性; *** 作表的语句,如插入、修改、删除等;

DDL(Data DeFinition Language,数据定义语言)语句, *** 作数据对象的语言,有create、alter、drop。

DCL(Data Control Language,数据控制语言)语句,主要有grant、revoke语句。

事务控制语句:主要有commit、rollback和savepoint三个关键字完成

DDL语句

DDL语句是 *** 作数据库对象的语句,包括创建create、删除drop、修改alter数据库对象。

常见数据库对象

对象名称

对应关键字

描述

table

表是数据库存储的逻辑单元,以行和列的形式存在;列是字段,行就是一条数据记录

数据字典

就是系统表,存储数据库相关信息的表,系统表里的数据通常有数据库系统维护。系统表结构和数据,开发人员不应该手动修改,只能查询其中的数据

视图

vIEw

一个或多个数据表里的数据的逻辑显示,视图就是一张虚拟的表,并不真正存储数据

约束

constraint

执行数据检验规则,用于保证数据完整性的规则

索引

index

用于提高查询性能,相当于书的目录

函数

function

用于完成一个特定的计算,具有返回值和参数

存储过程

procedure

完成某项完整的业务处理,没有返回值,但可通过传出参数将多个值传个调用环境

触发器

trigger

相当于一个事件的监听器,当数据库发生特定的事件后,触发器被触发,完成响应处理

上面的对象都可以通过用create、alter、drop完成相关的创建、修改、删除 *** 作。

常用数据类型

列类型

说明

tinyint/smallint/mediumint int(integer)/bigint

1字节、2字节、3字节、4字节、8字节整数,又可分有符号和无符号两种。这些整数类型的区别仅仅表现范围不同

float/double

单精度、双精度浮点类型

decimal(dec)

精确小数类型,相当于float和double不会产生精度丢失问题

date

日期类型,不能保存时间。当Java里的Date对象保存到该类型中,时间部分丢失

time

时间类型,不能保存日期。当Java的Date对象的保存在该类型中,日期部分丢失

datetime

日期、时间类型

timestamp

时间戳类型

year

年类型,仅保存年份

char

定长字符串类型

varchar

可变长度字符串类型

binary

定长二进制字符串类型,它以二进制形式保存字符串

varbinary

可变长度的二进制字符串类型,二进制形式保存字符串

tingblob/blob

mediumblob/longblob

1字节、2字节、3字节、4字节的二进制大对象,可存存储超图片、音乐等二进制数据,分别可存储:255/64K/16M/4G的大小

tingtext/text

mediumtext/longtext

1字节、2字节、3字节、4字节的文本对象,可存储超长长度的字符串,分别可存储:255/64K/16M/4G的大小的文本

enum(‘val1’,‘val2’,…)

枚举类型,该列的值只能是enum括号中出现的值的之一

set(‘value1’,‘value2’,…)

集合类型,该列的值可以是set中的一个或多个值

Ø 常用查询

  dbname;
  [  ] dbname;
 dbname;
 tablename;
   (
 整型
,
,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        --普通长度文本,default设置默认值
(255)  ‘zhangsan’,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        --超长文本
,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        --日期
  userInfo (
(20),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">sex 
 
 name,sex  ;
  userInfo
 *  ;
    tel (11)  ‘02012345678’;
   
 ( 
,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">birthday 
    tel (15)  ‘02087654321’;
    tel (15)   ;
    tel (15)    age;
 modify不支持一次修改多个列,但是Oracle支持多列修改
 tel (15)   ,
 name (20)  tel;
    photo;
   rename  users;
  users change name u_name (10);
  users change sex u_sex (10)  u_name;

13、 删除表

users;

Ø 约束

MysqL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息;

 :非空约束,指定某列不为空
: 唯一约束,指定某列和几列组合的数据不能重复
 :主键约束,指定某列的数据不能重复、唯一
 :外键,指定该列记录属于主表中的一条记录,参照另一条数据
:检查,指定一个表达式,用于检验指定数据
 null约束
  temp(
  ,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        name (255)    ‘abc’,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        sex  
  temp
 sex (2)  ;
  temp  sex (2) ;
  temp  sex (2)  ‘abc’ ;
  temp (
(25),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        password (16),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        --使用表级约束语法,
 uk_name_pwd (name,password)
  temp  (name,password);
  temp  name (25) ;
  temp   name;
 
  temp(
  ,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">    name (25)
  temp2(
  ,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">    name (25),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">    pwd (15),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">     pk_temp_ID  (ID)
 pk_temp_ID  (name,pwd)
  temp   ;
  temp   (name,pwd);
  temp  ID   ;
 auto_increment  ,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        name (20),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        pwd (16)
  约束
  classes(
(20)
  student(
 auto_increment,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        name (22),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">         pk_ID  (ID),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        classes_ID   classes(ID)
  student(
,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">         (classes_ID)  classes(ID)
 fk_classes_ID  (classes_ID)  classes(ID)
  classes(
,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        number ,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">         (name,number)
(20),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        classes_number ,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        
 (classes_name,classes_number)  classes(name,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">删除外键约束:
  student    student_ibfk_1;
  student    fk_student_ID;
  student   (classes_name,number);
  tree(
(50),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">        parent_ID ,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">         (parent_ID)  tree(ID)
 
  ,前者是级联删除,后者是将从表的关联列的值设置为null。
  
,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">         (ID),monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">
(age > 20)
 

Ø 索引

)中的一个数据库对象,索引的作用就是提高对表的检索查询速度,
  IDx_temp_name  temp(name);
  IDx_temp_name$pwd  temp(name,monospace; direction: ltr; border-top-style: none; color: black; Font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">删除索引:
  IDx_temp_name  temp;

 

Ø 视图

  replace  vIEw_temp
 name,age  temp;
 option来完成限制。
 *  temp
  ;
  vIEw_temp
 ID,name  temp;
  vIEw_temp;
  v_temp;

 

Ø DML语句

 插入语句
 temp (,‘jack’,25);
 temp(name,age) (‘jack’,22);
 temp  ID = 7,name = ;
 temp(name)  name  classes;
,‘jackson’ 23);
 修改语句
 temp  name = ‘jack2’;
 temp  name = ‘jack’,age = 22;
 temp  name = ‘jack’  age > 22;
 删除语句
  temp;
  temp  age > 20;

 

Ø select 查询、function 函数

 *  temp;
 temp  age = 22;
 age + 2,age / 2,age – 2,age * 2  temp  age – 2 > 22;
 concat(name,‘-eco’)  temp;
 对列重命名
 name  ‘名称’  temp;
 name  “名’称”  temp;
 t.name name  temp  t;
 5 + 2;
 concat(,);
 去掉重复数据
  ID  temp;
  ID,age  temp;
 条件查询
、大于等于>=、小于<、小于等于<=、等于=、不等于<>
 *  t  a > 2  a >= 3  a < 5  a <= 6  a = 7  a <> 0;
 并且
 *  temp  age > 20  name = ‘jack’;
 或者
 *  tmep  name = ‘jack’  name = ‘jackson’;
 v  v2
 * form temp  age  20  25; 
 查询
 *  temp  ID  (1,2,3);
 模糊查询
 *  temp  name  ‘j%’;
 *  temp  name  ‘%k%’;
 *  temp  name  ‘\_%’  ‘\’;
   
 *  temp  name  ;
 *  temp  name   ;
 *  temp   (age > 20);
 *  temp  ID  (1,2);
 
 *  temp   ID;
 *  temp   ID ;
 *  temp   ID,age;
总结

以上是内存溢出为你收集整理的MySQL 学习笔记 一全部内容,希望文章能够帮你解决MySQL 学习笔记 一所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1169234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)