mysql-(数据库基础)

mysql

  • 什么是数据(data):硬盘中存的东西......

  • 数据库:

    • 数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务
  • 数据库的优点

    • 数据按照一定的数据模型组织描述和存储
    • 可为各种用户共享
    • 冗余度较小,节省存储空间
    • 易扩展,编写有关数据库管理
  • 数据库管理系统(Database Management System)

    • 是一种操纵和管理数据库的大型软件,适用于建立使用和维护数据库,简称DBMS。
    • 作用:他对于数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
  • mysql命令

    mysql -h host_name -u user_name -ppassword
    mysql-h:当前连接服务器不在同台主机时,填写主机名或IP地址
    mysql-u:登录mysql用户名
    mysql-p:登录mysql密码
    登录过程

    mysql -u root -ppassword
    show databases;//显示所有数据库
    use XXX;
    show tables;//显示所有的表
    select * from XXX;//进入查看该表
    \q:退出
    
  • 数据库由一批数据构成的有序集合,这些数据被分门别类的存放在一些结构化的数据表里(table)里,而数据之间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库

  • 数据存储的完整性

    • 有一对必选的有一堆可选的方案以保持完整性。
    • 约束方法:唯一约束、主键约束、标识列
    • 约束方法:限制数据类型、检查约束、外键约束(保证程序表中的数据不孤立)、默认值、非空约束。
    • 约束方法:规则,存储过程,触发器。
  • 完整性包括

    • 输入的类型是否正确?
    • 输入的格式是否正确?
    • 是否在允许的范围内?
    • 是否存在重复输入?
    • 是否符合其他特定要求?

SQL

  • 什么是SQL(Structured Query Language(结构化查询语言))
    • SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。
  • SQL语句
    • SQL用;结尾,否则认为语句未结束
    • ->代表SQL语句未结束
    • 取消SQL语句用\c
    • SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)
    • 使用函数时,函数名和后面的括号之间不能有空格
  • 使用字符串需要转义字符


    Paste_Image.png

数据类型

  • CHAR和VARCHAR类型
    • CHAR类型和VARCHAR类型长度都是0~255之间的大小,他们之间的差别是mysql处理存储的方式
    • CHAR把这个大小视为值得准确大小,(用空格填补比较短的值)
    • VARCHAR把它视为最大值并只使用字符串实际使用的需要字节数,较小的值存入VARCHAR类型的字段时,将不会用空格填补。(较长值仍然会被截断)
  • 数值列类型
    • mysql为除了NULL值外的所有通用数据提供了列类型。列类型是一种手段,通过该手段可以描述表类需要什么类型的表。


      Paste_Image.png

      Paste_Image.png
  • 时间和日期类型


    Paste_Image.png
    • 说明
      • 每个时间和日期列类型都有一个零值,当插入非法数值时就用零值来添加
      • 表示日期时必须先按:年,月,日的顺序给出
      • DATE ,TIME ,DATETIME分别是存储日期,时间与日期和时间的组合,其格式为“YYYY-MM-DD”,“hh:mm: ss”和“YYYY-MM-DD hh:mm: ss”,对于DATETIME类型,日期和时间部分都需要
        TIMESTAMP
      • 时间戳列类型以YYYYMMDDhhmmss的格式来表示值,其取值范围是19700101000000到2037年的某个时间,主要用于记录更改或创建某个记录

  • 创建表
:create table 表名(
列名1  列类型  [<列的完整性约束>],
列名2  列类型  [<列的完整性约束>], 
        ... ...   );
create database test01;//创建名为test01的库
use test01;//进入库
show tables;//查看库内有几张表
creat table data11(showtime time);//创建一行一列的表,表名data11,列名show time
insert into data11 values('11:11:11'),('11:11'),(111111);//插入数据
select * from data11;//查看表
Paste_Image.png
create table data12(f_data date,f_time);
insert into data12 (f_data,f_time)     values('1978-4-6',123421),(650503,'3:4:1');
Paste_Image.png
create table data12(f_data date,f_time);
insert into data14('1999-11-11 11:11:11','2002-11-11 11:11:11');
insert into data14 values(now(),null);
Paste_Image.png
create table t1(num1 int not null,num2 int);
insert into t1(-1,-2) values(10);
Paste_Image.png
create tablet2(num1 int null,num2 int) 
insert into t2(num2) values(10);
Paste_Image.png
create table t3(num1 int default 100,num2 int);
insert into t3(num2) values(2);
Paste_Image.png
create table t4(num2 int zerofill);
insert into t4 values(2);
Paste_Image.png
create table t5(num1 int unique,num2 int);
insert into t5 values(1,2);
insert into t5 values(1,2);
Paste_Image.png
create table t6(num1 int auto_increment unique not null,num2 int);
insert into t6 (num2)values(10);
insert into t6 (num2)values(10);
insert into t6 (num2)values(10);
Paste_Image.png
insert into t6 values(100,10);
insert into t6 (num2)values(10);
Paste_Image.png
delete from t6;
insert into t6 (num2)values(10);
Paste_Image.png

