mysql基础随笔

1.基础知识
1.1. 简介
数据库是存放数组的仓库,数据不是直接放在数据库中的,数据库中放的是表,表中存放的是数据。
层次模型:一级一级往下找。(树状图,分类方便,慢,*存在数据无效)
网状模型:解决类层次模型数据无效问题,但是没解决慢。
关系模型:每个表都是独立的,通过公共字段建立关系。(多表查询效率底下)
1.2.sql语言
结构化查询语言,用来操作关系数据库的。
常用的关系型数据库:Acess,Mysql,sql server,Oracle
标准sql是所有关系型数据库都支持的操作语句,也叫sql-92,但是每个数据库在sql标准上都扩展了自己的特点。
sql server:T-sql
Oracle : pl/sql
mysql : mysql
1.3.连接和退出数据库
安装好数据库以后,MySQL自带一个命令行客户端,只能连接本地Mysql
常用命令:
进入盘符: c:
进入盘符文件夹: 进入盘符后,cd:文件夹路径
上一级目录: cd …/
进入主目录: cd /
连接mysql服务器的参数:
host(-h)、username(-u)、password(-p)、port(-P)
进入数据库:(端口号若是3306,-P可省略) (若是主机-h可省略)
mysql -uroot -p 在这里插入图片描述
3种退出:exit; quit \q
在这里插入图片描述
1.4.数据库操作
数据库本质就是一个文件,操作数据库的软件叫数据库管理系统
1.4.1.创建数据库
create database 数据名
在这里插入图片描述
1.4.2.查询数据库
show databases;
创建的时候可以判断一下:
create database if not exists aa;
(想要创建和关键字相同名字的数据库加上反引号)
在这里插入图片描述
查询数据库的创建语句
show create database aa;
创建数据库时指定字符编码
create database bb charset-utf8
1.4.3.更改数据库
更改数据库的字符编码
alter database 数据库名 charset=
在这里插入图片描述
1.4.4.删除数据库
drop database bb;
删除的时候可以判断一下:
drop database if exists bb;
1.4.5.选择数据库
use aa;
1.5.数据表的操作
几个概念:
行也叫记录,一行就是一条记录。
列也叫字段,一列就是一个字段,字段也叫属性。
一个表包括多个字段
1.5.1.创建表
create table 表名(
字段1 数据类型 [null|not null] default[auto increment][primary key],
字段2 数据类型


not null:不为空
default:默认值
auto increment:自动增长
primary key:主键
主键的特点:不能重复,不能为空
一个表只能有一个主键,主键可以由多个字段组成,是一个约束看数据是否有效,所以主键不能重复
数据类型的种类:
int tinyint :小范围整型 char(10):定长 varchar(10):可变长度
test:大段文本 decimal(3,1):总位数3小数1
电话号码:varchar 照片:binary 薪水:decimal QQ:varchar
创建:
表名:stu 字段名:stuid int stuname varchar(10)
create table stu(
stuid int
stuname varchar(10)
);
在这里插入图片描述
查看表:
show tables;
show create table stu \G;
在这里插入图片描述
\G表示横着排展示
显示表结构:
describe stu;
desc stu;
在这里插入图片描述
删除表:
drop table stu;
drop table stu1,stu2;
创建复杂的表:
create table stu(
id int auto_increment primary key,
name varchar(10) not null,
sex char(1) not null,
add varchar(50) default ‘地址不详’,
score decimal(3,1)
);
在这里插入图片描述
*latin编码不能是中文

1.5.数据操作
增删改查
1.5.1.插入数据
(字段可以和数据库字段不一致,但是值需要一致)
(插入字段是可以省略的,但是值得顺序个数和数据表一致)
语法:insert into 表名 (字段名1,字段2)values (值1,值2)
insert into stu (id,name,sex,add)values(1,‘杨洋’,‘男’,‘北京’);
insert into stu (id,name,sex,add)values(2,‘李儒’,‘女’,‘上海’);
insert into stu values(3,‘张宝2’,‘男’,‘北京’,55);
insert into stu values(null,‘吴丽达’,‘男’,‘北京’,55);
insert into stu values(null,‘康有为’,‘男’,default,55);
1.5.2.删除数据(再次插入时id向后延伸)(可以通过记录log恢复)
delete from 表名[where 条件]
删除康有为
delete from stu where name=‘康有为’;
删除所有数据
delete from stu;
1.5.3.修改数据
update 表名 字段 条件
将吴丽达的性别改成女
update stu set sex=‘女’ where name=‘吴丽达’;
将吴丽达的性别改成男且add=‘天津’
update stu set sex=‘男’,add=‘天津’ where name=‘吴丽达’;
全变成女
update stu set sex=‘女’;
1.5.4.查询数据
select 列名 from 表 [where 条件][order by 排序] [limit 限制]
查询所有学生姓名和性别
select name,sex from stu;
查询所有学生所有信息
select * from stu;
查询所有男生所有信息
select * from stu where sex=‘男’;
select * from stu where sex='男’and add=‘天津’;
select * from stu where sex='女’or(sex='男’and add=‘天津’);
由低到高升序 asc(默认)
由高到低降序desc
按成绩由高到低
select * from stu order by score desc;
女生按成绩由高到低
select * from stu where sex=‘女’ order by score desc;
取前三条从第二条开始
select *from stu limit 3;
从第二条开始取前三条
select *from stu limit 1,3;
取分数前三名
select *from stu order by score desc limit 3;

1.6.运算符
1.6.1.比较运算符(没有==)
>= <= < = <> >
1.6.2.逻辑运算符
and or not

1.7.聚合函数
sum():求和
max():最大值
min():最小值
avg():求平均
count():数数
求最高分
select max(score) from stu;
求最低分(不包括null)
select min(score) from stu;
男生人数
select count() from stu where sex=‘男’;
总人数
select count(
) from stu;

发布了11 篇原创文章 · 获赞 1 · 访问量 200

猜你喜欢

转载自blog.csdn.net/weixin_43919927/article/details/105392777