mysql

mysql

1.1 基本的命令操作

1.1.1 数据库开启

注意:要在管理员的身份才能进行启动

net start mysql
1.1.2 数据库关闭
net stop mysql
1.1.3 数据库连接
mysql -u root -p
1.1.4 强制退出

当没有打逗号时,按Ctrl+c退出

mysql> show databases
    -> ^C
1.1.5 查看数据库
show databases

image-20200419115908809

1.1.6 创建数据库
create database test; 
[test是数据库名字]
1.1.7 删除数据库
drop database test;

在使用数据库创表的时候一定要使用以下的句子

1.1.8 选库创表
use 库名
1.1.9 创建表

[primary key]是表示主键

[auto_increment]是表示自动增长 但是字段类型是int才行。其他都不行。

create table test_demo(//创建一个text_demo的表
id int primary key auto_increment,	
username varchar(50),
password varchar(50)
);
1.1.10 常见的字段类型

常见的类型是 int varchar char这三个类型

int          0-255字节          整型

char         0-255字节          定长字符串

varchar      0-255字节          变长字符串

tinyblob     0-255字节        不超过 255 个字符的二进制字符串

tinytext     0-255字节        短文本字符串

blob         0-65535字节      二进制形式的长文本数据

text         0-65535字节      长文本数据

MEDIUMBLOB   0-16 777 215字节 二进制形式的中等长度文本数据

MEDIUMTEXT   0-16 777 215字节 中等长度文本数据

LOGNGBLOB    0-4 294 967 295字节 二进制形式的极大文本数据

LONGTEXT     0-4 294 967 295字节 极大文本数据

VARBINARY(M)                   允许长度0-M个字节的定长字节符串,值的长度+1个字节

BINARY(M)    M                 允许长度0-M个字节的定长字节符串
1.1.11 查看数据库下的所有表
 show tables;
1.1.12 查看某个表下的字段类型和主键约束
desc table test_demo;      [desc table 表名]
1.1.13 删除表
drop table test_demo;         [drop table 表名]
1.1.14 修改表名
rename table 旧表明 to 新表名;
	
1.1.15 删除表记录
delete 和 truncate 两种
	但是delete是从表中删除单个,多个或所有的记录,不删除表结构;
	truncate是删除所有的记录和表结构。
删除表中的所有记录:
	delete from 表名;
删除表中的某一元组:
	delete from 表名 where 元组;
	  【 delete from text where id=2;】
	
truncate 表名;
1.1.16 向表中插入数据
insert into 表名 values(1,"张三","123456" );
1.1.17 查看表中数据
select * from 表名;
1.1.18 增加表结构
alter table 表名 add A D;  //A是属性名 D是字段名

未增加前

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsyecqdC-1589119385292)(mysql.assets/image-20200419150333311.png)]

增加后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5D3vs9X-1589119385295)(mysql.assets/image-20200419150405271.png)]

1.1.19 删除单一的表结构(去掉属性)
alter table 表名 drop A;  //A是属性名   [alter table text drop age;]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFJ37awA-1589119385297)(mysql.assets/image-20200419150846198.png)]

1.1.20 改变部分属性值。
update 表名  set p;  //p是属性值 修改表中的某个属性名的属性值都为p

修改前

update text set password=“1234”;

修改后

修个单一属性值

update 表名 set p where D; //P是属性值  D某一属性
	update 表名 set username="田七" where id=3;

1.1.21 去重

distinct:去重,当出现大量重复的数据时,可以采用去重。

select distinct 需要去重的属性名 from 表名

	SELECT DISTINCT username FROM student;

1.2 where条件语句

作用:用于检索一些符合条件的值。

逻辑运算符

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LcF3E4is-1589119385298)(mysql.assets/image-20200420101353706.png)]

SELECT username,chengji FROM student;
SELECT username,chengji FROM student WHERE chengji>120 AND chengji<130;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VQOBIwUT-1589119385300)(mysql.assets/image-20200420101947128.png)]

1.3 模糊查询

SELECT username, chengji FROM student WHERE chengji BETWEEN 120 AND 130;
1.3.1 like的作用

查找姓张的 其中%表示多个字符 _表示单个字符.

SELECT `username`,`chengji` FROM student WHERE `username` LIKE '张%';
SELECT `username`,`chengji` FROM student WHERE `username` LIKE '张_';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLUwP8nY-1589119385301)(mysql.assets/image-20200420105530831.png)]

1.3.2 int类型

in 类型 : 只能加具体值.

SELECT `username`,`address` FROM student WHERE `address` IN('广东河源');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IknjcJVJ-1589119385302)(mysql.assets/image-20200420111517045.png)]

like 和 in的比较

