mysql 设置字段自动增长值 您所在的位置:网站首页 mysql自动增长语句 mysql 设置字段自动增长值

mysql 设置字段自动增长值

2023-11-10 17:42| 来源: 网络整理| 查看: 265

a2a7d2837066135d103e41ed8bcf2d88.png

# 命令行客户端MySQL

MySQL是一个关系型数据库管理系统安装MySQL服务端软件使用: sudo apt-get install mysql-server安装MySQL客户端软件使用: sudo apt-get install mysql-client图形化MySQL客户端软件使用Navicat

- 查询MySQL服务端是否安装:服务端server ,客户端client

- 方法1.apt list | grep mysql-server

- 方法2.apt-cache show mysql-server

8eaffeca983f0c188aa6c91aaf7f514e.png

- 方法3.sudo service mysql status 用于查看服务状态

98a210bf2344491e1e2a1f8c74641b69.png

- sudo service mysql stop 关闭

- sudo service mysql start 开启,或者重启 sudo service mysql restart

- 如果对配置文件【/etc/mysql/mysql.config.d】进行修改,需要重新启动MySQL数据库服务sudo service mysql start

主要配置信息说明:vim /etc/mysql/mysql.config.d/mysqld.cnf 查看配置信息

port表示端口号,默认为3306bind-address表示服务器绑定的ip,默认为127.0.0.1datadir表示数据库保存路径,默认为/var/lib/mysqllog_error表示错误日志,默认为/var/log/mysql/error.log

- datadir = /var/lib/mysql 自己创建的数据库存放地址

- sudo pip3 install pymysql pip3为包管理工具,安装第三方的Python包

# SQL基本语法

登录数据库: mysql -uroot -p退出数据库: quit 或者 exit 或者 ctr + d创建数据库: create database 数据库名 charset=utf8;使用数据库: use 数据库名;删除数据库: drop database 数据库名;创建表: create table 表名(字段名 字段类型 约束, ...);修改表-添加字段: alter table 表名 add 字段名 字段类型 约束修改表-修改字段类型: alter table 表名 modify 字段名 字段类型 约束修改表-修改字段名和字段类型: alter table 表名 change 原字段名 新字段名 字段类型 约束修改表-删除字段: alter table 表名 drop 字段名;删除表: drop table 表名;查询数据: select * from 表名; 或者 select 列1,列2,... from 表名;插入数据: insert into 表名 values (...) 或者 insert into 表名 (列1,...) values(值1,...)修改数据: update 表名 set 列1=值1,列2=值2... where 条件删除数据: delete from 表名 where 条件 # MySQL笔记1--MySQL数据库的基本使用

--登录数据库

mysql -uroot -p

--显示当前时间

select now();

--登出(退出)数据库

exit/quit/ctr+d

--查看所有数据库

show databases;

--创建数据库

create database python41 charset=utf8;

--使用数据库

use python41;

--查看当前使用的数据库

select database();

--删除数据库-慎重

drop database python41;

--查看当前数据库中所有表

show tables;

--创建表

create table students(

id int unsigned primary key auto_increment not null,

name varchar(10) not null,

age tinyint default 0,

gender enum("男", "女") default "男"

);

--修改表-添加birthday字段

alter table students add birthday datetime not null;

--修改表-修改字段类型

alter table students modify birthday date;

--修改表-修改字段名和字段类型

alter table students change birthday birth datetime not null;

--修改表-删除birthday字段

alter table students drop birth;

--查看表结构

desc students;

--查看创表SQL语句

show create table students;

--查看创库SQL语句

show create database python41;

--删除表

drop table students;

--查询所有列数据

select * from students;

d628cf3f6aed6e3e8e48f64b12321ae1.png

--查询指定列数据

select name, age from students;

- 以上是单表查询,可以省略表名 若不是单表查询 select students.naem, students.age from students;

--添加数据--全列插入

insert into students values(0, '张三', 18, default);

- 主键列是自动增长,但是在全列插入时需要占位,通常使用空值(0或null或default)

主键列表插入数据的时候可以指定: 0、default、null

这里的default表示使用该字段默认值

--添加数据--部分列插入

insert into students(name, age) values('郭靖',30);

--添加数据--全列多行插入

insert into students values(0, '黄蓉', 28, '女'),(0,'黄老邪',50,default);

--添加数据--部分列多行插入

insert into students(name, age) values('杨过', 20),('周伯通',55);

--修改数据

update students set age=18, gender = '女' where id = 3;

--删除数据

