MySql

安装mysql ------> 配置环境变量 -------->cmd操作

1. 数据库操作 & 数据表操作 & 数据类型

数据库操作

1.查看当前所有存在的数据库 show databases;


image.png

2.创建数据库 create database 数据库名 character set 字符集;
查看某个数据库的定义的信息 show create database 数据库名;
3.删除数据库 drop database 数据库名称;
4.切换数据库 use 数据库名;
5.查看当前使用的数据库名 select database();

数据表操作

MySql8.0的新特性------系统表全为InnoDB表(不包含任何MyISAM表,除非手动创建)
select distinct(engine) from information_schema.tables;
1.创建表(表名不区分大小写并且不可使用SQL语句中的关键字)
CREATE TABLE 表名 ( 字段名 类型(长度) 约束, 字段名 类型(长度) 约束 );
约束
主键约束:要求主键列的数据唯一,并且不允许为空。
a.添加主键约束, primary key
1. create table user( uid int primary key, uname varchar(20) );
2.create table user( uid int, uname varchar(20), primary key(id) );
3.create table tb_emp4( name varchar(20), deptId int(11), salary FLOAT, primary key(name,deptId) );
b.添加外键约束
1.create table tb_emp5( id int(11) primary key, name varchar(20), deptId int(11), salary float, constraint fk_emp_dept1 foreign key(deptId) references tb_emp1(id) );
c.非空约束 字段的值不能为空 not null
1. create table tb_emp6( id int(11) not null, name varchar(20), deptId int(11), salary float, );
d.唯一性约束 要求该列唯一,允许为空,但只能出现一个空值
可以确保一列或者几列不出现重复的值 unique
create table tb_emp7( id int(11) primary key, name varchar(20), location varchar(20), constraint sth unique(name) );
UNIQUE和PRIMARY KEY的区别:一个表中可以有多个字段声明为UNIQUE,但只能有一个PRIMARY KEY声明;声明为PRIMAY KEY的列不允许有空值,但是声明为UNIQUE的字段允许空值(NULL)的存在。
e.使用默认约束 default
create table tb_emp8( id int(11) primary key, name varchar(20) not null, deptid int(11) default 111, salary float );
f.设置表的属性自动增加 auto_increment
create table tb_emp8( id int(11) primary key auto_increment, name varchar(20) not null, deptid int(11) default 111, salary float );
b.删除主键
alter table sort drop primary key;
2.查看数据表结构 describe 表名 或者 desc 表名;

image.png

● NULL:表示该列是否可以存储NULL值。
● Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
● Default:表示该列是否有默认值,有的话指定值是多少。
● Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。
3.查看表结构详细语句 show create table <表名 \g> 加\g结果不混乱
4.修改数据表
4.1修改表名
alter table <旧表名> rename [to] <新表名>;
4.2修改字段的数据类型
alter table <表名> modify <字段名> <数据类型>;
4.3修改字段名
alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
4.4添加字段
alter table <表名> add <新的字段名> <数据类型> [约束条件] {first | after 已存在的字段名};
4.5删除字段
alter table <表名> drop <字段名>;
4.6修改字段的排列位置
alter table <表名> modify <字段1> <数据类型> first|after <字段2>;
4.7改变表的存储引擎(MyISAM、InnoDB、MEMORY)
alter table <表名> engine=Innodb;
4.7删除表的外键约束
alter table <表名> drop foreign key <外键名>
5.删除数据表 如果有关联 ,需要先删除外键约束,再删除表
drop table [IF EXISTS] 表1,表2,...表n;
6.查看当前数据库所有表
show tables;

数据类型

MySQL支持的数据类型主要有数值类型、日期类型和字符串类型
1.数值类型:包括整数类型TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 、浮点小数数据类型FLOAT和DOUBLE,定点小数类型DECIMAL。
2.日期/时间类型:包括YEAR、TIME、DATE、DATETIMME和TIMESTAMP.
3.字符串类型:包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET等。

整数型数据类型
image.png

创建表的的时候定义int(11) 是表示该数据类型制定的显示宽度,数据类型的取值范围是无关的。

浮点数类型和定点数据类型

image.png

浮点型数据类型和定点数据类型都可以用(M,N)来表示。M为精度,表示总位数;N为标度,表示小数的位数
DECIMAL类型不同于FLOAT和DOUBLE,DECIMAL实际是以串存放的,可能的最大取值范围与DOUBLE一样,但是其有效的取值范围由M和D的值决定。如果改变M而固定D,则其取值范围将随M的变大而变大。
FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定),DECIMAL若不指定精度则默认为(10,0)。浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;它的缺点是会引起精度问题。
在MySQL中,定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据等)使用DECIMAL的类型比较好,另外两个浮点数进行减法和比较运算时容易出问题,所以在使用浮点数时需要注意,并尽量避免做浮点数比较。
######时间与日期类型
image.png

1.YEAR类型是一个单字节类型,用于表示年,在存储时只需要1字节。
(1)以4位字符串或者4位数字格式表示的YEAR,范围为‘1901’~‘2155’。
insert into temps values(2166); //会范围报2166超过了year的取值
insert into temps values(2010),('2010'); // 正常存储
(2)以2位字符串格式表示的YEAR,范围为‘00’到‘99’。‘00’~‘69’和‘70’~‘99’范围的值分别被转换为2000~2069和1970~1999范围的YEAR值。‘0’与‘00’的作用相同。插入超过取值范围的值将被转换为2000。
insert into temps values('0'),('00'),('77'),('10'); // 正常存储
(3)以2位数字表示的YEAR,范围为1~99。1~69和70~99范围的值分别被转换为2001~2069和1970~1999范围的YEAR值。注意:在这里0值将被转换为0000,而不是2000。
insert into temps values(0),(78),(11); // 正常存储