引用完整性

  • 主键和外键

    • 数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键(foreign key)建立起来的。
    • 主键:帮助MySQL以最快的速度把一条特点的数据记录的位置确定下来。
      • 主键必须是唯一的
      • 主键应该是紧凑的,因此整数类型比较适合
    • 外键:引用另外一个数据表的某条记录。
      • 外键列类型尽可能与主键列类型保持一致
      • 外键列应该加上NOT NULL
  • 注意点

    1. 当主表中没有对应的记录时,不能将记录添加到子表
    2. 不能更改主表中的值而导致子表中的记录孤立
    3. 子表存在与主表对应的记录,不能从主表中删除该行
    4. 删除主表前,先删子表
  • 插入insert

    • 直接在外键插入信息,会报错
    主键
    create table student(
        sid int not null auto_increment,
        name varchar(20) not null,
        primary key(sid)
    );
    外键(自动检查外键是否匹配,仅适用InnoDB)
    create table score(
        cid int not null auto_increment primary key,
        score int,
        sid int,
        foreign key(sid) references student(sid)
    );
    
    insert into score (score,sid) values(100,1);
    
    Paste_Image.png
    insert into student (name) values('ssh');
    
    Paste_Image.png
    insert into score (score,sid) values(100,1);
    
    Paste_Image.png
    • 直接删除主键会报错
    delete from studnet;
    drop from student;
    
    Paste_Image.png
    • 插入中文
    create table t7(name char(20),id int);
    insert into t7 values('ssh',1);
    insert into t7 values('孙苏徽',1);
    
    Paste_Image.png
    create table t7(name char(20),id int) default     charset=utf8;
    insert into t7 values('ssh',1);
    insert into t7 values('孙苏徽',1);
    
    Paste_Image.png

更改表结构

  1. add 列名 建表语句 [first | after 列名]
    • 可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
  2. add primary key (列名)
    • 为表添加一个主键,如果主键已经存在,则出现错误
  3. add foreign key(列名) references
    • 表名(列名)为表添加一个外键
  4. alter 列名 set default 默认值
    • 可以更改指定列默认值
  5. change 旧列名 新列名 <建表语句> [first | after 列名]
    • 可以更改列类型和列名称,如果原列的名字和新列的名字相同
  6. modify 列名 <建表语句> [first | after 列名]
    • 和change的作用相同
  7. drop 列名 //可以删除一列
  8. drop primary key //可以删除主键
  9. engine 类型名 //可以改变表类型
  10. rename as 新表名 //可以将表名更改
  • alter各种使用
    • 新建一个列
    alter table t8 add address int after name;
    desc t8;
    select * from t8;
    
    Paste_Image.png
    • 设address默认值
    alter table t8 alter address set default 100;
    desc t8;
    
    Paste_Image.png
    • change id为number 属性char(20)
    alter table t8 change id number char(20);
    desc t8;
    select * from t8;
    
    Paste_Image.png

    Paste_Image.png
    • change name 属性
    alter table t8 change name name int;
    desc t8;
    select * from t8;
    
    Paste_Image.png
    • modify使用
    alter table t8 modify name char(20);
    
    Paste_Image.png
    • drop使用
    alter table t8 drop address;
    
    Paste_Image.png
    • rename使用
    alter table t8 rename as t9;
    
    Paste_Image.png

mysql运算符

  • select
    • select 与binary
    select 'x'<>'X';
    select binary 'x'<>'X';
    
    Paste_Image.png
    • between
    select 10 between 10 and 100;
    
    Paste_Image.png
    select 'x' between 'a' and 'z';
    
    Paste_Image.png
    select 7 in(1,2,3,4,5,6,7);
    select 7 in(1,2,3,4,5,6);
    
    Paste_Image.png
  • NULL
    • IS NULL 或者 IS NOT NULL来测定是否为空
    • 可以使用特殊的<=>运算符,MySQL称为”NULL安全的等于”运算符。这意味着即使当包含在比较运算符中的表达式含有一个NULL值时,MySQL也会为比较运算符返回一个真值或假值。


      Paste_Image.png
  • 通配符
    • “%” (百分号) 代表任意长度(长度可以为0)的字符串
      • a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串
    • “_”(下横线) 代表任意单个字符
      • a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串
    select 'mysql' like '%SQL',binary 'mysql' like '%SQL'
    
    Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容

  • 1.MySQL数据库 2.SQL语句 第一节课 ###1(MySQL数据库)数据库概念.avi 5...
    码了个农啵阅读 1,187评论 1 16
  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQ...
    PHPer_阅读 487评论 0 1
  • 1.1-认识MySQL 什么是数据库?计算机处理和存储的一切信息都是数据。数据库是计算机系统中一种用于存取数据的程...
    LuckyPandaLee阅读 2,163评论 0 12
  • 1、SQL中的字符串都要用单引号 不用单引号也可能会执行,但是会有类型转换,而类型转换设计函数操作,引起索引失效或...
    拾壹北阅读 492评论 0 1
  • 月底没剩几天了,任务数字还是那么重,真让人头疼,没完没了的搞促销,自己都烦了,不知道顾客烦不烦! 手机任务其实都已...
    手机哥阅读 348评论 0 0