delete from students where id = 8;

--删除数据可以使用逻辑删除,添加一个标识字段

alter table students add is_del tinyint default 0;

这里删除数据其实修改标识字段

update students set is_del = 1 where id = 7;

--as关键字,用户给表的字段和表设置别名

select name as n, age as a from students as s;

提示: as 关键字可以省略,也表示设置别名

--distinct关键字, 用于去除重复的数据行

select distinct age, gender from students;

- 根据最后面的一个字段进行去重操作

--查询编号大于3的学生

select * from students where id > 3;

--查询编号不大于4的学生

select * from students where id 3 and gender = '女';

--查询编号小于4或没被删除的学生

select * from students where id < 4 or is_del = 0;

--查询年龄不在10岁到15岁之间的学生

select * from students where not (age >= 10 and age =3 and id 小排序,当年龄相同时 按照身高从高-->矮排序

select * from students order by age desc, height desc;

默认是asc 不用指定。

--查询前3行男生信息

select * from students where gender='男' limit 0, 3;

简写方式,第一个参数是开始行索引,默认是0可以不指定, 第二个参数是查询条数

select * from students where gender='男' limit 3;

--查询学生表,获取第n页数据的SQL语句

select * from students limit (n-1) * m, m;

# MySQL笔记2--MySQL数据库的条件查询

-- 清屏

system clear

-- 查询学生的个数

select count(height) from students;

注意点: 聚合函数不会对空值进行统计

一般如果要是指定列名,那么就是主键字段

select count(id) from students;

通用的写法

select count(*) from students;

-- 查询女生的编号最大值

select max(id) from students where gender = '女';

-- 查询未删除的学生最小编号

select min(id) from students where is_del = 0;

-- 查询男生的总身高

select sum(height) from students where gender='男';

-- 求男生的平均身高

select sum(height) / count(*) from students where gender='男';

select avg(height) from students where gender = '男';

select avg(ifnull(height, 0)) from students where gender = '男';

6998c02de2a076d11a711681b55334b8.png

注意点: 聚合函数不会对空值进行统计

ifnull函数判断指定的字段是否是空值,如果是空值使用默认值0

-- 查询性别的种类

select distinct gender from students;

select gender from students group by gender;

-- 根据name和gender字段进行分组, 查看name和gender的分组信息

select gender,name from students group by gender,name;

-- 根据gender字段进行分组, 查询每个分组的姓名信息

select gender,group_concat(name) from students group by gender;

252e9d2c371d4a0cd3f54e514672d9c4.png

group_concat:统计每个分组指定字段的信息集合,信息之间使用逗号进行分割

-- 统计不同性别的平均年龄

select gender,avg(age) from students group by gender;

-- 统计不同性别的人的个数

select gender,count(*) from students group by gender;

-- 根据gender字段进行分组,统计分组条数大于2的

select gender,count(*) from students group by gender having count(*) > 2;

-- 对分组数据进行过滤使用having

-- 根据gender字段进行分组,汇总总人数

select gender,count(*) from students group by gender with rollup;

1f72e7951d54c0a4c48dcff710320b5b.png

-- 根据gender字段进行分组,汇总所有人的年龄

select gender,group_concat(age) from students group by gender with rollup;

-- 使用内连接查询学生表与班级表

select s.name, c.name from students s inner join classes c on s.c_id = c.id;

e918487ca72441252bdfef4d4a883267.png

-- 使用左连接查询学生表与班级表

select * from students s left join classes c on s.c_id = c.id;

左连接查询,根据左表查询右表,如果右表数据不存在使用null填充

left左边是左表,left右边是右表

-- 使用右连接查询学生表与班级表

select * from students s right join classes c on s.c_id = c.id;

右连接查询,根据右表查询左表,如果左表数据不存在使用null填充

right左边是左表,right右边是右表

cd86d6636b908465531b47abc4c6ec11.png

-- 使用自连接查询省份和城市信息

select c.id, c.title, c.pid, p.title from areas c inner join areas p on c.pid = p.id where p.title = '广东省';

b90e0bc7dc1dd85b5ce9c43a242d8e44.png

-- 查询大于平均年龄的学生

select * from students where age > (select avg(age) from students);

-- 查询学生在班的所有班级名字

select * from classes where id in (select c_id from students where c_id is not null);

6c6ce6b4a9a1da8b4a064677561f5305.png

-- 查找年龄最大,身高最高的学生

select * from students where age = (select max(age) from students) and height = (select max(height) from students);

简写:

select * from students where (age, height) = (select max(age), max(height) from students);

--子查询是一个完整的查询语句,子查询的执行顺序,先执行子查询然后主查询根据子查询的结果再执行

-- 为学生表的cls_id字段添加外键约束

alter table students add foreign key(c_id) references classes(id);

- 注意:对已有表格添加外键约束之前,要保证表格的数据符合约束条件

- 添加约束的字段,字段类型应该一致

-- 创建学校表

create table school(

id int unsigned not null primary key auto_increment,

name varchar(30) not null

);

-- 创建老师表添加学校外键

create table teacher(

id int unsigned not null primary key auto_increment,

name varchar(20) not null,

s_id int unsigned,

foreign key(s_id) references school(id)

);

06742d0bae830195de6b6e5a61319402.png

-- 删除外键

alter table teacher drop foreign key teacher_ibfk_1;

- 注意:要删除的外键名称是 CONSTRAINT后面的‘xxxxxxx’

# MySQL笔记3--MySQL数据库的高级使用

-- 创建 "京东" 数据库create database jing_dong charset=utf8;-- 使用 "京东" 数据库use jing_dong;-- 创建一个商品goods数据表create table goods( id int unsigned primary key auto_increment not null, name varchar(150) not null, cate_name varchar(40) not null, brand_name varchar(40) not null, price decimal(10,3) not null default 0, is_show bit not null default 1, is_saleoff bit not null default 0);-- 向goods表中插入数据(将数据保存xxx.sql,使用source ./xxx.sql 命令自动导入)insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default); insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default); insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default); insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default); insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default); insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default); insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default); insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default); insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default); insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default); insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default); insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default); insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default); insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default); insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default); insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default); insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default); insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default); insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

