2023-03-27 MySQL基本语句一

SQL语句-数据库

  • 登录: mysql -uroot -p

  • 查看当前所有的数据库: show databases;

  • 创建数据库:create database 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    create database day25db;
    
    create database day25db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
  • 删除数据库:drop database 数据库名;

  • 进入数据库:use 数据库名;

SQL语句-数据表

  • 进入数据库 use 数据库;,查看当前所有表:show tables;

  • 创建表结构

create table 表名(
    列名  类型,
    列名  类型,
    列名  类型
)default charset=utf8;

示例:(-- 是SQL语句的注释)

create table tb5(
    id int not null auto_increment primary key, -- 不允许为空 & 主键 & 自增
    name varchar(16) not null,          -- 不允许为空
    email varchar(32) null,             -- 允许为空(默认)
    age int default 3                   -- 插入数据时,如果不给age列设置值,默认值:3
)default charset=utf8;

注意:一个表中只能有一个自增列【自增列,一般都是主键】。

  • 删除表 drop table 表名;

  • 清空表 delete from 表名;truncate table 表名;(速度快、无法回滚撤销等)
    - 当您不再需要该表时,使用 DROP TABLE;
    - 当您仍要保留该表,只是想删除所有记录时,使用 TRUNCATE TABLE;
    - 当你要删除部分记录时,使用带有 WHERE 子句的 DELETE FROM。

  • 修改表

    • 添加列

      alter table 表名 add 列名 类型;
      alter table 表名 add 列名 类型 DEFAULT 默认值;
      alter table 表名 add 列名 类型 not null default 默认值;
      alter table 表名 add 列名 类型 not null primary key auto_increment;
      
    • 删除列

      alter table 表名 drop column 列名;
      
    • 修改列类型

      alter table 表名 modify column 列名 类型;
      
    • 修改列 类型 + 名称

      alter table 表名 change 原列名 新列名 新类型;
      
      alter table  tb change id nid int not null;
      alter table  tb change id id int not null default 5;
      alter table  tb change id id int not null primary key auto_increment;
      
      alter table  tb change id id int; -- 允许为空,删除默认值,删除自增。
      
    • 修改列 默认值

      ALTER TABLE 表名 ALTER 列名 SET DEFAULT 新默认值;
      
    • 删除列 默认值

      ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
      
    • 添加主键

      alter table 表名 add primary key(列名);
      
    • 删除主键

      alter table 表名 drop primary key;
      
  • 常见列类型

    create table 表(
      id int,
      name varchar(16)
    )default charset=utf8;
    
    • int[(m)][unsigned][zerofill]
int             表示有符号,取值范围:-2147483648 ~ 2147483647
int unsigned    表示无符号,取值范围:0 ~ 4294967295
int(5)zerofill  仅用于显示,当不满足5位时,按照左边补0,例如:00002;满足时,正常显示。
m               数值宽度
m为显示宽度,如类型为int(5)的字段,存入数据5, 则数据库中显示0005;若存入 在存储范围内且比显示宽度大的数,如123456,则按正常显示为123456
  • tinyint[(m)] [unsigned] [zerofill]

    有符号,取值范围:-128 ~ 127.
    无符号,取值范围:0 ~ 255
    
  • bigint[(m)][unsigned][zerofill]

    有符号,取值范围:-9223372036854775808 ~ 9223372036854775807
    无符号,取值范围:0  ~  18446744073709551615
    
  • decimal[(m[,d])] [unsigned] [zerofill]

准确的小数值,m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。

例如:
create table L2(
    id int not null primary key auto_increment,
    salary decimal(8,2)
)default charset=utf8;
  • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

    单精度浮点数,非准确小数值,m是数字总个数,d是小数点后个数。小数点后个数超过会自动四舍五入
    
  • DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

    双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
    
  • char(m)

  • 定长字符串,m代表字符串的长度,最多可容纳255个字符。
    
    定长的体现:即使内容长度小于m,也会占用m长度。例如:char(5),数据是:yes,底层也会占用5个字符;如果超出m长度限制(默认MySQL是严格模式,所以会报错)。
        如果在配置文件中加入如下配置,
            sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
        保存并重启,此时MySQL则是非严格模式,此时超过长度则自动截断(不报错)。。
    
    注意:默认底层存储是固定的长度(不够则用空格补齐),但是查询数据时,会自动将空白去除。 如果想要保留空白,在sql-mode中加入 PAD_CHAR_TO_FULL_LENGTH 即可。
    查看模式sql-mode,执行命令:show variables  like 'sql_mode';
    
    一般适用于:固定长度的内容。
    
    create table L3(
        id int not null primary key auto_increment,
        name varchar(5),
        depart char(3)
    )default charset=utf8;
    
    insert into L3(name,depart) values("alexsb","sbalex");
    
  • varchar(m)

变长字符串,m代表字符串的长度,最多可容纳65535个字节。

变长的体现:内容小于m时,会按照真实数据长度存储;如果超出m长度限制((默认MySQL是严格模式,所以会报错)。
    如果在配置文件中加入如下配置,
        sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    保存并重启,此时MySQL则是非严格模式,此时超过长度则自动截断(不报错)。

例如:
create table L3(
    id int not null primary key auto_increment,
    name varchar(5),
    depart char(3)
)default charset=utf8;
  • text

    text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。
    
    一般情况下,长文本会用text类型。例如:文章、新闻等。
    
    create table L4(
      id int not null primary key auto_increment,
        title varchar(128),
      content text
    )default charset=utf8;
    
  • mediumtext

    A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.
    
  • longtext

    A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1)
    
  • datetime

    YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)
    
  • timestamp

  YYYY-MM-DD HH:MM:SS(1970-01-01 00:00:00/2037年)
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储,查询时,将其又转化为客户端当前时区进行返回。

对于DATETIME,不做任何改变,原样输入和输出。
  • date
  YYYY-MM-DD(1000-01-01/9999-12-31)
  • time
HH:MM:SS('-838:59:59'/'838:59:59')

MySQL还有很多其他的数据类型,例如:set、enum、TinyBlob、Blob、MediumBlob、LongBlob 等,详细见官方文档:https://dev.mysql.com/doc/refman/5.7/en/data-types.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • /* Windows服务 */-- 启动MySQLnet start mysql-- 创建Windows服务sc ...
    阿登20阅读 239评论 0 0
  • [TOC] MySQL 学习笔记(一)[https://www.jianshu.com/p/dde13bbe0fd...
    Whyn阅读 547评论 0 0
  • --这后边就是注释/*这里是注释这里是第二行注释*/ --建议关键字大写 --当你决定不想执行某条命令时\c ...
    哇哈哈E阅读 542评论 0 0
  • mysql-基础篇 一、常见命令 1、sql常见命令 查看当前所有的数据库:show databases; 打开指...
    giraffecode9668阅读 212评论 0 0
  • 1、什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2、什么是 M...
    明_27bf阅读 791评论 0 0

友情链接更多精彩内容