MySQL入门复习

    xiaoxiao2021-03-25  8

    SQL语句分类

    一般,DQL(数据库查询语言)非标准的,因为数据库主要用来查询数据,所以把它单独看做一个分类

    启动MySQL:

    这里建议将路径配到环境变量path那里去

    mysql -uroot -p

    查看数据库已存有的码表

    show charset;--查看数据库存有的码表

    库操作

    增:

    create database 库名称 [character set 码表名称 collate 字符校对集名称]

    create database student;-- 创建数据库 create database student character set utf8;-- 创建数据库student,制定码表为utf8(旧版写为utf-8,新版为utf8)

    删:

    drop database student;-- 删除数据库student

    改:

    PS:只可以修改数据库的码表,不可以修改数据库的名称

    alter database 数据库名称 character set 数据库码表 [collate 校对集名称];

    alter database student charset utf8 collate utf8_bin;-- 修改数据库的码表以及校对集

    查:

    查看数据库创建语句:

    show create database student; -- 查看数据库student创建语句

    查看创建的数据库:

    show databases;--查看已经创建的数据库

    可以看到除了自己创建的库之外,还有一些其他库。其他库(除了test)不要乱动。因为是保存mysql的配置信息,账户信息等等。 test库 : 自动创建用于测试的。

    当前要使用的库(重要)

    use 库名

    use student;– 制定使用数据库student

    查看当前选择的数据库

    select database();-- 查看当前操作的数据库名称

    小总结:

    创建库 create database 库名 [character set 码表 collate 字符校对集] 显示所有库 show databases; 删除库 drop database 库名; 修改数据库码表 alter database 库名 character set 码表 collate 字符校对集 使用数据库 use 库名 查看当前使用的库 select database(); 显示创建库语句 show create database 库名;

    表操作

    增:

    CREATE TABLE table_name ( field1 datatype 约束/主键约束 auto_increment, field2 datatype 约束, field3 datatype 约束 )[character set 字符集 collate 校对规则]

    create table student (name varchar(10),sex enum('男','女'),money int) charset utf8;-- 创建表student

    添加一列

    alter table 表名 add 列名 类型;

    alter table student add phone varchar(10);-- 表新增一列

    删:

    删除数据表

    drop table 表名;

    drop table student;-- 删除数据库

    删除表中某列

    alter table 表名 drop 列名;

    alter table student drop money;--删除列

    改:

    修改列的类型

    alter table 表名 modify 列名 类型;

    alter table student modify phone varchar(11);-- 修改列属性

    修改列的名称

    alter table 表名 change 旧列名 新列名 数据类型;

    alter table student change sex gender enum('男','女');-- 修改列的名称,类型一定需要写出来

    修改表的名称

    rename table 旧表名 to 新名;

    rename table student to teacher;--修改表名为teacher

    修改表的字符集.

    (如果创建表时不指定,默认使用数据库的字符集)

    alter table 表名 character set 字符集 collate 校对集;

    alter table student charset utf8 collate utf8_bin;--极少使用,创表时候一般会制定,制定后极少修改

    查:

    查看表创建的语句:

    show create table student;--查看表创建的语句

    查看当前库中有哪些表

    show tables;

    查看表的结构

    desc student;

    数据操作

    insert into 表名[(列名1,列名2…)] values (值1,值2…);

    不指定插入哪些列, 需要指定每一列的值

    insert into student values ('xixi','男',1000000000,3.123);-- 新增一条数据

    指定要插入那些列

    insert into student(name,gender) values ('孙悦','女');-- 制定某列来插入数据

    delete from student where name='孙悦';--删除表中的一条数据

    update student set phone='13612345678' where name='xixi';-- 修改表中的数据

    模糊查询

    _匹配一个字符, %匹配0~n个字符

    select * from student where name like '%a%';--查询名字有a的同学信息

    去除重复记录

    select distinct gender from student; --去除重复的记录

    null设置为0

    null与任何数字计算结果都是null.上面的写法是错误的. 使用IFNULL(参数1,参数2) 函数解决. 判断参数1的值是否为null,如果为null返回参数2的值.

    select sal*12 + IFNULL(comm,0) from emp;--如果comm为null,那么就将值设置为0

    给列起别名

    select sal*12 + IFNULL(comm,0) as '年收入' from emp;--给查询的第二列起别名,as可以省略

    排序

    asc: 升序(默认) desc:降序

    select * from stu order by age asc;--升序排序查询

    列的约束

    1.非空约束(not null) 指定非空约束的列, 在插入记录时 必须包含值. 2.唯一约束(unique) 该列的内容在表中. 值是唯一的. 3.主键约束(primary key) 当想要把某一列的值,作为该列的唯一标示符时,可以指定主键约束(包含 非空约束和唯一约束). 一个表中只能指定一个主键约束列.主键约 束 , 可以理解为 非空+唯一. 注意: 并且一张表中只能有一个主键约束.

    MySQL数据类型

    数字型

    整型

    TINYINT 1字节 byte SMALLINT 2字节 short MEDIUMINT 3字节 (常用)INT 4字节 int BIGINT 8字节 long

    浮点型

    FLOAT 单精度4字节 float **DOUBLE 8字节 double *DECIMAL 没有精度损失 ============================================

    DOUBLE 和 DECIMAL 区别? DOUBLE类型在运算时会有精度的缺失。 DECIMAL 就是解决精度缺失问题的。(底层使用字符串来保存数字)

    单纯想表示小数属性时,使用double。 需要频繁参与运算的小数,使用decimal。

    字符串类型

    注意: 字符串类型要使用单引号包裹.

    短字符串类型

    CHAR/VARCHAR (最大长度255字节) ====================================================

    问题:char和varchar有什么区别? char定长字符串.varchar表示变长字符串. 同时指定长度为10。当存储 abc char =》 ‘abc ’ varchar => ‘abc’ 结论: 开发中varchar用的最多。 char只在表示固定长度的枚举中使用。例如 :性别(用01,02表示) ====================================================

    长字符串类型(流类型)

    *TEXT/CLOB 保存文本(字符流) –> 当要保存的内容超过255字节时使用. java中的writer 字符 BLOB 保存字节(字节流) –> 开发中用不到 java中的stream 字节 Character Large Object binary Large Object

    区别: text:只能存储字符数据. BLOB:可以存储字符和多媒体信息(图片 声音 图像)


    日期和时间类型

    date 只记录日期 2015-01-14 time 只记录时间 11:36:25 year 只记录年 2015 datatime 记录日期时间 2015-01-14 11:36:25 **timestamp 同上 2015-01-14 11:36:25

    问题: datatime 和 timestamp 区别? 这两种类型记录的数据是一模一样. 区别在于插入的时候,如果插入datatime类型时,没有 传值,那么该类型默认值就是null; 如果插入timestamp类型时,没有 传值,那么该类型默认值就是当前时间;

    转载请注明原文地址: https://ju.6miu.com/read-200309.html

    最新回复(0)