文本字符串类型

字符串类型用来存储字符串数据,除了可以存储字符串数据之外,还可以存储其他数据,比如图片和声音的二进制数据。MySQL支持两类字符型数据:文本字符串和二进制字符串。文本字符串类型是指CHAR、VARCHAR、TEXT、ENUM和SET。


image.png

CHAR(M)为固定长度字符串,在定义时指定字符串列长。当保存时在右侧填充空格,以达到指定的长度。M表示列长度,M的范围是0~255个字符。例如,CHAR(4)定义了一个固定长度的字符串列,其包含的字符个数最大为4。当检索到CHAR值时,尾部的空格将被删除。
VARCHAR(M)是长度可变的字符串,M表示最大列长度。M的范围是0~65535。VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,而其实际占用的空间为字符串的实际长度加1。例如,VARCHAR(M)定义了一个最大长度为50的字符串,如果插入的字符串只有10个字符,则实际存储的字符串为10个字符和一个字符串结束字符。VARCHAR在值保存和检索时尾部的空格仍保留。


image.png

2. 查询数据 & 插入、更新与删除数据

2.1基本查询语句

image.png

2.2单表查询
1.查询所有字段
select * from 表名
2.查找指定字段
select 字段名1,字段名2,···,字段名n from 表名;
3.查找指定记录
select 字段名1,字段名2,···,字段名n from 表名 where 查询条件;
image.png

4.带IN关键字查询
select 字段名1,字段名2,···,字段名n from 表名 where s_id IN (101,102) order by f_name;
5.带BETWEEN AND的范围查询
select 字段名1,字段名2,···,字段名n from 表名 where f_price BETWEEN 2.00 AND 10.2;
select 字段名1,字段名2,···,字段名n from 表名 where f_price NOT BETWEEN 2.00 AND 10.2;
6.带LIKE的字符匹配查询 (通配符有'%' 与 '')
1.百分号通配符‘%’,匹配任意长度的字符,甚至包括零字符
select 字段名1,字段名2,···,字段名n from 表名 where f_NAME like 'b%'; //以b开头
2.下划线通配符‘
’,一次只能匹配任意一个字符
select 字段名1,字段名2,···,字段名n from 表名 where f_NAME like 'b_ _';
7.查询空值
select 字段名1,字段名2,···,字段名n from 表名 where f_NAME IS NULL;
select 字段名1,字段名2,···,字段名n from 表名 where f_NAME IS NOT NULL;
8.带AND的多条件查询
select 字段名1,字段名2,···,字段名n from 表名 where s_id ='101' AND F_PRICE >=5;
9.带OR的多条件查询
select 字段名1,字段名2,···,字段名n from 表名 where s_id ='101' OR s_id ='103' ; // IN (101,103);
OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。
10.查询结果不重复
select distinct 字段名 from 表名
11.对查询结果排序
1.单列排序
select f_name from 表名 order by f_name;
2.多列排序
在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。
select f_name from 表名 order by f_name,f_price;
3.排序方向
与DESC相反的是ASC(升序),将字段列中的数据按字母表顺序升序排列。实际上,在排序的时候ASC是默认的排序方式,所以加不加都可以。
select f_name from 表名 order by f_name DESC,f_price;
12.分组查询
1.GROUP BY关键字通常和集合函数一起使用,比如MAX()、MIN()、COUNT()、SUM()、AVG()。
select s_id,count(*) as Total from fruits GROUP BY s_id;
select s_id,GROUP_CONCAT(f_name) as Name from fruits GROUP BY s_id; //会将每个id所对应的供应商查询出来
2.使用HAVING过滤分组
select s_id,GROUP_CONCAT(f_name) as Name from fruits GROUP BY s_id HAVING count(f_name)>1;
HAVING关键字与WHERE关键字都是用来过滤数据的,两者有什么区别呢?其中重要的一点是,HAVING在数据分组之后进行过滤来选择分组,而WHERE在分组之前来选择记录。另外,WHERE排除的记录不再包括在分组中。
3.在GROUP BY子句中使用WITH ROLLUP(在所有查询出的分组记录之后增加一条记录,该记录计算查询出所有记录的总和,即统计记录数量)
select s_id,count(*) as Total from fruits GROUP BY s_id eith pollup;
13.使用LIMIT限制查询结果的数量
SELECT * From fruits LIMIT 4;
从第五个记录开始的行数长度为3的记录
SELECT * From fruits LIMIT 4,3;
2.2插入
1.为所有表的字段插入数据
INSERT INTO 表名 (列名) values (对应列的值);
2.同时插入多条记录
INSERT INTO 表名 (列名) values (对应列的值),(对应列的值),(对应列的值),...,(对应列的值);
3.将查询结果插入到表中
INSERT INTO 表名 (列名)select (列对应的值) from tables_name2 where (condition);
2.3更新数据
update table_name set column_name1 = value1,column_name2 = value2,column_name3 = value3 where(condition);
2.4删除数据
delete from table_name [where <condition>];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355