mysql基础复习

msyql的使用

1.登录数据库
mysql -uroot -p -h ip地址 -P 端口号;
2.展示当前所有的数据库;
show databases;
3.创建数据库
create database testDB;
4.进入/切换到数据库中
use testDB;
5.开始操作数据库表
create table t1(
	num int(4) unsigned zerofill  
);
insert into t1 values(20);
insert into t1 values(-1);
select * from t1;

create table t2(
	money double(4,2) zerofill
);
create table t4(
	sex enum('男','女')
);
6.显示当前数据库中所有的表
show tables;

MySQL数据类型

1.整型
tinyint     //取值范围 -128~127
smallint
mediumint
int [(M)][UNSIGNED][ZEROFILL] //int(4)只能保存4位的整数,
//unsigned 表示无符号数,不能表示负整数了;
//zerofill 用0填充没有的位数
integer
bigint 
2.浮点型
3.日期型
4.字符型
char(4) //定长,没有用满的长度用空格填满
varchar(4) //变长,只会占据实际长度
5.枚举型
6.集合型
create table student(
	id int,
	name varchar(5),
	gender enum("man","wman"),
	time date,
	money double
);

insert into student(gender) value("man");

约束

1.not null 非空约束
2.unique 唯一约束
3.primary key 主键约束,特点:非空唯一
4.foreign key 外键约束
create table student(
	id int primary key,
	name varchar(5) not null,
	phone char(11) unique,
);
desc student; //展示表的约束

数据库表和表的关联关系

一对一:外键放在任意一边
一对多:外键放在多的一边
多对多:需要通过桥表来表示关联关系

mysql自增

create table auto_test(
	id int primary key auto_increment,
	name varchar(20) not null
);

index索引

作用:提高索引效率

 create teable index_test(
 	id int primary key auto_increment,
 	name varchar(20),
 	age int,
 	index name_index(name),
 	key(age)
 );

将来只有通过索引列进行查询才会提高效率

修改表中的相关内容

create table alert_test(
	id int primary key auto_increment,
	name varchar(5),
);
添加列
alert table alert_test
add column phone int unique;
删除列
alter table alter_test drop column name;
修改表名
alter table alert_test rename alter_test;
修改列名/列的数据类型/列的约束
alter table alter_test change phone 
num int(5) not null;
alter table alter_test change name name varchar(5) not null;
展示当前数据库中所有表名
show tables;
删除表的主键约束(不能设置自增长,否则无法删除)
给表添加主键约束
alter table alter_test add primary key (id);

DML

插入语句 insert

语法:

**insert into 表名 values(值1,值2,值3);
insert into 表名(字段1,字段2) values(值1,值2);**

插入数据时,默认按照表声明的字段顺序进行插入。
例如:

insert into test values(1,"tom",20);
insert into test(name,age) values("tom",20);
删除语句 delete

语法:
delete from 表名; //删除表中所有数据,加上where限制删除条件

例:

delete from test;    //删除test表中的所有数据
delete from test where id = 1; //删除表中id为1的记录
修改语句 update

语法:
update 表名 set 字段名=修改的值;
update 表名 set 字段名=修改的值 where 条件;

例:

update test set name="张三";
update test set name="李四" where id = 1;
整理数据库

语法:
optimize table test;

字符操作

1.字符函数

lower():将字符全部小写
upper():将字符全部大写
concat():拼接字符串
substr():截取字符串,第一个参数表示要截取的字符串,第二个参数表示截取的开始位置,下标从1开始,第三个参数表示截取长度,长度超出最大范围,则按最大有效范围为主
length():获取字符串的长度

select "hello WORLD" as msg;
select lower("Hello WORLD") as msg;
select upper("Hello WORLD")as msg;
select substr("hello world",1,3);
//下标从1开始
//从第一个位置开始截取三个长度的字符

查询

distinct 去除重复项
select distinct name from s_emp;

例:查看每个员工的员工id,名字和月薪涨100以后的年薪

select
id,last_name,(salary+100)*12 
from s_emp;
给查询的列起别名 as

例:查看员工的员工id,名字和年薪,年薪列名为annual

select
id,last_name,salary*12 as annual
from s_emp;
两个字段拼接
select
id,first_name || last_name as name
from s_emp;

排序和限制查询

order by(放在最后的关键字)

默认按照升序ASC,降序使用关键字DESC

select
from
order by 列名 ;

例:按照工资的升序来展示员工id和名字

 select
 id,last_name,salary
 from s_emp
 order by salary;

多表查询

例:查询员工名字、部门编号、部门名字

select
last_name,s_dept.id,name
from s_emp,s_dept where dept_id=s_dept.id;

消除笛卡尔积:使用关联来消除
1.等值连接
多表查询时,将表和表之间存在关联关系(外键)的字段做等值连接。
2.外连接
3.自连接
4.不等值连接

例:

select
last_name,e.dept_id,d.name dept_name,r.name region_name
from
s_emp e,s_dept d,s_region r
where
e.dept_id=d.id and d.region_id=r.id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值