zoukankan      html  css  js  c++  java
  • mysq数据库相关操作

    (一)常用SQL语句

    1.SELECT USER()  得到登陆的用户

    2.SELECT VERSION()  得到mysql的版本信息

    3.SELECT NOW()  得到当前的时间

    4.SELECT DATABASE()  得到打开的数据库名字

    (二)数据库相关操作

    1.创建数据库(名称不要包含特殊字符或者是MySQL关键字)

    (1)CREATE {DATABASE|SCHEMA} db_name;

    如:CREATE DATABASE dou

    (2)CREATE {DATABASE|SCHEMA} db_name [IF NOT EXISTS ] db_name   检测数据库名称是否存在,不存在则创建

    如:CREATE DATABASE IF NOT EXISTS dou;

    (3)CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset;  在创建数据库的同时指定编码方式

    如:CREATE DATABASE IF NOT EXISTS dou DEFAULT CHARACTER SET 'GBK';

     2.查看当前服务器下全部数据库

    SHOW DATABASES|SCHEMAS;(注意s)

    3.查看指定数据库的详细信息

    SHOW CREATE DATABASE dou;

    4.修改指定数据库的编码方式

    ALTER DATABASE dou DEFAULT CHARACTER SET 'UTF8';

    5.打开指定数据库

    USE dou

    6.得到当前打开的数据库

    SELECT DATABASE()|SCHEMA();(注意小括号)

    7.删除指定数据库

    DROP DATABASE dou;

    DROP DATABASE IF EXIST dou;如果存在则删除

    (三)数据表相关操作

    1.创建表

    CREATE TABLE [IF NOT EXISTS] tbl_name(
    字段名称 字段类型 [完整性约束条件],
    字段名称 字段类型 [完整性约束条件],
    ...
    )ENGINE=存储引擎 CHARSET=编码方式;

    如:

    CREATE TABLE IF NOT EXISTS dou(
    id INT PRIMARY KEY,
    username VARCHAR(20),
    password CHAR(32),
    email VARCHAR(50),
    age TINYINT,
    card CHAR(18),
    tel CHAR(11),
    salary FLOAT(8,2),
    married TINYINT(1),
    addr VARCHAR(100),
    sex ENUM('男','女','保密')
    )ENGINE=INNODB CHARSET=UTF8;

    完整性约束:

    ①UNSIGNED 无符号,没有负数,从0开始

    ②NOT NULL 非空约束,值不能为NULL,可以不填,不填即为空白

    ③DEFAULT 默认值 如果插入的时候没有给字段赋值则使用默认值

      如:age TINYINT UNSIGNED DEFAULT 18

    ④PRIMARY KEY 主键,值不能重复,一个表只能有一个主键,字段不能为空;

    但是一个表里可以有复合主键

    如:

    -- 复合主键
    CREATE TABLE test_primary_key(
    id INT UNSIGNED,
    courseId VARCHAR(20),
    username VARCHAR(20),
    email VARCHAR(50),
    PRIMARY KEY(id,courseId)
    );

    此时只有当id和courseid同时和前面的相同时,才会出错,如果仅有一个重复也是可以正常添加的

    ⑤AUTO_INCREMENT 自动增长,只能用于数值列,而且配合索引使用,默认初始值为1,每次增长1

    如:

    CREATE TABLE test_auto_increment(
    id INT UNSIGNED KEY AUTO_INCREMENT,
    username VARCHAR(20)
    );

    INSERT test_auto_increment(username) VALUES('A');
    INSERT test_auto_increment(username) VALUES('B');

    INSERT test_auto_increment(id,username) VALUES(NULL,'E');
    INSERT test_auto_increment(id,username) VALUES(DEFAULT,'F');
    INSERT test_auto_increment(id,username) VALUES(15,'G');

    INSERT test_auto_increment(username) VALUES('C');

    此时最后一次的id为16

    ⑥UNIQUE KEY 唯一性,同样的值不能重复,但是NUL除外

    ⑦ZEROFILL 零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED

    如:

    CREATE TABLE zero(
    id INT(4) ZEROFILL
    );

    INSERT zero VALUES(1);

    自动前面补零即 0001

    ⑧FOREIGN KEY 外键约束

    2.查看当前数据库下已有数据表

    SHOW TABLES;

    3.查看指定数据表的详细信息

    SHOW CREATE TABLE test_auto_increment

    4.查看表结构

    DESC|DESCRIBE test_auto_increment

    SHOW COLUMNS FROM test_auto_increment

    5.删除指定数据表

    DROP TABLE [IF EXISTS] test_auto_increment

    (四)表结构相关操作

    ①添加字段

    ALTER TABLE tbl_name
    ADD 字段名称 字段属性 [完整性约束条件] [FIRST|AFTER 字段名称]

    如:

    -- 添加邮箱字段 email VARCHAR(50) NOT NULL UNIQUE ,并将email添加到username后面
    ALTER TABLE user1
    ADD email VARCHAR(50) NOT NULL UNIQUE AFTER username;

    ②删除字段

    -- 删除test字段
    ALTER TABLE user1
    DROP username;

    ③修改字段类型、字段属性

    ALTER TABLE tbl_name
    MODIFY 字段名称 字段类型 [字段属性] [FIRST | AFTER 字段名称]

    如:

    - 将email字段改为VARCHAR(50) NOT NULL FIRST

    ALTER TABLE user1
    MODIFY email VARCHAR(50) NOT NULL FIRST;

    ④修改字段名称、字段类型、字段属性

    ALTER TABLE tbl_name
    CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称]

    如:

    -- 将password 名称改为pwd
    ALTER TABLE user1
    CHANGE password pwd CHAR(40) NOT NULL;

    ⑤添加主键

    ALTER TABLE tbl_name
    ADD PRIMARY KEY(字段名称)

    ⑥添加唯一

    ALTER TABLE tbl_name
    ADD UNIQUE KEY(字段名称)

    ⑦删除唯一

    ALTER TABLE tbl_name
    DROP (字段名称)

    ⑧修改数据表名称

    ALTER TABLE tbl_name

    RENAME new_tbl_name

    或者直接 RENAME TABLE tbl_name TO new_tbl_name

  • 相关阅读:
    Go语言 go get 找不到 google.golang.org/protobuf/encoding/prototext 解决办法
    golang.org/x包无法下载
    mqtt服务压力测试
    go-test知识点
    多线程并发
    elasticsearch-基础查询语法整理
    go 代码依赖管理工具mod使用
    微服务软件架构设计
    docker搭建mysql
    服务docker化
  • 原文地址:https://www.cnblogs.com/80-blog/p/9059184.html
Copyright © 2011-2022 走看看