MySQL数据库的基本操作

MySQL数据库基本操作

MySQL中数据库的类型

  • MySQL中的数据库分为系统数据库和用户数据库两大类。
  1. 系统数据库

    • information_schema:主要存储系统中的一些数据库对象信息,如用户表信息、字段信息、权限信息、字符集信息和分区信息等。
    • performance_schema:主要存储数据库服务器性能参数信息。
    • mysql:主要存储系统的用户权限信息。
    • test:MySQL数据管理系统自动创建的测试数据库,任何用户都可以使用。
  2. 用户数据库

    • 用户数据库是用户根据实际需求创建的数据库

SQL简介

  • SQL的全称是“结构化查询语言”的缩写,SQL语言不同于Java这样的程序设计语言,它是只能被数据库识别的指令,但是在程序中,可以利用其他编程语言组织SQL语句发送给数据库,数据库再执行相应的操作。
  • SQL的组成:
    • DML(数据操作语言,也被称为数据操纵语言):用来插入、修改和删除数据库中的数据,如INSERT、UPDATE和DELETE等。
    • DDL(数据定义语言):用来建立数据库、数据库对象,定义数据表结构等,大部分是以CREATE开头的命令,如CREATE TABLE、CREATE VIEW及DROP TABLE等。
    • DQL(数据查询语言):用来对书库中的数据进行查询,如SELECT等。
    • DCL(数据控制语言):用来控制数据库组件的存取许可、存取权限等,如GRANT、REVOKE等。

MySQL数据库基本操作

  1. 创建数据库

    • MySQL中创建数据库的基本SQL语句的语法格式如下:

      • CREATE DATABASE 数据库名;

      • #例如
        CREATE DATABASE mySchool;
        
      • 在MySQL中,以英文半角分号(;)作为一条命令的结束符

      • 注意:通过执行SQL语句的结果发现,下面有一行提示“Query OK.1 row affected(0.00sec)”,这段提示可以分为三个部分:1.“Query OK ”:表示SQL语句执行成功。2.“1 row affected”:表示操作影响的行数。3.“0.00sec”:表示操作执行的时间

  2. 查看数据库列表

    • 执行查看数据库命令可以查看已存在的数据库,语法格式如下
      • SHOW DATABASES;
  3. 选择数据库

    • 数据是放在数据表中的,在对数据进行操作之前,需要确定该表所在的数据库,因此需要先选择一个数据库。语法格式如下

      • USE 数据库名

        USE mybase;
        USE myschool;
        #从结果可以看出,如果选择的数据库不存在,则会报错;如果存在且用户有权限访问,则提示“Database changed”,即数据库已切换。
        
  4. 删除数据库

    • 删除数据库的语法格式如下。

      • DROP DATABASE 数据库名;

      • DROP DATABASE myschool;
        

