数据库操作命令,表操作命令,修改表结构命令,数据操作命令,数据查询操作命令
一、数据库操作命令
1.查看当前mysql的所有数据库
show databases;
2.创建数据库
create database;
3.使用该数据库
use 数据库名;
4.删除数据库
drop database 数据库名;
5.查询当前所在数据库的命令
select database;
二、表的操作命令
1.创建新表命令
create table 表名(
字段名 类型 <约束>,
字段名 类型 <约束>,
......
字段名 类型 <约束>
);
列级约束:
primary key 主键
not null 非空
auto_increment 自增长
enum('男','女') 值只能是男女 其他报错
unique 唯一性约束
default 18 默认值约束
表级约束:在创建表字段的最下面 constraint 约束名 约束类型(字段名)
添加外键:constraint 外键约束名 foreign key(外键的名字) references 外键所在的表格(外键所在的列)
2.查询当前库中所有表名称的命令
show tables;
3.查询当前表结构的命令
desc 表名称;
4.查询表详细结构的命令
show create table 表名称;
或
show full columns from 表名称;
5.删除表的命令
drop table 表名;
drop table if exists 表名称;
if exists是判断是否存在该表,若存在则进行删除,若不存在也不会报错,不是非必须写,但是不写的话,删除一个不存在的表就会有报错。删除表的时候可以一次性删除一个,也可以一次性删除多个表。
当要删除的表有外键时,要先删除外键关联的表。
#Cannot delete or update a parent row: a foreign key constraint fails
#country被外键关联,不能删除,先删除关联country的表
drop table country;
6.更改表结构
6.1向表名中增加列名
alter table 表名 add column 列名 字段类型;//
alter table student add column sex char(1);
更改表student,添加列列名是sex,类型是char(1);
6.2删除表中某一列
alter table 表名 drop column 列名;
alter table student drop column age;
更改表student,删除列,列名是age;
6.3修改表中某个列的字段类型
alter table 表名 modify column 列名 字段类型;//
alter table student modify column sex char(2);
更改表student,修改列,列名是sex,更改类型为char(2)
6.4更改表的名字
alter table 表名rename to 新表名;// to可以省略
alter table student rename to stu;
更改表student,将student表名更改为stu;
6.5更改列名
alter table 表名 change 原有列名 新的列名 新列名字段类型;
alter table stu change name xingming varchar(10);
更改表stu,将列名name改为xingming,字段类型varchar(10)
7.复制表
复制一个表结构的实现方法有两种。
方法一:在create table语句的末尾添加like子句,可以将源表的表结构复制到新表中,没有数据,语法格式如下。主键约束自动增长都有,外键约束没有。
create table 新表名 like 源表
create table emp1 like emp;//根据emp表创建emp1表
方法二:在create table语句的末尾添加一个select语句,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中。下面的语法格式将源表的表结构以及源表的所有记录拷贝到新表中。主键约束,自动增长和外键约束就没有了
create table 新表名 select * from 源表
create table emp2 select * from emp;//根据emp表创建emp2,并且将数据复制
8.修改表约束条件
添加约束条件
向表的某个字段添加约束条件的语法格式如下(其中约束类型可以是唯一性约束、主键约束及外键约束)
alter table 表名add constraint 约束名 约束类型(字段名)
增加主键约束
alter table 表名 add constraint 约束名 primary key(列名);
增加唯一性约束:
alter table 表名 add constraint 约束名 unique (列名);
增加外键约束 foreign key
alter table 表名 add CONSTRAINT 外键约束名 FOREIGN KEY(外键名) REFERENCES 外键所在表(外间所在列名);
三、数据操作命令
1.增加数据命令
插入部分列
insert into 表名(列名1,列名2,列名3.。。。)values (值1,值2,值3.。。。)
插入所有列
insert into 表名values(值1,值2,值3.。。)
每次插入多条记录-----批量插入
insert into 表名[(列名……)] values (第一组值), (第二组值), (第三组值)......;
值:数字,直接写值就可以,
字符串:'值'
空: null
sysdate() #得到系统当前时间
日期date: ‘yyyy-MM-dd’
datetime ‘yyyy-MM-dd HH:mm:ss’
timestamp ‘yyyy-MM-dd HH:mm:ss’
time ‘HH:mm:ss’
如果timestamp 和datetime中插入null, timestamp中插入的还是系统的当前时间。Datetime中插入的是空。
2.删除数据命令
delete from 表名 where 条件
truncate from 表名 where 条件
清除和删除的区别:(面试题)
删除(delete):
可以添加where条件删除指定数据
数据可以恢复,通过回滚rollback;
为保证数据恢复,能够记日志,速度慢
清除(truncate):
不能添加where条件,只能全表删除
数据不可以恢复。
没有记日志功能,速度快
3.修改数据命令
update 表名
set 列名1=值1(, 列名2=值2,.......)
where 条件语句
4.查询where后面的介绍
(1)查询where 等值
where 字段名=值
(2)查询where 比较
where 字段名>值
(> , < , >= , <= , !=)
(3)查询 where in
在in()括号集合里的所有记录
where not in
不在in()括号集合里的所有记录
(4)查询where like模糊查询
like 部分匹配 not like 不匹配
%:可以匹配0个或多个字符
_:可以匹配一个字符
转义:利用“\”转义,这时候\后面的字符转成本来的含义。例如\_
(5)查询where or
只要满足一个条件的记录 等价于||
(6)查询where and
满足所有条件的记录
(7)查询where between and
查询在and左右之间的记录 [左 右] 都是闭区间
(8)order by排序
按照某一个列进行排序,默认asc升序,desc降序
列名可以用select后面列的序号
(9)group by分组查询
语句执行顺序:
Select ….. 5.
From ….. 1.
Where …… 2.
Group by ….. 3.
having …. 4.
Order by …. 6
Limit … 7
(10)limit 0,n
获取前n条数据,用在分页
(11)is null ,is not null
判断是否为空
四.常用的函数
ABS(x):返回x的绝对值;
SQRT(x):返回非负数x的平方根;
PI():返回圆周率;
MOD(x,y)或%:返回x被y除的余数;
CEIL(x)、CEILING(x):返回大于或者等于x的最小整数值;
FLOOR(x):返回小于或者等于x的最大整数值;
ROUND(x,y):返回保留小数点后面y位,四舍五入的整数;
TRUNCATE(x,y):返回被舍弃的小数点后y位的数字x;
RAND():每次产生不同的随机数;
SIGN(x):返回参数的符号;