SELECT `username`,`address` FROM student WHERE `address` IN('广东河源');
SELECT `username`,`address` FROM student WHERE `address` LIKE '%河源';
1.3.3 判断属性值是否为空

判断数据库中是否有空字符串

SELECT `username`,`address` FROM student WHERE `address`  IS NULL;
判断数据库中是否 没 有空字符串
SELECT `username`,`address` FROM student WHERE `address`  IS NOT NULL;
1.3.4 联表查询
join (要连接的表) on (连接条件)   起别名是为了更好地辨识。

分三种:

  • inner join 内连接

  • right join 外连接(右连接)

  • left join 外连接(左连接)

    总结:当且仅当两个表中的数据都符合on后面的条件的时候,才会被select出来.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1UBTKMeG-1589119385303)(mysql.assets/image-20200420125224989.png)]

左表;

右表:

SELECT s.`id`,s.`username`,`class`,`level` FROM student AS s left JOIN result AS b ON  s.`id`= b.`id` WHERE `level` ='合格';


SELECT s.`id`,s.`username`,`class`,`level` FROM student AS s RIGHT JOIN result AS b ON  s.`id`= b.`id` WHERE `level` ='合格';
SELECT s.`id`,s.`username`,`class`,`level` FROM student AS s inner JOIN result AS b ON  s.`id`= b.`id` WHERE `level` ='合格';
1.3.5 排序

order by 需要排序的属性名 升序 ASC | 降序 DESC

SELECT  `username`,`chengji`, `address` FROM student ORDER BY `chengji` DESC
1.3.6 分页

LIMIT 起始页,页面的大小 第N页 (n-1)*pageSize,pagSize

总页数 = (总的记录数+每页最大记录数-1)/每页最大记录数(包含余数的话是向上取整)

SELECT  `username`,`chengji`, `address` FROM student ORDER BY `chengji` DESC LIMIT 0,5

select 的查询层次(顺序一定不能错)

  • join on

  • where

  • ORDER BY

  • LIMIT

1.3.7 select小结

select是数据库中使用频率最多的语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xQpsN9gg-1589119385304)(mysql.assets/image-20200421085133832.png)]

1.4 常用函数

1.4.1 数学运算
SELECT ABS(-10);  //绝对值
SELECT CEILING (2.3); //向上取整
SELECT FLOOR (2.3)  // 向下取整
SELECT RAND (); //获取一个随机数
1.4.2 字符串函数
SELECT CHAR_LENGTH('学以致用') -- 返回字符串的长度 --

SELECT CONCAT('实践','是','最好的老师') -- 字符串拼接 --

SELECT INSERT ('打游戏使我快乐',1,3,'学习') -- 从某个位置开始替换字符串

SELECT LOWER ('ABCXMFD'); -- 转换为小写字母

SELECT UPPER('xiaoxinyiyi') -- 转换为大写字母

SELECT REPLACE('逼王 王小明','逼王','帝骑哥') -- 替换指定字符串

SELECT INSTR('xiaoxinyiyi','x') -- 返回第一次出现字符串的索引
1.4.3 时间与日期函数

SELECT NOW(); -- 获取当前时间

SELECT LOCALTIME(); -- 获取当地时间

1.5 聚合函数

统计表中的记录

SELECT COUNT(`address`) FROM student;   -- 会忽略null值
SELECT COUNT(1) FROM student; -- 不会忽略null值
SELECT SUM(`chengji`) AS '总分' FROM student  -- 总值

SELECT MAX(`chengji`) AS '总分' FROM student -- 最大值

SELECT MIN(`chengji`) AS '总分' FROM student  -- 最小值

SELECT AVG(`chengji`) AS '总分' FROM student  -- 平均值

1.6 三大范式

  • 第一范式 1NF

    ​ 保证每一个表中的每一列都是不可再分。

  • 第二范式 2NF

    ​ 在第一范式的前提下。每一个内容独立一张表 ,只要 确保表中的每一列都与主键有关,

  • 第三范式 3NF

      在第一范式,第二范式的前提下,第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
    

sql

SELECT COUNT(1) FROM student; – 不会忽略null值



SELECT SUM(`chengji`) AS '总分' FROM student  -- 总值

SELECT MAX(`chengji`) AS '总分' FROM student -- 最大值

SELECT MIN(`chengji`) AS '总分' FROM student  -- 最小值

SELECT AVG(`chengji`) AS '总分' FROM student  -- 平均值

1.6 三大范式

  • 第一范式 1NF

    ​ 保证每一个表中的每一列都是不可再分。

  • 第二范式 2NF

    ​ 在第一范式的前提下。每一个内容独立一张表 ,只要 确保表中的每一列都与主键有关,

  • 第三范式 3NF

      在第一范式,第二范式的前提下,第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
    

你可能感兴趣的:(mysql)