使用SQL语言操作数据库

  1. 数据类型... ... (详见课本27页至28页)

  2. 创建表

    • 如何使用DDL语言创建数据库表

      • 语法

        • 创建数据库表的语法格式如下:CREATE TABLE[IF NOT EXISTS] 表名(字段1 数据类型 [字段属性|约束] [索引] [注释],字段2 数据类型 [字段属性|约束] [索引] [注释],字段n 数据类型 [字段属性|约束] [索引] [注释])[表类型] [表字符集] [注释];
      • 字段的约束及属性

        • 数据完整性是指数据的准确性和一致性。数据库是否具备数据完整性关系到数据库系统是否能真实地反映现实世界,因此,数据库地完整性是非常重要的。在MySQL中同样提供了约束机制以保证数据的完整性。(常用的字段属性约束详见书本第30页)

        • 常用的字段属性约束中主键约束是非常重要的约束,当需要使用数据库表中某一字段或某几个字段来唯一标识所有记录时,需要将该字段设置为表的主键,主键可以是但字段的,也可以是多字段的。

          • 单字段主键

            • 语法格式:CREATE TABLE [IF NOT EXISTS]表名(字段1 数据类型 PRIMARY KEY,... ...)

            • 在定义完所有字段之后指定主键,语法格式:CREATE TABLE [IF NOT EXISTS]表名(字段1 数据类型,... ... [CONSTRAINT]<约束名>PRIMARY KEY[列名])

            • CREATE TABLE student(
              'studentNo' INT(4) PRIMARY KEY,
              ... ...
              )
              # 或者
              CREATE TABLE student(
              'studentNo' INT(4),
              ... ...
              PRIMARY KEY(studentNo)
              )
              
          • 多字段联合主键

            • 主键由多字段组成,语法格式如下:CREATE TABLE[IF NOT EXISTS]表名(PRIMARY KEY[字段1,字段2......])

            • CREAT TABLE tb temp(
              'id' INT(4),
              'name' VARCHAR(11),
              ... ...
              PRIMARY KEY(id,name)
              )
              
      • 注释

        • 在创建表的同时可以为表或字段添加说明性文字,即注释。注释使用COMMENT关键字来添加的

          • CREATE TABLE test(
               'id' int(11) UNSIGNED COMMENT'编号'
            )COMMENT='测试表'
            
      • 编码格式设置

        • 默认情况下MySQL所有数据库、表、字段的都是用MySQL默认字符集,也可以通过my.ini中的default-charachter-set 参数来修改默认字符集
        • 创建表时指定字符集的语法格式如下:CREATE TABLE [IF NOT EXISTS]表名(#省略代码)CHARSET=字符集名
  3. 查看表

    • 创建完表之后,如果需要查看以下该表是否存在,可以使用查看表的SQL命令,其语法格式如下

      • SHOW tables;注意:在使用SHOW tables语句之前,必须先选择数据库,否则将会给出错误提示“No database selected”
    • 如果需要查看表的定义,可以通过执行SQL语句DESCRIBE来实现,其语法格式如下

      • DESCRIBE 表名 或 DESC表名

      • USE myschool;
        DESCRIBE 'student';
        
  4. 删除表

    • 与创建数据库一样,如果当前数据库中已存在student表,则再次创建时系统将提示出错。我们需要预先检测当前数据库中是否存在该表,如果存在,则先删除,然后创建。可以使用IF EXISTS语句进行判断。删除表的语法格式如下:DROP TABLE [IF EXISTS] 表名

      • DROP TABLE 'student';
        #将上述创建student表的语句改成完整的删除并创建表的语句
        USE school;
        DROP TABLE IF EXISTS 'student';
        CREATE TABLE 'student'(
        ... ...
        )
        
  5. 修改表

      1. 修改表名

        • 在一个数据库中,表名是唯一的。可以通过SQL语句对已创建的表修改表名,语法格式如下

        ALTER TABLE<旧表名>RENAME[TO]<新表名>
        DROP TABLE IF EXISTS 'demo01';
        CREATE TABLE IF NOT EXISTS 'demo01'(
        'id' INT(10) NOT NULL AUTO_INCREMENT,
        'name' VARCHAR(32) NOT NULL,
        PRIMARY KEY(id)
        );

        修改表名

        ALTER TABLE 'demo01' RENAME 'demo02';

        
        
        
        
      1. 添加字段,语法格式:ALTER TABLE 表名 ADD 字段名 数据类型 [属性];

        ALTER TABLE demo02 ADD 'password' VARCHAR(32) NOT NULL
        
  • 3.修改字段,数据表中的字段包含字段名和数据类型,可以修改字段名和修改数据存储类型。

    • 语法格式:ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];

    • 其中,“原字段名”指修改前的字段名,“新字段名”指修改后的字段名,“数据类型”是指修改后的数据类型,如果不需要修改数据类型,则和原数据类型保持一致,但“数据类型”不能为空。

      ALTER TABLE demo02 CHANGE 'name' 'username' CHAR(10) NOT NULL;
      

      注意:由于不同类型的数据存储方式和长度不同,修改数据类型可能会影响到数据表中已有的数据,因此

    1. 删除字段

      • 删除字段就是将数据表中的某个字段从表中移除,语法格式如下:ALTER TABLE 表名 DROP 字段名

        ALTER TABLE demo02 DROP 'password';
        
    1. 添加主键约束
  • 在实际应用中,也许会用到其他修改表结构的语句,这时可以通过查看系统帮助来找到他们。通过执行“HELP ALTER TABLE”;可查看所有修改表结构的SQL语句。用户可以通过查看语法定义和参数设置内容,来修改表的不同部分

    • 添加主键约束的语法格式如下:ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名 (主键字段)

      ALTER TABLE 'grade' ADD CONSTRAINT 'pk_grade' PRIMARY KEY 'grade'('gradeid')
      
      1. 添加外键约束

        • 语法格式如下:ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段)

          ALTER TABLE 'student' ADD CONSTRAINT fk_student_grade FOREIGN KEY(gradeId)
          REFERENCES grade(gradeId);
          

注意:在MySQL中,InnoDB存储类型的表支持外键,MyISAM存储类型的表不支持外键,因此对于MyISAM存储类型的表也可以通过建立逻辑关联的方式保证数据的完整性和一致性

HELP命令
  • MySQL 中查看帮助的命令是HELP,语法如下:HELP 查询内容;其中查询内容为要查询的关键字

    #通过HELP contents命令可查看帮助文档目录列表
    HELP contents;
    #查看具体内容,可以选择某一项进行查询,如查看所支持的额数据类型
    HELP Data Types;
    #若要进一步查看某一数据类型,如INT类型,命令如下。
    HELP INT;#可以看到INT的帮助信息,包含数据类型描述、取值范围等。
    #另外,还可以查询某命令
    HELP CREATE TABLE;
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容