zoukankan      html  css  js  c++  java
  • MySQL学习(一) SQL基本操作

    SQL的基本操作无非就是增删改查(CRUD),根据对操作的对象分类,又可以分为三类,库操作,表操作与数据操作。

    库操作

    新增数据库

    CREATE DATABASE [IF NOT EXISTS] db_name [库选项]
    

    其中库选项是用来约束数据库, 分为两个选项

    字符集设定:CHARACTER SET 具体字符集(数据存储的编码格式): 常用的字符集有GBKUTF8

    校对集设定:COLLATE 具体校对集(数据比较的规则)。

    -- 创建一个名称为db的数据库,并且设置字符集为utf8
    CREATE DATABASE IF NOT EXISTS db CHARACTER SET utf8;
    

    注意这里创建的数据库的名字不能用关键字(已经使用的字符)或者保留字(将来可能使用到的)

    如果一定想要用关键字或者保留字(不建议使用),那么需要用到反引号(一般在键盘上Esc键的下方,要在英文状态下输出

    CREATE DATABASE IF NOT EXISTS `database` CHARACTER SET utf8;
    

    当然,也可以创建中文名称的数据库(不建议使用)

    CREATE DATABASE IF NOT EXISTS `数据库` CHARACTER SET utf8;
    

    查看数据库

    SHOW DATABASES [LIKE 'pattern']
    

    其中pattern是匹配模式

    %:表示匹配多个字符

    _:表示匹配一个字符

    -- 查看所有数据库
    SHOW DATABASES;
    
    -- 查看以information_开头的数据库,需要对中划线_进行转义
    SHOW DATABASES LIKE 'information\_%';
    

    -- 查看以information开头的数据库,相当于information%
    SHOW DATABASES LIKE 'information_%';
    

    查看数据库的创建语句

    SHOW CREATE DATABASE db_name
    
    -- 查看数据库db的创建语句
    SHOW CREATE DATABASE db;
    

    更新数据库

    ALTER DATABASE db_name [库选项]
    
    -- 修改数据库db的字符集
    ALTER DATABASE db CHARACTER SET gbk; 
    

    删除数据库

    DROP DATABASE [IF EXISTS] db_name
    
    -- 删除db数据库
    DROP DATABASE IF EXISTS db;
    

    表操作

    新增数据表

    CREATE TABLE [IF NOT EXISTS] tbl_name(
        col_name type,
        col_name type    
    )
    

    任何一个表的设计都必须指定数据库

    显示指定

    -- 创建student表
    CREATE TABLE IF NOT EXISTS db.student (
    	id INT PRIMARY KEY NOT NULL,
    	name VARCHAR(10),
    	age TINYINT
    )
    

    隐式指定

    -- 指定数据库
    USE db;
    
    -- 创建student表
    CREATE TABLE IF NOT EXISTS student (
    	id INT PRIMARY KEY NOT NULL,
    	name VARCHAR(10),
    	age TINYINT
    )
    

    查看数据表

    查看所有表

    SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern']
    

    其中FULL修改符,可以显示第二个输出列,对于一个表,第二列的值为BASE TABLE;对于一个视图,第二列的值为VIEW。

    SHOW TABLES;
    

    SHOW FULL TABLES;
    

    根据匹配模式查看部分表

    -- 查看以s开头的表
    SHOW TABLES LIKE 's%';
    

    查看表的创建语句

    SHOW CREATE TABLE student;
    

    查看表结构

    DESC student;
    

    更新数据表

    修改表名

    RENAME TABLE tbl_name TO new_tbl_name
        [, tbl_name2 TO new_tbl_name2] ...
    

    可对一个或多个表进行重命名

    -- 将student重命名为teacher
    RENAME TABLE student to teacher;
    

    新增字段

    对于字段的操作就比较多了,包括字段的新增、修改、重名以及删除

    ALTER TABLE tbl_name ADD [COLUMN] col_name type [FIRST | AFTER col_name ]
    

    FIRST:表示插入表中第一个位置

    AFTER:表示插入在某个字段的后面,默认在最后一个字段的后面

    -- 在name字段后面插入grade字段
    ALTER TABLE class ADD COLUMN grade VARCHAR(10) AFTER name;
    

    修改字段

    ALTER TABLE tbl_name MODIFY [COLUMN] col_name type [FIRST | AFTER col_name ]
    
    -- 修改grade字段的长度
    ALTER TABLE class MODIFY COLUMN grade VARCHAR(20);
    

    重命名字段

    ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name type [FIRST | AFTER col_name ]
    
    -- 修改表class的num字段名称为total
    ALTER TABLE class CHANGE COLUMN num total int(11);
    

    删除字段

    ALTER TABLE tbl_name DROP [COLUMN] col_name
    
    -- 删除class表的total字段
    ALTER TABLE class DROP COLUMN total;
    

    删除数据表

    DROP TABLE [IF EXISTS] tbl_name [, tbl_name] ...
    

    可以删除一张或多张表

    -- 删除class表
    DROP TABLE IF EXISTS class;
    

    数据操作

    新增数据

    INSERT [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...)
    

    不明确指定列名,需要跟数据表的字段顺序一致

    -- student表插入一条数据
    INSERT INTO student VALUES(1, 's1', 20);
    

    指定列名

    -- 根据列名与顺序,往student表插入一条数据
    INSERT INTO student(name, age) VALUES('s2', 20);
    

    查看数据

    MySQL基础查询

    更新数据

    更新单张表

    UPDATE tbl_name
        SET col_name1=expr1 [, col_name2=expr2 ...]
        [WHERE where_definition]
    
    -- 更新student表name为s2的age字段值
    UPDATE student SET age = 22 WHERE `name` = 's2';
    

    更新多张表

    UPDATE table_references
        SET col_name1=expr1 [, col_name2=expr2 ...]
        [WHERE where_definition]
    
    UPDATE class, student SET student.age = 23 WHERE student.classId = class.id;
    

    删除数据

    DELETE FROM tbl_nam [WHERE where_definition]
    
    -- 删除姓名为s1的数据
    DELETE FROM student WHERE student.`name` = 's1'
    
  • 相关阅读:
    vim 命令
    navicat 破解
    vim 使用技巧记录
    Ubuntu 16.04 安装ftp服务器
    mockito测试入门学习
    Java的getClass()函数
    JQuery中Ajax的操作
    JS中获取元素使用getElementByID()、getElementsByName()、getElementsByTagName()的用法和区别
    Tomcat下ajax请求路径总结
    javascript:void()的理解
  • 原文地址:https://www.cnblogs.com/huangminwen/p/9211179.html
Copyright © 2011-2022 走看看