首页 > 学院 > 开发设计 > 正文

MySQL入门复习

2019-11-08 20:42:05
字体:
来源:转载
供稿:网友

SQL语句分类

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

启动MySQL:

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

mysql -uroot -p

MySQL数据库启动

查看数据库已存有的码表

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类型时,没有 传值,那么该类型默认值就是当前时间;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表