mysql学习笔记

2019-09-26  本文已影响0人  eliteTyc
#创建数据库
create database mydb1 character set 'utf8' collate 'utf8_bin';

#展示所有的数据库
show databases;

#选择数据库
use mydb1;

#展示某一个数据库创建信息 
show create database mydb1;

#查看当前正在使用的是哪个数据库
select database();

#删除数据库
drop database mybd1;

#创建一个数据表
create table userinfo(
    # primary key 表示是主键 主键是唯一的且不为空相当于 unique 和not null的效果
    user_id int(255) primary key,
    # unique 表示这个值时唯一的
    user_phone varchar(11) unique not null,
    user_name varchar(16) not null,
    user_age int(200) default 0,
    user_gender int(1) default 0 comment '0女 1男'
);


#展示建表语句
show create table userinfo;

# 插入一行数据
insert into userinfo values(1,'18140371589','谭元超',21,1);
insert into userinfo(user_id,user_phone,user_name) values(2,'18140371588','谭元浩');
-- insert into userinfo(user_phone,user_name) values('18140371587','张三');
-- insert into userinfo(user_phone,user_name) values('18140371586','张三1');
-- insert into userinfo(user_phone,user_name) values('18140371585','张三2');
-- insert into userinfo(user_phone,user_name) values('18140371584','张三3');
-- insert into userinfo(user_phone,user_name) values('18140371583','张三4');

#删除一行数据
delete from userinfo where user_id = 2;

#更新一行数据
update userinfo set user_name = '谭元超1' where user_id = 1;

#查询一行数据
select *from userinfo where user_id = 1;
select *from userinfo;

#查看当前数据库中的所有表
show tables;

#查看数据表的信息
desc userinfo;

#删除一张表
drop table userinfo;

#修改表
#添加一个字段
alter table userinfo add user_addr varchar(100);
#修改某一个字段长度或者约束
alter table userinfo modify user_addr varchar(255);
#修改某一个字段,字段名长度与约束
alter table userinfo change user_addr user_address varchar(200) not null;
#删除某一个字段
alter table userinfo drop user_addr;
#修改表名
rename table userinfo to user_info;

#查询操作
#去重复
select distinct user_age from userinfo;
# 查询表中的指定字段
select user_name,user_phone from userinfo;
# 给每个人的年龄加上10
select user_name,user_age+10 from userinfo;
#将某几个字段相加作为一个新的字段
select user_name,(user_age+user_id) as 新字段 from userinfo;
#定义数据表别名
select a.user_name,a.user_id from userinfo as a;
#查询某个字段在一个列表内,只要值等于括号中的某一个就查出该数据
select *from userinfo where user_age in (10,50,21);
#模糊查询%表示占位多个字符,_表示占位一个字符
select *from userinfo where user_name like '%张%';
select *from userinfo where user_name like '%张';
select *from userinfo where user_name like '张%';
select *from userinfo where user_name like '张_';
select *from userinfo where user_name like '_张';

# 讲查询结果排序
select *from userinfo order by user_age asc;-- 升序(默认值)
select *from userinfo order by user_age desc; -- 降序
select *from userinfo order by user_age desc,user_gender desc; -- 先按照年龄降序排序,年龄相同时按照性别降序排序

#聚合函数
select count(user_name) from userinfo;-- 一共有多少条记录
select sum(user_age) from userinfo;-- 所有记录,某个字段的和值

# 主键 primary key 表示主键 auto_increment表示主键自动递增
create table person(
    id int primary key auto_increment,
    username varchar(20) not null
); 

# 外键约束
#先创建一个部门表
create table dept(
    did int primary key auto_increment,
    dname varchar(30)
);
#再创建一个员工表,其中dno引用了dept表中的did字段
create table emp(
    eid int primary key auto_increment,
    ename varchar(30),
    sal double,
    dno int,
    foreign key(dno) references dept(did)
);
#向部门表中插入数据
insert into dept values(1,'研发部');
insert into dept values(3,'产品部');
insert into dept values(2,'什么部');
#向员工表中插入数据
insert into emp values(1,'张三',20,1);-- 成功 
insert into emp values(2,'李四',20,4);-- 失败,因为部门表中没有id为4的部门

#内连接
# 普通内连接
select *from emp inner join dept on emp.dno = dept.did;
#隐式内连接
select *from emp,dept where emp.dno = dept.did;

#外连接
#左外链接 outer还可以省略不写
select *from emp left outer join dept on emp.dno = dept.did;
select *from dept left outer join emp on emp.dno = dept.did;
select *from dept left join emp on emp.dno = dept.did;
# 右外链接
select *from emp right outer join dept on emp.dno = dept.did;
select *from dept right outer join emp on emp.dno = dept.did;
select *from dept right  join emp on emp.dno = dept.did;




上一篇下一篇

猜你喜欢

热点阅读