#创建数据库
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;
网友评论