注意:要在管理员的身份才能进行启动
net start mysql
net stop mysql
mysql -u root -p
当没有打逗号时,按Ctrl+c退出
mysql> show databases
-> ^C
show databases
create database test;
[test是数据库名字]
drop database test;
在使用数据库创表的时候一定要使用以下的句子
use 库名
[primary key]是表示主键
[auto_increment]是表示自动增长 但是字段类型是int才行。其他都不行。
create table test_demo(//创建一个text_demo的表
id int primary key auto_increment,
username varchar(50),
password varchar(50)
);
常见的类型是 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个字节的定长字节符串
show tables;
desc table test_demo; [desc table 表名]
drop table test_demo; [drop table 表名]
rename table 旧表明 to 新表名;
delete 和 truncate 两种
但是delete是从表中删除单个,多个或所有的记录,不删除表结构;
truncate是删除所有的记录和表结构。
删除表中的所有记录:
delete from 表名;
删除表中的某一元组:
delete from 表名 where 元组;
【 delete from text where id=2;】
truncate 表名;
insert into 表名 values(1,"张三","123456" );
select * from 表名;
alter table 表名 add A D; //A是属性名 D是字段名
未增加前
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsyecqdC-1589119385292)(mysql.assets/image-20200419150333311.png)]
增加后
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5D3vs9X-1589119385295)(mysql.assets/image-20200419150405271.png)]
alter table 表名 drop A; //A是属性名 [alter table text drop age;]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFJ37awA-1589119385297)(mysql.assets/image-20200419150846198.png)]
update 表名 set p; //p是属性值 修改表中的某个属性名的属性值都为p
修改前
update text set password=“1234”;
修改后
修个单一属性值
update 表名 set p where D; //P是属性值 D某一属性
update 表名 set username="田七" where id=3;
distinct:去重,当出现大量重复的数据时,可以采用去重。
select distinct 需要去重的属性名 from 表名
SELECT DISTINCT username FROM student;
作用:用于检索一些符合条件的值。
逻辑运算符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]
SELECT username, chengji FROM student WHERE chengji BETWEEN 120 AND 130;
查找姓张的 其中%表示多个字符 _表示单个字符.
SELECT `username`,`chengji` FROM student WHERE `username` LIKE '张%';
SELECT `username`,`chengji` FROM student WHERE `username` LIKE '张_';
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLUwP8nY-1589119385301)(mysql.assets/image-20200420105530831.png)]
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 '%河源';
判断数据库中是否有空字符串
SELECT `username`,`address` FROM student WHERE `address` IS NULL;
判断数据库中是否 没 有空字符串
SELECT `username`,`address` FROM student WHERE `address` IS NOT NULL;
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` ='合格';
order by 需要排序的属性名 升序 ASC | 降序 DESC
SELECT `username`,`chengji`, `address` FROM student ORDER BY `chengji` DESC
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
select是数据库中使用频率最多的语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xQpsN9gg-1589119385304)(mysql.assets/image-20200421085133832.png)]
SELECT ABS(-10); //绝对值
SELECT CEILING (2.3); //向上取整
SELECT FLOOR (2.3) // 向下取整
SELECT RAND (); //获取一个随机数
SELECT CHAR_LENGTH('学以致用') -- 返回字符串的长度 --
SELECT CONCAT('实践','是','最好的老师') -- 字符串拼接 --
SELECT INSERT ('打游戏使我快乐',1,3,'学习') -- 从某个位置开始替换字符串
SELECT LOWER ('ABCXMFD'); -- 转换为小写字母
SELECT UPPER('xiaoxinyiyi') -- 转换为大写字母
SELECT REPLACE('逼王 王小明','逼王','帝骑哥') -- 替换指定字符串
SELECT INSTR('xiaoxinyiyi','x') -- 返回第一次出现字符串的索引
SELECT NOW(); -- 获取当前时间
SELECT LOCALTIME(); -- 获取当地时间
统计表中的记录
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 -- 平均值
第一范式 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 -- 平均值
第一范式 1NF
保证每一个表中的每一列都是不可再分。
第二范式 2NF
在第一范式的前提下。每一个内容独立一张表 ,只要 确保表中的每一列都与主键有关,
第三范式 3NF
在第一范式,第二范式的前提下,第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。