mysql基础学习
linux启动mysql service mysqld start
链接数据库 mysql -uroot -p xxxxxxx
navicat 操作写数据库 查询---新建查询
一:数据库操作
查看所有数据库 show databases;
新建数据库 create database syz charset utf8;(指定字符集,没有乱码)
删除数据库 drop database syz;
选择数据库 use syz;
二:操作表
约束 1 自增长 auto_increment 比如学号设置自增长就不用手动输入
2 非空 not null
3 唯一 unique 比如身份证号 学号等
4 主键 primary key 具有唯一性,不能为空
5 外键
增:
新建表: create table studens (id int auto_increment primary key, name varchar(10) not null,sex varchar(2) ,addr varchar(50),phone int not null unique);
create table scores(id int auto_increment primary key,s_id int not null,grade float not null);
增加字段:alter table syz add momey float not null; alter table syz add class varchar(10);
增加字段(指定位置):alter table syz add momey float not null after id;(first before)
删:
删除表: drop table students;
删除字段: alter table syz drop money;
清空表 truncate table syz;
改:
改表名 alter table students rename syz;
修改字段的数据类型 alter table syz modify name varchar(20); 查看表结构 desc syz;
修改字段名 alter table syz change name username int(20);
查:
查看所有表: show tablse;
查看建表语句 show create table syz;
查看表结构 desc syz;
三:数据操作
增:
插入数据 insert into students(name,sex,addr,phone)values('Tom','男','北京','119'); 指定字段
insert into students(name,sex,phone)values('Tom','男','119'); 指定字段的话,插入的值和字段对应
insert into students values('1','sam','男','','119'); 不指定字段,要把所有的字段值都写全
改:
修改数据 update students set addr='杭州' 如果不指定条件的话,修改整个表的数据
update students set addr='上海' where name='lily'; 指定条件修改单个数据
update students set addr='上海',phone=112 where name='lily'; 指定条件修改单个数据
删:
删除整个表的数据 delete from students; 删除的数据,自增长的id会继续正常
删除整个表的数据 truncate students; 清空整个表的数据,自增长id从1开始,删除数据比delete快,从磁盘上直接把数据删除,不能恢复数据
删除指定数据 delete from students where name='lily';
查:
查询所有的数据 select * from students;
指定查询的字段 select name,sex from students;
指定条件(单个) select * from students where sex='男';
指定条件(多个)同时满足 and select * from students where sex='男' and addr='杭州';
指定条件(多个)有一个满足or select * from students where sex='男' or addr='杭州';
用in查询多个值 select * from students where name in('lily','姚远','姚静') ;
查询什么到什么之间的between and (用于数值之间的) select * from students where phone between 100 and 120;
模糊查询 like %代表的是通配符 select * from students where name like '姚%';
- 通配符,表示任意一个单字符 select * from students where name like '姚_';
给表起别名 在表名后面加别名 select * from students a where a.add = '杭州'; a就是起的别名,如果字段比较长,就用a. 后面的字段就会自动出来
排序 order by +字段名 select * from students order by id;(升序)
select * from students order by id desc;(降序)
如果要单独查找一个的话,使用order by,只能放在最后 select * from students where id =3 order by phone;
查询数据为空的 select * from students where addr =''or addr is null ;
不为空 is not null 或者 !=''
去重复 distinct select distinct addr from students;
统计学生有多少条 count select count(*) 学生人数 from students;
按条件查询 select count(*) 学生人数 from students where addr='杭州';
查每个地区有多少人 ,分组 select addr, count(1) from students group by addr;
多个字段进行分组 select sex,class ,count(1)from students group by sex,class;
如果group by 后面有条件的话, 必须要用having子句, having子句里面用到的字段必须出现在select后面 ,如果group by和order by 一起用的话,order by 写在group by 后面 select sex , count(*),name from students where phone >20000 group by id having name like'姚%'
select * from students group by phone having name like'姚%'
查什么最大的用 max 比如查号码 select MAX(phone) 最大号码 from students;
查最小 min select min(phone) 最小号码 from students;
查平均 avg select avg(phone) 平均号码 from students;
查总和sum select sum(phone) 号码总和 from students;