-- 查询类型cate_name为 '超级本' 的商品名称、价格

select name, price from goods where cate_name = '超级本';

-- 显示商品的分类

select distinct cate_name from goods;

select cate_name from goods group by cate_name;

-- 求所有电脑产品的平均价格,并且保留两位小数

select round(avg(price),2) from goods;

-- 显示每种商品的平均价格

select cate_name, avg(price) from goods group by cate_name;

select cate_name, round(avg(price),2) from goods group by cate_name;

-- 查询每种类型的商品中 最贵、最便宜、平均价、数量

select cate_name, max(price), min(price), avg(price), count(*) from goods group by cate_name

-- 查询所有价格大于平均价格的商品,并且按价格降序排序

select * from goods where price > (select avg(price) from goods) order by price desc;

-- 创建商品分类表

create table goods_cates(

-> id int unsigned not null primary key auto_increment,

-> name varchar(50) not null);

-- 查询goods表中商品的分类信息

select cate_name from goods group by cate_name;

-- 将查询结果插入到good_cates表中

insert into goods_cates(name) select cate_name from goods group by cate_name;

861168d1b26c2e09cd894c598c63b57d.png

-- 添加移动设备分类信息

insert into goods_cates(name) values('移动设备');

-- 查看goods表中的商品分类名称对应的商品分类id

select * from goods g inner join goods_cates gs on g.cate_name = gs.name;

-- 将goods表中的分类名称更改成商品分类表中对应的分类id,连接更新表中的某个字段

update goods g inner join goods_cates gs on g.cate_name = gs.name set g.cate_name = gs.id;

-- 查询品牌信息

select brand_name from goods group by brand_name;

-- 通过create table ...select来创建商品品牌表并且同时插入数据

create table goods_brands( id int unsigned not null primary key auto_increment, name varchar(50) not null) select brand_name as name from goods group by brand_name;

注意: 创建的表字段要和插入数据的字段保持一致如 brand_name as name

a6caccc54f29fb8d5eab106f6fc5c857.png

-- 插入双飞燕品牌

insert into goods_brands(name) values('双飞燕');

-- 查看goods表中的商品品牌对应的商品品牌id

select * from goods g inner join goods_brands gs on g.brand_name = gs.name;

-- 将goods表中的品牌更改成品牌表中对应的品牌id,连接更新表中的某个字段

update goods g inner join goods_brands gs on g.brand_name = gs.name set g.brand_name = gs.id;

-- 通过alter table语句修改表结构,把cate_name改成cate_id,把brand_name改成brand_id

alter table goods change cate_name cate_id int not null, change brand_name brand_id int not null;

fcf4a0c29a92f9e46ea670f3c27a3eb1.png

# 待更新



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有